#include #define LEN sizeof(struct student) #define DAT_FILENAME \"Information.txt\" /**********************定义数据结构********************/ struct date { int year; int month; int day; }; struct student { int ID; char Name[8]; int age; char xb; char telephone[15]; char address[40]; struct date birthday; char email[40]; struct student *next; }; 13 /*************************函数原型*********************/ void DispMainMenu(); void DisplayInformation(struct student *head); struct student *FindstudentID(struct student *head,int findID); struct student *FindstudentName(struct student *head,char findname[]); struct student *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 *Delete(struct student *head,int findID); struct student *Add(struct student *head); void Help(); /************************显示主菜单***************************/ void DispMainMenu() { printf(\"*********************************学生信息管******************************\\n\"); printf(\"\\n\"); printf(\"\\\\1--信息录入\\n\"); printf(\"\\n\"); printf(\"\\\\2--信息修改\\n\"); printf(\"\\n\"); printf(\"\\\\3--信息查询\\n\"); printf(\"\\n\"); printf(\"\\\\4--保存数据到文件\\n\"); printf(\"\\n\"); printf(\"\\\\5--打开数据文件\\n\"); 13 理系统 printf(\"\\n\"); printf(\"\\\\6--文件追加\\n\"); printf(\"\\n\"); printf(\"\\\\7--帮助\\n\"); printf(\"\\n\"); printf(\"\\\\0--退出\\n\"); printf(\"\\n\"); printf(\"友情提示:初次使用请先阅读帮助\\n\"); printf(\"*******************************************************************************\\n\"); printf(\"请选择(0-7):\");/*显示主菜单*/ } /************************************* **************************************************/ void Help() { printf(\"\\n\\\欢迎进入帮助系统!\\n\\n\"); printf(\"\1.请按照主菜单提示选择所需执行功能的数字代号!\\n\"); printf(\"\2.所有文件请按照规范输入\\n\"); printf(\"\3.刚开始执行程序时若需要文本文件里的数据,请先进行读取文件信息!\\n\"); printf(\"\4.修改信息以后,请切记需要保存!\\n\"); printf(\"\\n\"); } /***********************显示所有学生信息**********************/ void DisplayInformation(struct student *head) { struct student *p; printf(\"********************************************************************* 帮 助 13 **********\"); printf(\"\\n学号\姓名\年龄\性别\ 电话\\地址\ 出生年月\ email\\n\"); p=(struct student *)malloc(LEN); p=head; if(head!=NULL) while(p!=NULL) { printf(\"%-d\%-s\%-d\\ printf(\"%-c\%-s\%-s\\ printf(\"%-d %d %d\ printf(\"\%-s\\n\ p=p->next; } else printf(\"无数据\\n\"); } /**************************查找指定学号的学生******************************/ struct 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; 13 信息 else } p=p->next; printf(\"无数据\\n\"); return p; } /***************************查找指定姓名的学生信息**********************/ struct student *FindstudentName(struct student *head,char findname[]) { struct student *p; p=(struct student *)malloc(LEN); p=head; if(head!=NULL) return p; } /********************学生信息录入**********************************/ struct student *InformationInput(struct student *head) while(p!=NULL) { } else printf(\"无数据\\n\"); if(strcmp(p->Name,findname)==0) break; p=p->next; 13 { int number,i; struct student *p; p=(struct student *)malloc(LEN); printf(\"\\n请输入本次录入的学生人数:\"); scanf(\"%d\ for(i=0;i printf(\"\\n 您的输入信息是:\\n\"); DisplayInformation(head); return(head); } printf(\"请输入第%d个学生的学号(八个字符以内):\ scanf(\"%d\ printf(\"\\\ 姓名:\\"); scanf(\"%s\ printf(\"\\\ 年龄:\\"); scanf(\"%d\ printf(\"\\\ 性别(男M、女W):\"); scanf(\"%s\ printf(\"\\\ 电话(八位):\\"); scanf(\"%s\ printf(\"\\\ 地址:\\"); scanf(\"%s\ printf(\"\\\ 出生年月:\\"); scanf(\"%d%d%d\ printf(\"\\\email:\\"); scanf(\"%s\ head=Insert(head,p); p=(struct student *)malloc(LEN); 13 /**************************学生信息查询*************************/ void QueryInformation(struct student *head) { char select; int findID; char findname[8]; struct student *p; printf(\"*********************请选择查询方式*************************\\n\"); printf(\"\1--按学号查询;\2--按姓名查询\\n\"); printf(\"************************************************************\\n\"); printf(\"请选择(1-2):\");/*显示菜单信息*/ select=getche(); getch(); switch (select) { case'1': printf(\"\\n 按学号查询\\n 请输入学生的学号:\"); scanf(\"%d\ if((p=FindstudentID(head,findID))!=NULL) /*找到指定学号的学生*/ { printf(\"\\n 查找结果如下:\\n\"); printf(\"\\n学号\姓名\年龄\性别\ 电话\\地址\ 出生年月\ email\\n\"); printf(\"%d\%s\%d\\ printf(\"%c\%s\%s\\ printf(\"%d %d %d\ printf(\"\%s\\n\ } else /*没有找到*/ printf(\"您输入的学号不存在!\\n\"); 13 break; case'2': printf(\"\\n 按姓名查询\\n 请输入学生的姓名:\"); scanf(\"%s\ if((p=FindstudentName(head,findname))!=NULL) /*找到指定姓名的学生*/ { printf(\"\\n 查找结果如下:\\n\"); printf(\"\\n 学号\ 姓名\ 年龄\ 性别\ 电话\ 地址\ 出生年月\ email\\n\"); } } /*********************************修改学生信息***********************/ struct student *EditInformation(struct student *head) { int findID; char select; struct student *p; printf(\"\\n 请输入学生的学号:\"); } printf(\"%d\%s\%d\\ printf(\"%c\%s\%s\\ printf(\"%d %d %d\ printf(\"\%s\\n\ else /*没有找到*/ printf(\"您输入的姓名不存在!\\n\"); break; default: printf(\"选择错误!\\n\"); 13 scanf(\"%d\ if((p=FindstudentID(head,findID))!=NULL) /*找到指定学号的学生*/ { printf(\"*********************请修改方式*************************\\n\"); printf(\"\1--修改信息;\2--删除信息\\n\"); printf(\"************************************************************\\n\"); printf(\"请选择(1-2):\"); select=getche(); getch(); switch (select) { case'1': /*修改信息*/ printf(\"您选择的是修改信息!\\n\"); printf(\"姓 名:%s\\n\ printf(\"原信息:学号:%d\ 年龄:%d\ 性别:%c\\n\ printf(\"\ 电 话 : %s\ 地 址:%s\email:%s\\n\ printf(\"请输入新信息\\n\"); printf(\"学号\\"); scanf(\"%d\ printf(\"姓名:\\"); scanf(\"%s\ printf(\"年龄:\\"); scanf(\"%d\ printf(\"性别(男M、女W):\"); scanf(\"%s\ printf(\"电话:\\"); scanf(\"%s\ printf(\"地址:\\"); scanf(\"%s\ printf(\"出生年月:\\"); 13 } } scanf(\"%d%d%d\ printf(\"email:\\"); scanf(\"%s\ break; case'2': /*删除信息*/ printf(\"您选择的是删除信息!\\n\"); head=Delete(head,findID); break; else /*没有找到学号匹配的记录*/ printf(\"您输入的学号不存在!\\n\"); return (head); } /**************************有序插入***************************************/ struct student *Insert(struct student *head,struct student *p) { struct student *p0,*p1; if(head==NULL) { } if(p->ID p->next=head; head=p; head=p; p->next=NULL; return(head); 13 } return(head); p1=head; while((p->ID>p1->ID)&&(p1->next!=NULL)) { } if(p->ID return(head); } /*******************************保存数据到文件**************************/ void Save(struct student *head) { if(p->ID==p1->ID) else { } p1->next=p; p->next=NULL; ; p->next=p1; p0->next=p; p0=p1; p1=p1->next; 13 FILE *fp; struct student *p; p=head; if((fp=fopen(DAT_FILENAME,\"w+\"))!=NULL) /*以W+的方式打开文件*/ { } else } while(p!=NULL) { } fprintf(fp,\"%d %d %d\\ fprintf(fp,\"%s\\n\ p=p->next; fprintf(fp,\"%s\\ fprintf(fp,\"%s\\ fprintf(fp,\"%d\\ fprintf(fp,\"%c\\ fprintf(fp,\"%d\\ fprintf(fp,\"%s\\ /*将链表的内容写入文件*/ fclose(fp); printf(\"cannot open file\\n\"); 13 /***************************打开数据文件************************/ struct student *Read(struct student *head) { struct student *p; p=(struct student *)malloc(LEN); FILE *fp; if((fp=fopen(DAT_FILENAME,\"r\"))!=NULL) { } else printf(\"cannot open file\\n\"); } fclose(fp); fscanf(fp,\"%s\\ fscanf(fp,\"%d\\ fscanf(fp,\"%s\\ fscanf(fp,\"%s\\ fscanf(fp,\"%d %d %d\\ fscanf(fp,\"%s\\n\ head=Insert(head,p); p=(struct student *)malloc(LEN); fscanf(fp,\"%c\\ /*读取文件中的内容到链表中*/ while(fscanf(fp,\"%d\\ { return head; 13 } /**************************文件内容追加************************/ struct student *Add(struct student *head) { head=Read(head); head=InformationInput(head); return (head); } struct student *Delete(struct student *head,int findID) { struct student *pre,*p; if(head->ID==findID) { } else { pre=head; p=pre->next; while(p!=NULL&&p->ID!=findID) { pre=p; p=p->next; /**************************删除信息****************************/ p=head; head=head->next; 13 } } if(p->ID==findID) pre->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\"); 13 head=InformationInput(head); break; case'2': system(\"cls\"); printf(\"\\n您选择的是信息修改!\\n\"); head=EditInformation(head); break; case'3': system(\"cls\"); printf(\"\\n您选择的是信息查询!\\n\"); QueryInformation(head); break; case'4': system(\"cls\"); printf(\"\\n您选择的是保存数据到文件!\\n\"); Save(head); break; case'5': system(\"cls\"); printf(\"\\n您选择的是打开数据文件!\\n\"); if((head=Read(head))!=NULL) DisplayInformation(head); break; case'6': system(\"cls\"); printf(\"\\n您选择的是文件追加!\\n\"); head=Add(head); break; case'7': system(\"cls\"); printf(\"\\n您选择的是帮助!\\n\"); 13 } Help(); break; default: printf(\"\\n选择错误!请重新选择!\\n\"); printf(\"请选择返回主界面或退出!\\n\"); //选择是否继续 printf(\"主界面:1\退出:2\\"); scanf(\"%d\ while(!(c==1||c==2)) { printf(\"选择错误,请重新选择!\"); printf(\"\\n主界面:1\退出:2\\"); scanf(\"%d\ } if(c==1) system(\"cls\"); else { system(\"cls\"); _beep(300,400); printf(\"\\n\您已安全退出!\\n\"); break; } } } 13 因篇幅问题不能全部显示,请点此查看更多更全内容