设计一个学生考勤表的项目
考勤表需要包括姓名,座号,手机3个数据成员
用顺序表或者单链表实现,利用提供的代码进行修改会额外加分。
完成表的初始化,查找,删除,插入,显示等功能
利用提供的代码要修改数据类型DataType
typedef intDataType; /* 定义ElemType为int类型*/
需要把int类型修改为考勤表或者成绩表的结构struct举例说明,供参考:
typedef struct/x顺序表存储类型+/
charname[20]://姓名intno ;//座号
int mobilephone://手机号
随便找一个现成的链表的程序,把结构体改成你的即可。
参考GPT和自己的思路:对于使用Dev-C++来设计学生考勤系统的问题,我们需要做如下的操作:
创建一个新项目:打开Dev-C++并选择“File” -> “New” -> “Project” -> “Windows Application”,然后点击“OK”。
添加头文件:我们需要在代码中添加头文件#include 和#include 。
定义数据类型:根据题目要求,我们定义一个结构体类型来保存学生考勤数据。
定义链表节点:为了实现链表,我们还需要定义一个节点类型来保存数据和指针。
创建、初始化和显示链表:我们需要编写代码来创建、初始化和显示链表。
插入、查找和删除节点:我们需要编写代码来插入、查找和删除链表中的节点。
下面是一份示例代码,你可以参考下面的代码来完成你的任务。
#include <iostream>
#include <string>
using namespace std;
// 定义一个结构体类型,保存学生考勤数据
struct Student {
string name; // 姓名
int no; // 座号
int mobile; // 手机号
};
// 定义链表节点类型
struct Node {
Student data;
Node* next;
};
// 创建链表并初始化
void createList(Node*& head) {
head = NULL;
}
// 插入节点
void insertNode(Node*& head, const Student& x) {
Node* p = new Node;
p->data = x;
p->next = head;
head = p;
}
// 查找节点
bool findNode(Node* head, const string& name, int& no, int& mobile) {
while (head != NULL) {
if (head->data.name == name) {
no = head->data.no;
mobile = head->data.mobile;
return true;
}
head = head->next;
}
return false;
}
// 删除节点
bool deleteNode(Node*& head, const string& name) {
if (head == NULL) {
return false;
}
if (head->data.name == name) {
Node* p = head;
head = head->next;
delete p;
return true;
}
Node* p = head;
while (p->next != NULL) {
if (p->next->data.name == name) {
Node* q = p->next;
p->next = q->next;
delete q;
return true;
}
p = p->next;
}
return false;
}
// 显示链表中的所有节点
void displayList(Node* head) {
while (head != NULL) {
cout << head->data.name << "\t" << head->data.no << "\t" << head->data.mobile << endl;
head = head->next;
}
}
int main() {
Node* head;
createList(head);
// 添加学生考勤数据
Student s1 = { "张三", 1, 123456 };
Student s2 = { "李四", 2, 234567 };
Student s3 = { "王五", 3, 345678 };
Student s4 = { "赵六", 4, 456789 };
insertNode(head, s1);
insertNode(head, s2);
insertNode(head, s3);
insertNode(head, s4);
// 显示所有学生考勤数据
displayList(head);
// 查找节点并显示相关信息
int no = 0;
int mobile = 0;
if (findNode(head, "李四", no, mobile)) {
cout << "座号:" << no << "\t手机号:" << mobile << endl;
} else {
cout << "查找失败!" << endl;
}
// 删除节点并显示剩余的学生考勤数据
deleteNode(head, "王五");
displayList(head);
return 0;
}