#include #include #include #include //定义一个学生 typedef struct { char num[12]; // 学号 char name[20]; // 姓名 char sex[4]; // 性别 int age; // 年龄 char birth[20]; // 生日 char home[100]; // 住址 char tel[15]; // 电话 }student; //节点 typedef struct Node { student stu;//学生信息 struct Node* pnext;//指向下一个节点的指针 }node; node* phead=NULL; //头节点(空链表) //录入学生信息 void Inputstudent(); //打印学生信息 void Printstudent(); //保存学生信息 void Savestudent(); //查找学生信息 void Lookstudent(); //修改学生信息 void Modifystudent(); //读取学生信息 void Readstudent(); //删除学生信息 void Deletestudent(); int count=0; int main() { while(1) { system("color 2A"); printf("\t\t\t*****************************************************************\n"); printf("\t\t\t|\t\t欢迎使用湖南工业大学学生信息管理系统\t\t|\n"); printf("\t\t\t*****************************************************************\n"); printf("\t\t\t|\t\t\t请选择功能列表\t\t\t\t|\n"); printf("\t\t\t|***************************************************************|\n"); printf("\t\t\t|\t\t\t1.录入学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t2.打印学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t3.保存学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t4.读取学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t5.查找学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t6.修改学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t7.删除学生信息\t\t\t\t|\n"); printf("\t\t\t|\t\t\t0.退出系统\t\t\t\t|\n"); printf("\t\t\t*****************************************************************\n"); printf("请输入:\n\n"); char ch=getch();//从键盘输入一个字符 switch(ch) { case '1'://录入学生信息 Inputstudent(); break; case '2'://打印学生信息 Printstudent(); break; case '3'://保存学生信息 Savestudent(); break; case '4'://读取学生信息 Readstudent(); break; case '5'://查找学生信息 Lookstudent(); break; case '6'://修改学生信息 Modifystudent(); break; case '7'://删除学生信息 Deletestudent(); break; case '0'://退出系统 printf("ByeBye 欢迎再次使用!\n\n"); break; default: printf("您输入有误,请重新输入!\n\n"); break; } system("pause"); system("cls"); } return 0; } //录入学生信息 void Inputstudent() { system("cls"); system("color 6F"); //创建一个节点来存储新的学生 node* pnewnode=(node*)malloc(sizeof(node)); pnewnode->pnext=NULL; //要将新节点插入到链表中 if(phead==NULL) { phead=pnewnode; } else { pnewnode->pnext=phead; phead=pnewnode; } printf("\n"); printf("请输入学生学号:\n"); scanf("%s",pnewnode->stu.num); printf("请输入学生姓名:\n"); scanf("%s",pnewnode->stu.name); printf("请输入学生性别:\n"); scanf("%s",pnewnode->stu.sex); printf("请输入学生年龄:\n"); scanf("%d",&pnewnode->stu.age); printf("请输入学生生日:\n"); scanf("%s",pnewnode->stu.birth); printf("请输入学生住址:\n"); scanf("%s",pnewnode->stu.home); printf("请输入学生电话:\n"); scanf("%s",pnewnode->stu.tel); printf("\n录入学生信息成功!\n\n"); } //打印学生信息 void Printstudent() { system("cls"); system("color 1A"); printf("\t\t*****************************************************************************************\n"); printf("\t\t|\t\t\t欢迎使用湖南工业大学学生信息管理系统\t\t\t\t|\n"); printf("\t\t*****************************************************************************************\n"); printf("\t\t|学号\t|姓名\t|性别\t|年龄\t|生日\t|家庭住址\t\t|本人电话\t\t|\n"); //遍历链表 node* p=phead;//定义一个当前节点 while(p!=NULL) { printf("\t\t|---------------------------------------------------------------------------------------|\n"); printf("\t\t|%s\t|%s\t|%s\t|%d\t|%s\t|%s\t\t|%s\t\t|\n",p->stu.num,p->stu.name,p->stu.sex,p->stu.age,p->stu.birth,p->stu.home,p->stu.tel); p=p->pnext; count++; } printf("\t\t*****************************************************************************************\n"); printf("\t\t当前总人数: %d\t\t\t\n",count); } //保存学生信息 void Savestudent() { system("cls"); system("color 1B"); FILE *fp; fp=fopen("stu.dat","w"); //打开文件 if(fp==NULL) { printf("打开文件失败!\n\n"); return; } //写入数据 node* p=phead;//当前节点 while(p!=NULL) { fwrite(&p->stu,sizeof(student),1,fp); p=p->pnext; } printf("\n\n数据存入成功!\n\n"); fclose(fp); } //查找学生信息 void Lookstudent() { system("cls"); system("color 1B"); char name[20]; char num[12]; node* p=phead;//定义一个当前节点 system("cls"); system("color 2F"); printf("\t\t*****************************************************************************************\n"); printf("\t\t|\t\t\t欢迎使用湖南工业大学学生信息管理系统\t\t\t\t|\n"); printf("\t\t*****************************************************************************************\n"); printf("\t\t|\t\t\t\t请选择查找方式\t\t\t\t\t\t|\n"); printf("\t\t|***************************************************************************************|\n"); printf("\t\t|\t\t\t\t1.按姓名查找\t\t\t\t\t\t|\n"); printf("\t\t|\t\t\t\t2.按学号查找\t\t\t\t\t\t|\n"); printf("\t\t|\t\t\t\t0.退出查找系统\t\t\t\t\t\t|\n"); printf("\t\t*****************************************************************************************\n"); printf("请输入查找的方式:\n\n"); char ch=getch();//从键盘输入一个字符 switch(ch) { case '1':// 按姓名查找 printf("请输入学生姓名:\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->stu.name,name)==0) { printf("\t\t*****************************************************************************************\n"); printf("\t\t|学号\t|姓名\t|性别\t|年龄\t|生日\t|家庭住址\t\t|本人电话\t\t|\n"); printf("\t\t|---------------------------------------------------------------------------------------|\n"); printf("\t\t|%s\t|%s\t|%s\t|%d\t|%s\t|%s\t\t|%s\t\t|\n",p->stu.num,p->stu.name,p->stu.sex,p->stu.age,p->stu.birth,p->stu.home,p->stu.tel); printf("\t\t*****************************************************************************************\n"); } p=p->pnext; } break; case '2'://按学号查找 printf("请输入学生学号:\n"); scanf("%s",num); while(p!=NULL) { if(strcmp(p->stu.num,num)==0) { printf("\t\t*****************************************************************************************\n"); printf("\t\t|学号\t|姓名\t|性别\t|年龄\t|生日\t|家庭住址\t\t|本人电话\t\t|\n"); printf("\t\t|---------------------------------------------------------------------------------------|\n"); printf("\t\t|%s\t|%s\t|%s\t|%d\t|%s\t|%s\t\t|%s\t\t|\n",p->stu.num,p->stu.name,p->stu.sex,p->stu.age,p->stu.birth,p->stu.home,p->stu.tel); printf("\t\t*****************************************************************************************\n"); } p=p->pnext; } break; case '0'://退出系统 printf("ByeBye 欢迎再次使用!\n\n"); break; default: printf("您输入有误,请重新输入!\n\n"); break; } if(count==0) { printf("没有您要查找的学生信息!\n\n"); } } //修改学生信息 void Modifystudent() { system("cls"); system("color 1B"); char name[20]; node* p=phead;//定义一个当前节点 printf("\n\n请输入要修改的学生姓名:\n\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->stu.name,name)==0) { printf("\t\t*****************************************************************************************\n"); printf("\t\t|学号\t|姓名\t|性别\t|年龄\t|生日\t|家庭住址\t\t|本人电话\t\t|\n"); printf("\t\t|---------------------------------------------------------------------------------------|\n"); printf("\t\t|%s\t|%s\t|%s\t|%d\t|%s\t|%s\t\t|%s\t\t|\n",p->stu.num,p->stu.name,p->stu.sex,p->stu.age,p->stu.birth,p->stu.home,p->stu.tel); printf("\t\t*****************************************************************************************\n"); printf("请修改学生信息!\n\n"); printf("请输入学生学号:\n"); scanf("%s",p->stu.num); printf("请输入学生姓名:\n"); scanf("%s",p->stu.name); printf("请输入学生性别:\n"); scanf("%s",p->stu.sex); printf("请输入学生年龄:\n"); scanf("%d",&p->stu.age); printf("请输入学生生日:\n"); scanf("%s",p->stu.birth); printf("请输入学生住址:\n"); scanf("%s",p->stu.home); printf("请输入学生电话:\n"); scanf("%s",p->stu.tel); printf("\n修改学生信息成功!\n\n"); system("pause"); system("cls"); printf("\t\t*****************************************************************************************\n"); printf("\t\t|学号\t|姓名\t|性别\t|年龄\t|生日\t|家庭住址\t\t|本人电话\t\t|\n"); printf("\t\t*****************************************************************************************\n"); printf("\t\t|---------------------------------------------------------------------------------------|\n"); printf("\t\t|%s\t|%s\t|%s\t|%d\t|%s\t|%s\t\t|%s\t\t|\n",p->stu.num,p->stu.name,p->stu.sex,p->stu.age,p->stu.birth,p->stu.home,p->stu.tel); printf("\t\t*****************************************************************************************\n"); } p=p->pnext; } if(count==0) { printf("没有您要修改的学生信息!\n\n"); } } //读取学生信息 void Readstudent() { system("cls"); system("color 0F"); FILE *fp; fp=fopen("stu.dat","r"); if(fp==NULL) { printf("打开文件失败!\n\n"); return; } //读取数据 node* p=phead;//当前节点 while(p!=NULL) { fread(&p->stu,sizeof(student),1,fp); p=p->pnext; } printf("\n\n数据读取完毕!!!\n\n"); fclose(fp); } //删除学生信息 void Deletestudent() { system("cls"); system("color 6A"); char name[20]; node* p=phead;//定义一个当前节点 printf("\n\n请输入要删除的学生姓名:\n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->stu.name,name)==0) { p=p->pnext; printf("删除学生信息成功!\n\n"); } p=p->pnext; } if(count==0) { printf("没有您要删除的学生信息!\n\n"); } }