




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计学生信息管理系统姓名洪伟生院系计算机学院日期 2015年7月5日教育资料目录第一章 设计要求 ?第二章算法分析1. 理论依据?2. 主要实现方法?2.1 整体流程图 ?2.2 函数功能和函数之间的调用关系?第三章代码(源代码)?第四章 分析说明?第五章 总结?第一章、设计要求1、利用所学的知识、理论和实际结合,利用资源,采用模块化的结构,使用模仿修 改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;2、 通过C语言各个函数功能来实现对学生信息的管理,学生信息包括学生姓名,学号,各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、修改、删除等功能。第二章、算法分
2、析1、程序理论依据通过C语言的程序设计基础的掌握,对学生成绩管理系统进行编写程序。首先,通过链表 这一数据结构来对学生的信息进行录入以及操作,在其过程中,通过各个功能语句以及选择结构,循环结构等方式的结合来达到所要实现的程序功能。最后通过对C语言中对文件的操作,对已有学生成绩的读取和新建学生成绩的录入保存。教育资料2、主要实现方法2.1整体流程图学生信息管理系统进入退出学 生 信 息 录 入学 生 信 息 浏 览学 生 信 息 查 找学 生 信 息 修 改2.2、函数功能和函数之间的调用关系2.2.1、函数功能:void Men u_1();/void Men u_2();/void swap
3、(structstudent * phead,struct表节点互换void Save(struct stude nt * head);盘void Search(struct stude nt * head);生信息void Read(struct stude nt * head);生信息void Sort(struct stude nt * head);点排序structstude nt*Create();录入structstude nt*Readpo in t();内存struct stude nt * Modify(struct stude nt * head);体成员修改struct
4、stude nt * Add(struct stude nt * head);点插入struct stude nt * Delete(struct stude nt * head);点删除主菜单 二级菜单stude nt * pback);/链/写入磁/查找学/显示学/链表节/学生信息手动/磁盘文件写入/链表结构/链表节/链表节教育资料222、函数之间的调用关系: 通过switch语句进行指令选择:第三章、代码(源代码)学生信息管理系统/定义结构体case 1: 学生信息录入调用函数Create( )、Save( )、Menu_1( )、Menu_2()case 2:学生信息浏览调用函数Rea
5、dpoint() 、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 6:学生信息删除调用函数Delete( )、Readpoint( )Save( )、Menu_1( )、Menu
6、_2()case 0:返回主菜单调用函数Menu_1()/*/#in clude#in clude#in cludevstri ng.h struct stude ntint num;char n ame24;char sex5;int Chin ese;int Math;int En glish;struct stude nt * n ext;教育资料;void Men u_1(); void Men u_2();/主菜单二级菜单void swap(struct stude nt * phead,struct stude nt * pback); /节点互换void Save(struct
7、stude nt * head); 磁盘/void Search(struct stude nt * head); 学生信息/void Read(struct stude nt * head); 学生信息/void Sort(struct stude nt * head); 节点排序/struct stude nt * Readpo in t(); 文件写入内存/struct stude nt * Create();/学生信息手动录入struct stude nt * Modify(struct stude nt * head); 结构体成员修改/struct stude nt * Add(s
8、truct stude nt * head); 节点插入/struct stude nt * Delete(struct stude nt * head); 节点删除/链表写入 查找 显示 链表磁盘链表 链表 链表int mai n(void)Men u_1();return 0;void Menu_1()int num;prin tf(tttt学生信息管理系统ttttn);prin tf(ttt 1:进入学生信息管理n);/主菜单prin tf(ttt 0:退出学生信息管理n);printf(请您输入指令:);sca nf(%d,&nu m);switch( num) case 1:Me n
9、u_2();break;教育资料n);您已退出default:pri ntf(学生信息管理系统break;/*/void Men u_2()struct stude nt * head; int num;prin tf(ttt欢迎进入n);printf(n);prin tf(ttt 1:学生信息录入n);prin tf(ttt 2:学生信息浏览n);prin tf(ttt 3:学生信息查找n);prin tf(ttt 4:/二级菜单学生信息修改n);prin tf(ttt 5:学生信息增加n);prin tf(ttt 6:学生信息删除n);prin tf(ttt 0:返回主菜单n);print
10、f(n);printf(请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:head = Create();Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);/手动录入学生数据printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();教育资料break;default :prin tf(输入无效,返回二级菜单Men u_2(); break;
11、break;case 2: head = Readpo in t();/写入链表,返回头指针Sort(head);printf(ttt以学号升序排列n);Read(head);/链表数据写入文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :prin tf(输入无效,返回二级菜单Men u_
12、2(); break;break;case 3:head = Readpo in t();Search(head);/查找学生信息!n);!n);教育资料prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :prin tf(输入无效,返回二级菜单Men u_2(); break;break;case 4:head =
13、Readpo in t();Modify(head);修改结构体成员并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :prin tf(输入无效,返回二级菜单Men u_2();break;!n);!n);教育资料/break;case 5:/增加学生信head = Readpo i
14、n t();Add(head);息并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf( 请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Men u_2();break;break;case 6:head = Readpo in t();head = Delete(head);/删除学生信
15、息并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf( 请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;教育资料 case 2:Me nu_2(); break;default :printf(输入无效,返回二级菜单 !n);Men u_2(); break;break;case 0: Men u_1();break;default :printf(请重新输入n);Men u_2();brea
16、k;/*-*/struct stude nt * Create()/学生信息手动录入struct stude nt *head,* p,* q;int n;p = q = (struct stude nt *)malloc(sizeof(struct stude nt);prin tf(请输入学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成绩:n);sca nf(%s,q-n ame);sca nf(%d %s %d %d %d, &q- num,& q-sex, &q-Chi nese, &q-Math, &q-E nglish);n = 0;head =NULL;while (q-
17、num != 0)n = n+1;if (n = 1)head = q;else教育资料p-n ext = q;p = q;q = (struct stude nt *)malloc(sizeof(struct stude nt);sea nf(%s,q-n ame);sca nf(%d %s %d %d %d, &q- num,q-sex,&q-Chi nese, &q-Math, &q-En glish);p- next = NULL;printf( 学生信息录入成功!n); return head;/*-*/struct stude nt * Readpo in t()/学生信息写入内存
18、,便于操作FILE * fp1;struct stude nt *head,* p,* q;int n;if(fp1 = fope n(E:test.txt,rb) = NULL)prin tf(ope n file error! n);exit(0);p = q = (struct stude nt *)malloc(sizeof(struct stude nt);fsca nf(fp1,%s %d %s %d %d %d,q- name, &q- num,q-sex, &q-Chi nese , &q-Math, &q-En glish);n = 0;head =NULL;while( !
19、feof(fp1)n = n+1;if (n = 1) head = q;elsep-n ext = q;p = q;教育资料q = (struct stude nt *)malloc(sizeof(struct stude nt);fsca nf(fp1,%s %d %s %d %d %d, &q- name, &q- num, &q-sex, &q- Chi ne se, &q-Math, &q-E nglish);p- next = NULL;fclose(fp1); retur n head;/*-*/ void Swap(struct stude nt * phead, struct
20、 stude nt * pback)/链表元素数据交换struct stude nt * temp = (struct stude nt *)malloc(sizeof(struct stude nt);strcpy(temp-n ame,phead-n ame);temp-num = phead-num;strcpy(temp-sex,phead-sex);temp-Ch in ese = phead-Ch in ese;temp-Math = phead-Math; temp-En glish = phead-E nglish;strcpy(phead-n ame,pback-n ame)
21、; phead-num= pback- num; strcpy(phead-sex,pback-sex); phead-Ch in ese = pback-Ch in ese; phead-Math = pback-Math; phead-E nglish = pback-E nglish;strcpy(pback- n ame,temp-n ame); pback-num = temp-num; strcpy(pback-sex,temp-sex); pback-Chi nese = temp-Chi nese; pback-Math = temp-Math; pback-E nglish
22、= temp-E nglish;free(temp);教育资料/*-*/void Sort(struct stude nt * head)/struct stude nt * phead = (struct stude nt *)malloc(sizeof(struct stude nt);struct stude nt * pback = (struct stude nt *)malloc(sizeof(struct stude nt);phead = head;while (phead)int Num = phead-num;pback = phead-n ext;while(pback)
23、if( Num pback-num)Swap(phead,pback);Num = phead-num;pback = pback-next;phead = phead-next;/*-*/void Read(struct stude nt * head)/生信息读取struct stude nt * p;p = head;printf(n);printf(学生的姓名、学号、性别、语文成绩、高等数学成绩 绩:n);while(p != NULL)printf( %s t%dt%s t %d t %dtt %dn,p-n ame,p-nu m,p-sex,p-Chi nese,p-Math,p-
24、E nglish);学号排序英语成p = p-n ex t;教育资料 prin tf(n);/*-*/void Save(struct stude nt * head)/生信息保存到文件struct stude nt * p;FILE * fp;if(fp = fope n( E:test.txt,wb) = NULL)prin tf(ope n file error! n);exit(0);p = head; while(p 匸NULL)fpri ntf(fp,%s %d %s %d %d %d,p-n ame,p-nu m,p-sex,p- Chi nese,p -Math,p-E ngl
25、ish);fprin tf(fp,%s,rn);p = p-n ex t;fclose(fp);/*-*/void Search(struct stude nt * head)/学生信息查找int n;struct stude nt * p;char n ame24;int num;char sex5;int Chin ese;教育资料 int Math; int En glish;printf(您想以何种方式进行查找:n);prin tf(1;姓名n);prin tf(2:学号n);prin tf(3:性别n);prin tf(4:语文成绩n);prin tf(5:数学成绩n);prin t
26、f(6:英语成绩n);prin tf(0:返回二级菜单n);sea nf(%d,&n);switch( n)case 1:printf(请输入姓名:);/按姓名查找sca nf(%s, name);p = head;while(strcmp( name,p-n ame)!=0 & p-n ext != NULL) p = p-n ext;if(strcmp( name,p-n ame)=0)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查无此人!n);brea
27、k;case 2:printf(请输入学号:);/按学号查找sca nf(%d,&nu m);p = head;while( num != p-num & p-n ext != NULL)p = p-n ext;if(num = p-num)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查无此人!n);break;教育资料case 3: printf(请输入性别:);找sca nf(%s,sex);p = head;while(p!= NULL)if(strc
28、mp(sex,p-sex)=0)/按性别查prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p = p-n ext;break;case 4:printf(请输入语文成绩:);/绩查找sca nf(%d,&Chi nese);p = head;while(p!= NULL)if(Chi nese = p-Ch in ese)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p
29、= p-n ext;break;case 5:prin tf(请输入高等数学成绩:);/学成绩查找sca nf(%d,&Math);p = head;while(p!= NULL)if(Math = p-Math)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p = p-n ext;按语文成按高等数教育资料 break;case 6:printf(请输入英语成绩:);/按英语成绩查找sca nf(%d,&En glish);p = head;while(p!= NULL)if(E
30、nglish = p-E nglish)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p = p-n ext;break;default:printf(指令错误返回二级菜单!n);Men u_2();break;/*-*/struct stude nt * Modify(struct stude nt * head) int n;struct stude nt * p;char n ame24;int num;prin tf(您想以何种方式进行修改:n);prin tf(1;姓名
31、n);prin tf(2:学号 n);printf(0:返回二级菜单n);sca nf(%d,&n);switch( n)case 1:按姓名查找后printf(请输入姓名:);/修改信息教育资料 sea nf(%s, name);p = head;while(strcmp( name,p-n ame)!=0 & p-n ext != NULL)p = p-n ex t;if(strcmp( name,p-n ame)=0)sca nf(%s %d %s %d %d %d,p- name,&p- num,p-sex,&p-Chi nese,&p-Math,&p-E nglish);prin t
32、f(修改后:n);prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查无此人!n);break;case 2:printf(请输入学号:);/按学号查找后修改信息sca nf(%d,&nu m);p = head;while( num != p-num & p-n ext != NULL)p = p-n ex t;if(num = p-num)sca nf(%s %d %s %d %d %d,p- name,&p- num,p-sex,&p-Chi nese,&p
33、-Math,&p-E nglish);prin tf(修改后:n);prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查无此人!n);break;default:printf(指令错误,返回二级菜单!n);Men u_2();break;return head;struct student * Add(struct student * head)/增加学生信息教育资料struct stude nt * p,* q;/为增加的学生分配内存struct stude n
34、t * add = (struct stude nt *)malloc(sizeof(struct stude nt );sca nf(%s %d %s %d %d %d,add- name, &add- num,add-sex, &add- Chi n ese,&add-Math, &add-E nglish);q = head;if(head = NULL)head = add;/add- next = NULL;else while(add- num q- num) & (q- next != NULL)占八、p = q;q = q-n ex t;if(add-num num)if (head = q)head =add;elsep-n ext = add;/add-n ext = q;elseq-n ext = add;/add- next = NULL;空表插入/指向下个节/插到首节点插到中间节点插到尾节点return head;删除学生信struct stude nt * Delete(struct stude nt * head)/息 int n;struct s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度O2O社区养老合同范本关注老年生活品质
- 二零二五年度货物中转运输与物流信息平台合作协议
- 湖北协作体联考数学试卷
- 二零二五年度驾校与残疾人驾驶培训中心合作开展特殊学员培训合同
- 二零二五年度离婚协议书:婚姻解除后的财产分配及子女抚养协议示范
- 2025版借款合同连带担保人责任明确协议书
- 二零二五年度房地产信托与并购重组合同
- 二零二五年度医药研发项目合作协议范本
- 2025版绿色环保型钢结构安装合同安全协议书
- 2025年度文化旅游设施建设项目施工合同
- 学位英语4000词(开放大学)
- 急性经口毒性试验 上下增减剂量法
- 植物拓染非物质文化遗产传承拓花草之印染自然之美课件
- 2024年湖北联投城市运营有限公司招聘笔试冲刺题(带答案解析)
- (高清版)JTGT 3331-07-2024 公路膨胀土路基设计与施工技术规范
- 2024国家能源集团社会招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- GB/T 19247.6-2024印制板组装第6部分:球栅阵列(BGA)和盘栅阵列(LGA)焊点空洞的评估要求及测试方法
- 基于项目式学习的中考英语大单元复习设计探究
- 护士急救知识培训课件
- 绿色高油酸花生种植技术规程(征求意见稿)-编制说明
- 死胎患者护理查房
评论
0/150
提交评论