1、2.2.1、函数功能:void Menu_1(); /主菜单void Menu_2(); /二级菜单void swap(struct student * phead,struct student * pback); / 链表节点互换void Save(struct student * head); / 写入磁盘void Search(struct student * head); / 查找学生信息void Read(struct student * head); / 显示学生信息void Sort(struct student * head); / 链表节点排序struct student *
2、 Create(); / 学生信息手动录入struct student * Readpoint(); / 磁盘文件写入内存struct student * Modify(struct student * head); / 链表结构体成员修改struct student * Add(struct student * head); / 链表节点插入struct student * Delete(struct student * head); / 链表节点删除2.2.2、函数之间的调用关系:通过switch语句进行指令选择:case 1: 学生信息录入 调用函数 Create( )、Save( )、
3、Menu_1( )、Menu_2( ) case 2: 学生信息浏览调用函数 Readpoint( )、Sort( )、Read( )、Save( )、Menu_1( )、Menu_2( ) case 3: 学生信息查找 调用函数 Search( )、Readpoint( )、Menu_1( )、Menu_2( )case 4: 学生信息修改 调用函数 Modify( )、Readpoint( )、Save( )、Menu_1( )、Menu_2( )case 5: 学生信息增加调用函数 Add( )、 Readpoint( )、Save( )、Menu_1( )、Menu_2( )case
4、6: 学生信息删除调用函数 Delete( ) 、Readpoint( )Save( )、Menu_1( )、Menu_2( )case 0: 返回主菜单调用函数 Menu_1( )第三章、代码(源代码)/* 学生信息管理系统*/#includestdlib.hstring.hstruct student /定义结构体 int num; char name24; char sex5; int Chinese; int Math; int English; struct student * next; /主菜单 /二级菜单 / 链表节点互换 /学生信息手动录入 / 链表结构体成员修改int ma
5、in(void) Menu_1(); return 0;void Menu_1() printf(tttt 学生信息管理系统ttttn);ttt 1: 进入学生信息管理nttt 0: 退出学生信息管理n请您输入指令: scanf(%d,&num); switch(num) case 1:Menu_2(); break; default:printf(-您已退出学生信息管理系统-n break; /*-*/void Menu_2() struct student * head;int num;ttt 欢迎进入n-n 学生信息录入nttt 2: 学生信息浏览nttt 3: 学生信息查找nttt 4
6、: 学生信息修改nttt 5: 学生信息增加nttt 6: 学生信息删除n 返回主菜单n-nscanf(switch(num) head = Create(); Save(head);n /手动录入学生数据 返回二级菜单n case 1:Menu_1(); case 2: default : printf(输入无效,返回二级菜单! Menu_2(); head = Readpoint(); /写入链表,返回头指针 Sort(head);ttt 以学号升序排列n Read(head); / 链表数据写入文件 Search(head); /查找学生信息返回主菜单n返回二级菜单n Modify(he
7、ad); /修改结构体成员并保存到文件 Add(head); /增加学生信息并保存到文件 head = Delete(head); /删除学生信息并保存到文件default :请重新输入n Menu_2();/*-*/struct student * Create() /学生信息手动录入 struct student *head,* p,* q; int n; p = q = (struct student *)malloc(sizeof(struct student);请输入学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成绩:%s,q-name);%d %s %d %d %dq-num
8、,&sex,&Chinese,&Math,&English); n = 0; head =NULL; while (q-num != 0) n = n+1; if (n = 1) head = q; else p-next = q; p = q; q = (struct student *)malloc(sizeof(struct student); scanf(num,q- p-next = NULL;学生信息录入成功! return head;/*-*/struct student * Readpoint() /学生信息写入内存,便于操作 FILE * fp1; if(fp1 = fope
9、n(E:test.txt,rb) = NULL) printf(open file error! exit(0); fscanf(fp1,%s %d %s %d %d %dname,& while( !feof(fp1) fscanf(fp1, fclose(fp1);void Swap(struct student * phead, struct student * pback) /链表元素数据交换 struct student * temp = (struct student *)malloc(sizeof(struct student); strcpy(temp-name,phead-
10、temp-num = phead-num;sex,phead-sex);Chinese = phead-Chinese;Math = phead-Math;English = phead-English; strcpy(phead-name,pback- phead-num= pback-sex,pback-Chinese = pback-Math = pback-English = pback- strcpy(pback-name,temp- pback-num = temp-sex,temp-Chinese = temp-Math = temp-English = temp- free(t
11、emp);void Sort(struct student * head) / 学号排序 struct student * phead = (struct student *)malloc(sizeof(struct student); struct student * pback = (struct student *)malloc(sizeof(struct student); phead = head; while (phead) int Num = phead- pback = phead-next; while(pback) if( Num num) Swap(phead,pback); Num = phead- pback = pback- phead = phead-void Read(struct student * head) /学生信息读取 struct student * p; p = head;学生的姓名 、 学号 、 性别 、语文成绩 、 高等数学成绩 、 英语成绩: while(p != NULL) %s t%dt%s t %d t %d tt %dn,p-name,p-num,p-sex,p-Chinese,p-Math,p- p = p-