学生信息管理系统设计报告_第1页
学生信息管理系统设计报告_第2页
学生信息管理系统设计报告_第3页
学生信息管理系统设计报告_第4页
学生信息管理系统设计报告_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、C 语言课程设计学生信息管理系统目录 第一章 设计要求 第二章 算法分析1. 理论依据2. 主要实现方法教育资料2.1 整体流程图2.2 函数功能和函数之间的调用关系 第三章 代码(源代码) 第四章 分析说明 第五章 总结第一章、 设计要求1、利用所学的知识、理论和实际结合,利用资源,采用模块化的结构,使用模仿修改 自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;2、通过 C 语言各个函数功能来实现对学生信息的管理, 学生信息包括学生姓名, 学号, 各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、修改、删除等功能。第二章、 算法分析1、程序理论依据通过 C 语言的程序设

2、计基础的掌握,对学生成绩管理系统进行编写程序。首先,通过链表 这一数据结构来对学生的信息进行录入以及操作, 在其过程中, 通过各个功能语句以及选择 结构,循环结构等方式的结合来达到所要实现的程序功能。最后通过对 C 语言中对文件的 操作,对已有学生成绩的读取和新建学生成绩的录入保存。2、主要实现方法2.1 整体流程图学生信息管理系统教育资料2.2、函数功能和函数之间的调用关系2.2.1、函数功能:void Menu_1();void Menu_2();/ 主菜单/ 二级菜单void swap(struct student * phead,struct student * pback);/ 链表

3、节点互换void Save(struct student * head); void Search(struct student * head); 息void Read(struct student * head);/ 写入磁盘/ 查找学生信/ 显示学生信void Sort(struct student * head);/ 链表节点排教育资料/ 学生信息手动录入/ 磁盘文件写入内存struct student * Modify(struct student * head);/链表结构体成员struct student * Create();struct student * Readpoint(

4、);修改struct student * Add(struct student * head);/链表节点插入struct student * Delete(struct student * head);/链表节点删除2.2.2、函数之间的调用关系:通过 switch 语句进行指令选择:case 1: 学生信息录入调用函数 Create( ) 、 Save( )、Menu_1( ) 、 Menu_2( )case 2: 学生信息浏览调用函数 Readpoint( ) 、Sort( ) 、Read( ) 、 Save( )、 Menu_1( ) 、Menu_2( ) case 3: 学生信息查找

5、调用函数 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_2( ) case 0: 返回主菜单调用函数 Menu_1( )

6、第三章、 代码(源代码)/*学生信息管理系统*/#include#include#includestruct student / 定义结构体 int num;char name24;char sex5;教育资料int Chinese;int Math;int English;struct student * next;void Menu_1();void Menu_2();/ 主菜单/ 二级菜单void swap(struct student * phead,struct student * pback);/ 链表节点互换void Save(struct student * head); vo

7、id Search(struct student * head); 信息void Read(struct student * head);信息void Sort(struct student * head); 排序/ 写入磁盘/ 查找学生/ 显示学生/ 链表节点struct student * Readpoint();写入内存struct student * Create();/ 磁盘文件/ 学生信息手动录入教育资料struct student * Modify(struct student * head);/ 链表结构体成员修改struct student * Add(struct stud

8、ent * head);入struct student * Delete(struct student * head);除int main(void)Menu_1();return 0;void Menu_1()int num;printf(tttt学生信息管理系统 ttttn);printf(ttt 1:进入学生信息管理 n);单printf(ttt 0: 退出学生信息管理 n);printf( 请您输入指令 :);/ 链表节点插/ 链表节点删/ 主菜教育资料scanf(%d,&num);switch(num) case 1:Menu_2();您已退出学break;default:print

9、f(生信息管理系统 n);break;/*/void Menu_2()struct student * head;int num;printf(ttt 欢迎进入 n);printf(n); printf(ttt 1:学生信息录入 n);printf(ttt 2:学生信息浏览 n);printf(ttt 3:学生信息查找 n);教育资料printf(ttt 4:学生信息修改 n);/ 二级菜单printf(ttt 5:学生信息增加 n);printf(ttt 6:学生信息删除 n);printf(ttt 0:返回主菜单 n);printf(n); printf( 请您输入指令 :);scanf(

10、%d,&num);switch(num)case 1:head = Create();Save(head);printf(n);printf(ttt 1: 返回主菜单 n);/ 手动录入学生数据printf(ttt 2: 返回二级菜单 n); printf(n);printf( 请您输入指令 :); scanf(%d,&num);教育资料switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf( 输入无效,返回二级菜单 !n);Menu_2();break;break;case 2:head = Readpoi

11、nt();/ 写入链表,返回头指针Sort(head);printf(ttt 以学号升序排列 n);Read(head);/ 链表数据写入文件教育资料Save(head);printf(n);printf(ttt 1: 返回主菜单 n);printf(ttt 2: 返回二级菜单 n); printf(n);printf( 请您输入指令 :); scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf( 输入无效,返回二级菜单 !n); Menu_2();break;break;教育

12、资料case 3:head = Readpoint();Search(head);/ 查找学生信息printf(n);printf(ttt 1: 返回主菜单 n);printf(ttt 2: 返回二级菜单 n); printf(n);printf( 请您输入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf( 输入无效,返回二级菜单 !n); Menu_2();教育资料break;break;case 4:/head = Readpoint();Modify(he

13、ad);修改结构体成员并保存到文件Save(head);printf(n);printf(ttt 1: 返回主菜单 n);printf(ttt 2: 返回二级菜单 n);printf(n);printf( 请您输入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :教育资料printf( 输入无效,返回二级菜单 !n);Menu_2();break;break;case 5:/ 增加学生信head = Readpoint();Add(head);息并保存到文件Save(head

14、);printf(n);printf(ttt 1: 返回主菜单 n);printf(ttt 2: 返回二级菜单 n);printf(n);printf( 请您输入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();教育资料break;case 2:Menu_2();break;default :printf( 输入无效,返回二级菜单 !n);Menu_2();break;break;case 6:head = Readpoint();head = Delete(head);/ 删除学生信息并保存到文件Save(head);printf(n);prin

15、tf(ttt 1: 返回主菜单 n);printf(ttt 2: 返回二级菜单 n);printf(n);printf( 请您输入指令 :);教育资料scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf( 输入无效,返回二级菜单 !n);Menu_2();break;break;case 0: Menu_1();break;default :printf( 请重新输入 n);Menu_2();教育资料break;/*/struct student * Create()/ 学生信

16、息手动录入struct student *head,* p,* q;int n;p = q = (struct student *)malloc(sizeof(struct student);printf( 请输入学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成 绩:n);scanf(%s,q-name);scanf(%d %s %d %d %d,&q-num,&q-sex,&q-Chinese,&q-Math,&q -English);n = 0;head =NULL;while (q-num != 0)教育资料 n = n+1;if (n = 1)head = q;elsep-nex

17、t = q;p = q;q = (struct student *)malloc(sizeof(struct student);scanf(%s,q-name);scanf(%d %s %d %d %d,&q-num,q-sex,&q-Chinese,&q-Math,&q- English);p-next = NULL;printf( 学生信息录入成功 !n);return head;教育资料/*/struct student * Readpoint()/ 学生信息写入内存,便于操作FILE * fp1;struct student *head,* p,* q;int n;if(fp1 = f

18、open(E:test.txt,rb) = NULL)printf(open file error!n);exit(0);p = q = (struct student *)malloc(sizeof(struct student);fscanf(fp1,%s %d %s %d %d %d,q-name,&q-num,q-sex,&q-Chinese ,&q-Math,&q-English);n = 0;head =NULL;while( !feof(fp1)教育资料 n = n+1;if (n = 1) head = q;elsep-next = q;p = q;q = (struct st

19、udent *)malloc(sizeof(struct student);fscanf(fp1,%s %d %s %d %d %d,&q-name,&q-num,&q-sex,&q-Chin ese,&q-Math,&q-English);p-next = NULL;fclose(fp1); return head;/*/教育资料 void Swap(struct student * phead, struct student * pback) / 链表元素数据交换struct student * temp = (struct student *)malloc(sizeof(struct s

20、tudent); strcpy(temp-name,phead-name);temp-num = phead-num;strcpy(temp-sex,phead-sex);temp-Chinese = phead-Chinese;temp-Math = phead-Math;temp-English = phead-English;strcpy(phead-name,pback-name);phead-num= pback-num;strcpy(phead-sex,pback-sex);phead-Chinese = pback-Chinese;phead-Math = pback-Math;

21、phead-English = pback-English;strcpy(pback-name,temp-name);pback-num = temp-num;strcpy(pback-sex,temp-sex);教育资料 pback-Chinese = temp-Chinese; pback-Math = temp-Math; pback-English = temp-English;free(temp);/*/void Sort(struct student * head)/ 学号排序struct student * phead = (struct student *)malloc(siz

22、eof(struct student);struct student * pback = (struct student *)malloc(sizeof(struct student); phead = head;while (phead)int Num = phead-num;pback = phead-next;while(pback)if( Num pback-num)教育资料Swap(phead,pback);Num = phead-num;pback = pback-next;phead = phead-next;/* void Read(struct student * head)

23、息读取struct student * p;p = head;printf(n);printf( 学生的姓名 、 学号 、 性别 、语文成绩 语成绩 :n);while(p != NULL)/ 学生信高等数学成绩 、 英教育资料printf( %s t%dt%s t %d t %dtt %dn,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;printf(n);/*/ 学生void Save(struct student * head) 信息保存到文件struct student * p;FILE * fp;if(fp = f

24、open(E:test.txt,wb) = NULL)printf(open file error!n);exit(0);教育资料p = head;while(p !=NULL)fprintf(fp,%s %d %s %d %d %d,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);fprintf(fp,%s,rn);p = p-next;fclose(fp);/*/ 学生void Search(struct student * head) 信息查找int n;struct student * p;教育资料char name24;int num;c

25、har sex5;int Chinese;int Math;int English;printf( 您想以何种方式进行查找 :n);printf(1;姓名n);printf(2:学号n);printf(3:性别n);printf(4:语文成绩 n);printf(5:数学成绩 n);printf(6:英语成绩 n);printf(0:返回二级菜单 n);scanf(%d,&n);switch(n)case 1:printf( 请输入姓名 :); / 按姓名查找scanf(%s,name);教育资料p = head;while(strcmp(name,p-name)!=0 & p-next !=

26、 NULL)p = p-next;if(strcmp(name,p-name)=0)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);elseprintf( 查无此人 !n);break;/ 按学case 2:printf( 请输入学号 :);号查找scanf(%d,&num);p = head;while(num != p-num & p-next != NULL)p = p-next;if(num = p-num)printf(%s %d %s %d %d %dn,p-name,p-num,p

27、-sex,p-Chine se,p-Math,p-English);教育资料elseprintf( 查无此人 !n);break;/ 按性别查找case 3:printf( 请输入性别 :);scanf(%s,sex);p = head;while(p!= NULL)if(strcmp(sex,p-sex)=0)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;break;case 4:printf( 请输入语文成绩 :);scanf(%d,&Chinese);教育资料p =

28、head;while(p!= NULL)if(Chinese = p-Chinese)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);p = p-next;break;case 5:printf( 请输入高等数学成绩 :); / 按高等数学成 绩查找scanf(%d,&Math);p = head;while(p!= NULL)if(Math = p-Math)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-Eng

29、lish);教育资料p = p-next;break;case 6:/ 按英语成绩查找printf( 请输入英语成绩 :); scanf(%d,&English);p = head;while(p!= NULL)if(English = p-English)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);p = p-next;break;default:printf( 指令错误返回二级菜单 !n);Menu_2();教育资料break;/*/struct student * Modify(str

30、uct student * head) int n;struct student * p; char name24;int num;printf( 您想以何种方式进行修改 :n); printf(1; 姓名 n);printf(2: 学号 n);printf(0: 返回二级菜单 n); scanf(%d,&n);switch(n)case 1:教育资料/ 按姓名查找后修改printf( 请输入姓名 :);信息scanf(%s,name);p = head; while(strcmp(name,p-name)!=0 & p-next != NULL)p = p-next;if(strcmp(na

31、me,p-name)=0)scanf(%s %d %s %d %d %d,p-name,&p-num,p-sex,&p-Chi nese,&p-Math,&p-English);printf( 修改后 :n);printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);elseprintf( 查无此人 !n);break;case 2:printf( 请输入学号 :);/ 按学号查找后修改信息scanf(%d,&num);p = head;while(num != p-num & p-next != NUL

32、L)教育资料p = p-next;if(num = p-num)scanf(%s %d %s %d %d %d,p-name,&p-num,p-sex,&p-Chi nese,&p-Math,&p-English);printf( 修改后 :n);printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);elseprintf( 查无此人 !n);break;default:printf( 指令错误 ,返回二级菜单 !n);Menu_2();break;return head;struct student

33、* Add(struct student * head)/增加学生信息教育资料struct student * p,* q;/ 为增加的学生分配内存struct student * add = (struct student *)malloc(sizeof(struct student );scanf(%s %d %s %d %d %d,add-name,&add-num,add-sex,&add-Ch inese,&add-Math,&add-English);q = head;if(head = NULL)/ 空表插入head = add;add-next = NULL;else while(add-num q-num) & (q-next != NULL)/ 指向下个节点p = q;q = q-next;if(add-num

温馨提示

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

评论

0/150

提交评论