
(完整版)c语言程序设计学生成绩管理系统.pdf
23页学习 - 好资料 试验题目 :同学成果治理系统 一, 试验目的 1. 2. 熟识 c 语言的编译连接和运行过程; 把握 c 语言的数据类型,熟识整型,实型,字符型变量的定义方式及如何给 它们赋值; 把握 if 语句及 switch 语句的运用方法及嵌套应用方法; 3. 4. 5. 6. 把握实现循环结构的三种语句 while, do-while., for 的使用; 把握函数的定义方法和调用方法; 能够采纳模块化思想调试程序; 二试验内容 1. 2. 编写程序并进行调试运行; 输入同学资料 ,并储存于文件;每个同学包含信息如:姓名,学号,性别,物 理成果,数学成果,英语成果,运算机成果; 3. 对已存入的同学信息进行更新操作 息和修改同学信息; ,包括更新同学信息信息, 删除某个同学信 4. 通过按同学姓名的方式查询同学信息; 5.输入某同学各门成果进行统计; 6 对同学物理成果排序; 7.最终输出同学信息,供需要时打印; 二, 需求分析 1. 该程序可用于对同学的基本信息的储备,更新,查询,输出,统计,排序等 操作; 其中更新功能包括:添加信息,删除信息,修改信息,可依据需要添加一个 2. 或多个同学 新同学信息; 信息,也可对个别同学信息进行适当的删除或修改;以便随时更 3. 程序中设计的查询功能可依据需要从如干数据中查询某信息, 四,概要设计 1,方案设计 对系统进行分析,给出结构图 分析:系统要求实现很多的功能, 因此遵循结构化程序设计思想来进行本系统 的设计自顶向下, 逐步细化, 将系统设计任务分解出很多子功能模块进行设计 结构图如下: 更多精品文档 第 1 页,共 23 页 学习 - 好资料 同学成果管 显 示 数 据 输 入 数 据 插 入 数 据 查 看 数 据 更 新 数 据 统 计 成 绩 成 绩 排 序 物 理 成 绩 数 学 成 绩 英 语 成 绩 计 算 机 成 绩 保 存 数 据 输 出 数 据 更 新 数 据 删 除 数 据 修 改 数 据 物 理 总 分 和 平 数 学 总 分 和 平 英 语 总 分 和 平 计 算 机 平 均 分 物 理 成 绩 排 序 更多精品文档 第 2 页,共 23 页 学习 - 好资料 五 功能模块的说明 1 输入初始同学信息:其中包括同学姓名,学号,性别,物理 数学 英语 运算 机成果 等相关信息;可用函数 cin(stu *p1) 来实现此操作; 2 查询模块:可用 stu *lookdata(stu *p1) 来实现;找到就输出此同学全部信息包 括同学物理 数学 英语 运算机的成果 ; 3 插入模块:可用 序; insert()来实现;其中通过学号的大小比较的,并且以此来排 4 输出同学的信息及成果:通过同学的姓名来查看同学的语文 数学 英语 运算 机的有关成果,同时也可以分别通过 paverage() maverage() eaverage() comaverage() 来输出物理 数学 英语 运算机等成果的平均分 最高分 最低分; 5 退出系统: 可以用一个函数来实现, 第一将信息储存在文件中, 的内存空间,再退出次程序; 流程图如下 释放动态创建 六 调试情形及运行结果 1,对自己设计进行评判,指出合理和不足之处,提出改进的方案; 此次实践课编写的是一个应用程序, 相对于以前我们见到的程序, 它 要大得多, 于是就按课本上的例子编了超市治理系统, 先把界面弄好然后 再添加各模块,而且各模块也显现了不少问题, 在同学们和老师的帮忙下, 我很有耐心的一次又一次的进行修改, 的目的;可结果仍不是太抱负; 最终运行的结果基本上达到了预期 由于时间很短, 在选题报告中设想到的好多功能都没有实现; 已有的 那些功能虽已能基本上满意治理者和消费者的需要, 但假如仍有更多的功 能程序就会更加完善;如:进入系统时没有设制密码,爱护性不够强;在 输入商品号时没有出错提示,假如商品号输入负值 2,在设计过程中的感受; 本次 C 语言的实习课让我对 C 语言的学习又有了更深化的明白, 也让 我更深刻地领会到了 “实践出真理” 这个道理, 在上机实践过程中学到的 学问远远超过了在课堂上十几周学到的, 学校组织的这次实习让我们这些 实践学问匮乏的高校生增加了很多社会体会, 了不小的铺垫作用; 本次实习中遇到了很多以前没有遇到过的问题, 为我们将来走上工作岗位其 也曾想过要舍弃, 但看到 那些同学都在那仔细的写程序, 给了我连续的信心; 在同学的帮忙下, 我 顺当的终止了本次实习, 让我知道原先凭借自己努力取得的胜利会让自己 这么欣慰,也让我知道了友情和团结的重要性; 七参考文献 C 语言程序设计 八;附录: #include 王曙燕 曹锰 科学出版社 更多精品文档 第 3 页,共 23 页 学习 - 好资料 #include #include #include #include #include #define MAX 10 int sum=10; /* 定义结构体 */ typedef struct student char nameMAX; int num; char sexMAX; /* 姓名 */ /* 学号 */ /* 性别 */ /* 语文 */ /* 数学 */ /* 英语 */ /* 运算机 */ /* 结构体指针 */ float physic; float mathematic; float english; float computer; struct student *next; stu; stu *head; /* 读取信息 */ int read_message() FILE *fp; stu *p; int i=0; if(fp=fopen(student_manage.txt,rb)=NULL) printf(nn* 临时仍没有任何信息,输入密码进入主菜单挑选基本信息录入! *n); return 0; while(feof(fp).=1) fread(head,sizeof(stu),1,fp); if(p-num=0) break; else i+; fclose(fp); return(i); 更多精品文档 第 4 页,共 23 页 学习 - 好资料 /* 显示或打印函数 void print() */ /* 成果治理系统 printf(ttt Score Manage Systemn); */ 成果治理系统 n); Enter Record : printf(ttt printf( 输入数据 /* 输入数据 n); */ Display : 显示或打印 /* 显 printf( n); 示*/ find : 查找数据 /* 拜访数 printf( n); 据*/ 更新模块 /* 更新 printf( Renew_message: n); 模块 */ 储存数据 成果排名 printf( printf( 理成果排名 */ printf( 数据统计 */ printf( 理平均成果 */ printf( 数学平均成果 printf( 语平均成果 */ printf( Save: sort_physic: n); n); /* 物 数据统计 Count: n); /* 物理平均成果 /* 物 Physic Average: n); Math Average: 数学平均成果 n); /* */ 英语平均成果 /* 英 English Average: n); Average:运算机平均成果 Computer n); /* 运算机平均成果 printf( /* 退出 */ */ Quit : 退出 tn); /* 输入相关数据函数 */ void cin(stu *p1) printf(n Enter name:n); scanf(%s,&p1-name); printf(Enter num:n); 更多精品文档 第 5 页,共 23 页 学习 - 好资料 scanf(%d,&p1-num); printf(Enter sex:n); scanf(%s,&p1-sex); printf(Enter scoren); printf(Enter physic:n); scanf(%f,&p1-physic); printf(Enter mathematic:n); scanf(%f,&p1-mathematic); printf(Enter english:n); scanf(%f,&p1-english); printf(Enter computer:n); scanf(%f,&p1-computer); /* 其他数据是否输入函数 */ stu *cindata() stu *p1,*p2; int i=1; char ch; p1=(stu*)malloc(sizeof(stu); head=p1; while(i) cin(p1); printf(Do you want to continue.Yes or no:n); fflush(stdin); ch=getchar(); if(ch=n|ch=N) i=0; p1-next=NULL; else p2=p1; p1=(stu*)malloc(sizeof(stu); p2-next=p1; return(p1-next); 更多精品文档 第 6 页,共 23 页 学习 - 好资料 /* 查看数据函数 */ stu *lookdata(stu *p1) while(p1.=NULL) printf(Name:%st,p1-name); printf(Num:%dt,p1-num); printf(Sex:%st,p1-sex); printf(n); printf(Physic:%ft,p1-physic); printf(Math:%ft,p1-mathematic); printf(English:%ft,p1-english); printf(Computer:%ft,p1-computer); printf(n); p1=p1-next; return p1; /* 通过比较学号来插入数据的函数 void insert() stu *p1,*p3,*p2; p1=head; p3=(stu*)malloc(sizeof(stu); */ p3-next=NULL; if(head=NULL) head=p3;return; cin(p3); while(p1.=NULL&(p1-numnum) p2=p1;p1=p1-next; if(p2=head) p3-next=head; head=p3;return; p3-next=p1; p2-next=p3; 更多精品文档 第 7 页,共 23 页 学习 - 好资料 /* 通过姓名来查找的函数 void find(stu *p2) char name20; int b=0; printf(Enter the name of the sutdent you want to find:); scanf(%s,name); while(p2.=NULL) if(strcmp(name,p2-name)=0) */ printf( The data you want has be find ); printf(Name:%st,p2-name); printf(Num:%dt,p2-num); printf(Sex:%st,p2-sex); printf(n); printf(Physic%ft,p2-physic); printf(Math%ft,p2-mathematic); printf(English%ft,p2-english); printf(Computer%ft,p2-computer); printf(n); b=1; else if(b=0) printf(sorry not find data.); p2=p。












