学生信息管理系统C语言基于某链表文件资料.docx
- 文档编号:7111757
- 上传时间:2023-01-18
- 格式:DOCX
- 页数:17
- 大小:18.07KB
学生信息管理系统C语言基于某链表文件资料.docx
《学生信息管理系统C语言基于某链表文件资料.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言基于某链表文件资料.docx(17页珍藏版)》请在冰豆网上搜索。
学生信息管理系统学生信息管理系统C语言基于某链表文件资料语言基于某链表文件资料#include#include#include#include#include#defineLENsizeof(structstudent)#defineDAT_FILENAMEInformation.txt/*定义数据结构*/structdateintyear;intmonth;intday;structstudentintID;charName8;intage;charxb;chartelephone15;charaddress40;structdatebirthday;charemail40;structstudent*next;/*函数原型*/voidDispMainMenu();voidDisplayInformation(structstudent*head);structstudent*FindstudentID(structstudent*head,intfindID);structstudent*FindstudentName(structstudent*head,charfindname);structstudent*InformationInput(structstudent*head);voidQueryInformation(structstudent*head);structstudent*EditInformation(structstudent*head);structstudent*Insert(structstudent*head,structstudent*p);voidSave(structstudent*head);structstudent*Read(structstudent*head);structstudent*Delete(structstudent*head,intfindID);structstudent*Add(structstudent*head);voidHelp();/*显示主菜单*/voidDispMainMenu()printf(*学生信息管理系统*n);printf(n);printf(tttt1-信息录入n);printf(n);printf(tttt2-信息修改n);printf(n);printf(tttt3-信息查询n);printf(n);printf(tttt4-保存数据到文件n);printf(n);printf(tttt5-打开数据文件n);printf(n);printf(tttt6-文件追加n);printf(n);printf(tttt7-帮助n);printf(n);printf(tttt0-退出n);printf(n);printf(友情提示:
初次使用请先阅读帮助n);printf(*n);printf(请选择(0-7):
);/*显示主菜单*/*帮助*/voidHelp()printf(nttt欢迎进入帮助系统!
nn);printf(t1.请按照主菜单提示选择所需执行功能的数字代号!
n);printf(t2.所有文件请按照规范输入n);printf(t3.刚开始执行程序时若需要文本文件里的数据,请先进行读取文件信息!
n);printf(t4.修改信息以后,请切记需要保存!
n);printf(n);/*显示所有学生信息*/voidDisplayInformation(structstudent*head)structstudent*p;printf(*);printf(n学号t姓名t年龄t性别t电话tt地址t出生年月temailn);p=(structstudent*)malloc(LEN);p=head;if(head!
=NULL)while(p!
=NULL)printf(%-dt%-st%-dt,p-ID,p-Name,p-age);printf(%-ct%-st%-st,p-xb,p-telephone,p-address);printf(%-d%d%d,p-birthday.year,p-birthday.month,p-birthday.day);printf(t%-sn,p-email);p=p-next;elseprintf(无数据n);/*查找指定学号的学生信息*/structstudent*FindstudentID(structstudent*head,intfindID)structstudent*p;p=(structstudent*)malloc(LEN);p=head;if(head!
=NULL)while(p!
=NULL)if(p-ID=findID)break;p=p-next;elseprintf(无数据n);returnp;/*查找指定姓名的学生信息*/structstudent*FindstudentName(structstudent*head,charfindname)structstudent*p;p=(structstudent*)malloc(LEN);p=head;if(head!
=NULL)while(p!
=NULL)if(strcmp(p-Name,findname)=0)break;p=p-next;elseprintf(无数据n);returnp;/*学生信息录入*/structstudent*InformationInput(structstudent*head)intnumber,i;structstudent*p;p=(structstudent*)malloc(LEN);printf(n请输入本次录入的学生人数:
);scanf(%d,&number);for(i=0;iID);printf(ttt姓名:
t);scanf(%s,p-Name);printf(ttt年龄:
t);scanf(%d,&p-age);printf(ttt性别(男M、女W):
);scanf(%s,&p-xb);printf(ttt电话(八位):
t);scanf(%s,p-telephone);printf(ttt地址:
t);scanf(%s,p-address);printf(ttt出生年月:
t);scanf(%d%d%d,&p-birthday.year,&p-birthday.month,&p-birthday.day);printf(tttemail:
t);scanf(%s,p-email);head=Insert(head,p);p=(structstudent*)malloc(LEN);printf(n您的输入信息是:
n);DisplayInformation(head);return(head);/*学生信息查询*/voidQueryInformation(structstudent*head)charselect;intfindID;charfindname8;structstudent*p;printf(*请选择查询方式*n);printf(t1-按学号查询;t2-按姓名查询n);printf(*n);printf(请选择(1-2):
);/*显示菜单信息*/select=getche();getch();switch(select)case1:
printf(n按学号查询n请输入学生的学号:
);scanf(%d,&findID);if(p=FindstudentID(head,findID)!
=NULL)/*找到指定学号的学生*/printf(n查找结果如下:
n);printf(n学号t姓名t年龄t性别t电话tt地址t出生年月temailn);printf(%dt%st%dt,p-ID,p-Name,p-age);printf(%ct%st%st,p-xb,p-telephone,p-address);printf(%d%d%d,p-birthday.year,p-birthday.month,p-birthday.day);printf(t%sn,p-email);else/*没有找到*/printf(您输入的学号不存在!
n);break;case2:
printf(n按姓名查询n请输入学生的姓名:
);scanf(%s,&findname);if(p=FindstudentName(head,findname)!
=NULL)/*找到指定姓名的学生*/printf(n查找结果如下:
n);printf(n学号t姓名t年龄t性别t电话t地址t出生年月temailn);printf(%dt%st%dt,p-ID,p-Name,p-age);printf(%ct%st%st,p-xb,p-telephone,p-address);printf(%d%d%d,p-birthday.year,p-birthday.month,p-birthday.day);printf(t%sn,p-email);else/*没有找到*/printf(您输入的姓名不存在!
n);break;default:
printf(选择错误!
n);/*修改学生信息*/structstudent*EditInformation(structstudent*head)intfindID;charselect;structstudent*p;printf(n请输入学生的学号:
);scanf(%d,&findID);if(p=FindstudentID(head,findID)!
=NULL)/*找到指定学号的学生*/printf(*请修改方式*n);printf(t1-修改信息;t2-删除信息n);printf(*n);printf(请选择(1-2):
);select=getche();getch();switch(select)case1:
/*修改信息*/printf(您选择的是修改信息!
n);printf(姓名:
%sn,p-Name);printf(原信息:
学号:
%dt年龄:
%dt性别:
%cn,p-ID,p-age,p-xb);printf(t电话:
%st地址:
%stemail:
%sn,p-telephone,p-address,p-email);printf(请输入新信息n);printf(学号t);scanf(%d,&p-ID);printf(姓名:
t);scanf(%s,p-Name);printf(年龄:
t);scanf(%d,&p-age);printf(性别(男M、女W):
);scanf(%s,&p-xb);printf(电话:
t);scanf(%s,p-telephone);printf(地址:
t);scanf(%s,p-address);printf(出生年月:
t);scanf(%d%d%d,&p-birthday.year,&p-birthday.month,&p-birthday.day);printf(email:
t);scanf(%s,p-email);break;case2:
/*删除信息*/printf(您选择的是删除信息!
n);head=Delete(head,findID);break;else/*没有找到学号匹配的记录*/printf(您输入的学号不存在!
n);return(head);/*有序插入*/structstudent*Insert(structstudent*head,structstudent*p)structstudent*p0,*p1;if(head=NULL)head=p;p-next=NULL;return(head);if(p-IDID)p-next=head;head=p;return(head);p1=head;while(p-IDp1-ID)&(p1-next!
=NULL)p0=p1;p1=p1-next;if(p-IDID)p-next=p1;p0-next=p;elseif(p-ID=p1-ID);elsep1-next=p;p-next=NULL;return(head);/*保存数据到文件*/voidSave(structstudent*head)FILE*fp;structstudent*p;p=head;if(fp=fopen(DAT_FILENAME,w+)!
=NULL)/*以W+的方式打开文件*/while(p!
=NULL)fprintf(fp,%dt,p-ID);fprintf(fp,%st,p-Name);fprintf(fp,%dt,p-age);fprintf(fp,%ct,p-xb);fprintf(fp,%st,p-telephone);fprintf(fp,%st,p-address);fprintf(fp,%d%d%dt,p-birthday.year,p-birthday.month,p-birthday.day);fprintf(fp,%sn,p-email);p=p-next;/*将链表的内容写入文件*/fclose(fp);elseprintf(cannotopenfilen);/*打开数据文件*/structstudent*Read(structstudent*head)structstudent*p;p=(structstudent*)malloc(LEN);FILE*fp;if(fp=fopen(DAT_FILENAME,r)!
=NULL)/*读取文件中的内容到链表中*/while(fscanf(fp,%dt,&p-ID)!
=EOF)fscanf(fp,%st,p-Name);fscanf(fp,%dt,&p-age);fscanf(fp,%ct,&p-xb);fscanf(fp,%st,p-telephone);fscanf(fp,%st,p-address);fscanf(fp,%d%d%dt,&p-birthday.year,&p-birthday.month,&p-birthday.day);fscanf(fp,%sn,p-email);head=Insert(head,p);p=(structstudent*)malloc(LEN);fclose(fp);elseprintf(cannotopenfilen);returnhead;/*文件内容追加*/structstudent*Add(structstudent*head)head=Read(head);head=InformationInput(head);return(head);/*删除信息*/structstudent*Delete(structstudent*head,intfindID)structstudent*pre,*p;if(head-ID=findID)p=head;head=head-next;elsepre=head;p=pre-next;while(p!
=NULL&p-ID!
=findID)pre=p;p=p-next;if(p-ID=findID)pre-next=p-next;free(p);return(head);/*主函数*/voidmain()charselect,c;structstudent*head;head=NULL;select=0;while(select!
=0)DispMainMenu();select=getche();getch();switch(select)case0:
printf(n您选择的是退出!
n);_beep(300,400);continue;case1:
system(cls);printf(n您选择的是信息录入!
n);head=InformationInput(head);break;case2:
system(cls);printf(n您选择的是信息修改!
n);head=EditInformation(head);break;case3:
system(cls);printf(n您选择的是信息查询!
n);QueryInformation(head);break;case4:
system(cls);printf(n您选择的是保存数据到文件!
n);Save(head);break;case5:
system(cls);printf(n您选择的是打开数据文件!
n);if(head=Read(head)!
=NULL)DisplayInformation(head);break;case6:
system(cls);printf(n您选择的是文件追加!
n);head=Add(head);break;case7:
system(cls);printf(n您选择的是帮助!
n);Help();break;default:
printf(n选择错误!
请重新选择!
n);printf(请选择返回主界面或退出!
n);/选择是否继续printf(主界面:
1t退出:
2t);scanf(%d,&c);while(!
(c=1|c=2)printf(选择错误,请重新选择!
);printf(n主界面:
1t退出:
2t);scanf(%d,&c);if(c=1)system(cls);elsesystem(cls);_beep(300,400);printf(nt您已安全退出!
n);break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 语言 基于 某链表 文件 资料