学生信息管理系统(C语言基于链表文件)_第1页
学生信息管理系统(C语言基于链表文件)_第2页
学生信息管理系统(C语言基于链表文件)_第3页
学生信息管理系统(C语言基于链表文件)_第4页
学生信息管理系统(C语言基于链表文件)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<windows.h>#include<string.h>#define LEN sizeof(struct student)#define DAT_FILENAME "Information.txt"/*定义数据结构*/struct dateint year;int month;int day;struct studentint ID;char Name8;int age;char xb;cha

2、r telephone15;char address40;struct date birthday;char email40;struct student *next;/*函数原型*/void DispMainMenu();void DisplayInformation(struct student *head);struct student *FindstudentID(struct student *head,int findID);struct student *FindstudentName(struct student *head,char findname);struct stud

3、ent *InformationInput(struct student *head);void QueryInformation(struct student *head);struct student *EditInformation(struct student *head);struct student *Insert(struct student *head,struct student *p);void Save(struct student *head);struct student *Read(struct student *head);struct student *Dele

4、te(struct student *head,int findID);struct student *Add(struct student *head);void Help();/*显示主菜单*/void DispMainMenu()printf("*学生信息管理系统*n");printf("n");printf("tttt1-信息录入n");printf("n");printf("tttt2-信息修改n");printf("n");printf("tttt3-信

5、息查询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&qu

6、ot;);printf("友情提示:初次使用请先阅读帮助n");printf("*n");printf("请选择(0-7):");/*显示主菜单*/*帮助*/void Help()printf("nttt欢迎进入帮助系统!nn"); printf("t1.请按照主菜单提示选择所需执行功能的数字代号!n");printf("t2.所有文件请按照规范输入n");printf("t3.刚开始执行程序时若需要文本文件里的数据,请先进行读取文件信息!n");prin

7、tf("t4.修改信息以后,请切记需要保存!n");printf("n");/*显示所有学生信息*/void DisplayInformation(struct student *head)struct student *p;printf("*");printf("n学号t姓名t年龄t性别t 电话tt地址t 出生年月t emailn");p=(struct student *)malloc(LEN);p=head;if(head!=NULL)while(p!=NULL)printf("%-dt%-st%-

8、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");/*查找指定学号的学生信息*/str

9、uct student *FindstudentID(struct student *head,int findID)struct student *p;p=(struct student *)malloc(LEN);p=head;if(head!=NULL)while(p!=NULL)if(p->ID=findID)break;p=p->next;elseprintf("无数据n");return p;/*查找指定姓名的学生信息*/struct student *FindstudentName(struct student *head,char findnam

10、e)struct student *p;p=(struct student *)malloc(LEN);p=head;if(head!=NULL)while(p!=NULL)if(strcmp(p->Name,findname)=0)break;p=p->next;elseprintf("无数据n");return p;/*学生信息录入*/struct student *InformationInput(struct student *head)int number,i;struct student *p;p=(struct student *)malloc(L

11、EN);printf("n请输入本次录入的学生人数:");scanf("%d",&number);for(i=0;i<number;i+)/*输入 number 个学生的信息*/printf("请输入第%d个学生的学号(八个字符以内):",i+1);scanf("%d",&p->ID);printf("ttt 姓名:t");scanf("%s",p->Name);printf("ttt 年龄:t");scanf("

12、;%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->

13、birthday.year,&p->birthday.month,&p->birthday.day);printf("tttemail:t");scanf("%s",p->email);head=Insert(head,p);p=(struct student *)malloc(LEN);printf("n 您的输入信息是:n");DisplayInformation(head);return(head);/*学生信息查询*/void QueryInformation(struct student *

14、head)char select;int findID;char findname8;struct student *p;printf("*请选择查询方式*n");printf("t1-按学号查询;t2-按姓名查询n");printf("*n");printf("请选择(1-2):");/*显示菜单信息*/select=getche();getch();switch (select)case'1':printf("n 按学号查询n 请输入学生的学号:");scanf("

15、%d",&findID);if(p=FindstudentID(head,findID)!=NULL) /*找到指定学号的学生*/printf("n 查找结果如下:n");printf("n学号t姓名t年龄t性别t 电话tt地址t 出生年月t emailn");printf("%dt%st%dt",p->ID,p->Name,p->age);printf("%ct%st%st",p->xb,p->telephone,p->address);printf(&quo

16、t;%d %d %d",p->birthday.year,p->birthday.month,p->birthday.day);printf("t%sn",p->email);else /*没有找到*/printf("您输入的学号不存在!n");break;case'2':printf("n 按姓名查询n 请输入学生的姓名:");scanf("%s",&findname);if(p=FindstudentName(head,findname)!=NULL)

17、/*找到指定姓名的学生*/printf("n 查找结果如下:n");printf("n 学号t 姓名t 年龄t 性别t 电话t 地址t 出生年月t emailn");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

18、,p->birthday.day);printf("t%sn",p->email);else /*没有找到*/printf("您输入的姓名不存在!n");break;default:printf("选择错误!n");/*修改学生信息*/struct student *EditInformation(struct student *head)int findID;char select;struct student *p;printf("n 请输入学生的学号:");scanf("%d"

19、,&findID);if(p=FindstudentID(head,findID)!=NULL) /*找到指定学号的学生*/printf("*请修改方式*n");printf("t1-修改信息;t2-删除信息n");printf("*n");printf("请选择(1-2):");select=getche();getch();switch (select)case'1': /*修改信息*/printf("您选择的是修改信息!n");printf("姓 名:%s

20、n",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(&

21、quot;%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&q

22、uot;);scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);printf("email:t");scanf("%s",p->email);break;case'2': /*删除信息*/printf("您选择的是删除信息!n");head=Delete(head,findID);break;else /*没有找到学号匹配的记录*/printf("您输入的

23、学号不存在!n");return (head);/*有序插入*/struct student *Insert(struct student *head,struct student *p)struct student *p0,*p1;if(head=NULL)head=p;p->next=NULL;return(head);if(p->ID<head->ID)p->next=head;head=p;return(head);p1=head;while(p->ID>p1->ID)&&(p1->next!=NULL)p

24、0=p1;p1=p1->next;if(p->ID<p1->ID)p->next=p1;p0->next=p;elseif(p->ID=p1->ID);elsep1->next=p;p->next=NULL;return(head);/*保存数据到文件*/void Save(struct student *head)FILE *fp;struct student *p;p=head;if(fp=fopen(DAT_FILENAME,"w+")!=NULL) /*以W+的方式打开文件*/while(p!=NULL)f

25、printf(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->birth

26、day.month,p->birthday.day);fprintf(fp,"%sn",p->email);p=p->next; /*将链表的内容写入文件*/fclose(fp);elseprintf("cannot open filen");/*打开数据文件*/struct student *Read(struct student *head)struct student *p;p=(struct student *)malloc(LEN);FILE *fp;if(fp=fopen(DAT_FILENAME,"r"

27、)!=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

28、%d %dt",&p->birthday.year,&p->birthday.month,&p->birthday.day);fscanf(fp,"%sn",p->email);head=Insert(head,p);p=(struct student *)malloc(LEN);fclose(fp);elseprintf("cannot open filen");return head;/*文件内容追加*/struct student *Add(struct student *head)head

29、=Read(head);head=InformationInput(head);return (head);/*删除信息*/struct student *Delete(struct student *head,int findID)struct student *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-&

30、gt;next=p->next;free(p);return (head);/*主函数*/void main()char select,c;struct student *head;head=NULL;select=0;while(select!='0')DispMainMenu();select=getche();getch();switch(select)case'0':printf("n您选择的是退出!n");_beep(300,400);continue;case'1':system("cls");printf("n您选择的是信息录入!n");head=Informatio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论