




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
长江大学工程技术学院C语言课程设计实习报告 简易学生成绩管理系统学生姓名:尹航 学号:201161469序号:37专业班级:勘工61102班指导老师:汪利琴报告日期: 2013/1/620目 录1.第一部分 课程设计的题目与要求.32.第二部分 课程设计题目功能.3(1).系统功能模块框图设计.3-4(2).数据结构说明.4-5(3).详细设计.5-8(4).调试与测试.8-123.第三部分 课程设计总结.124.附录 程序清单.12-18 简易学生成绩管理系统第一部分 课程设计的题目与要求1.问题的提出(1) 用记事本新建一个文本文件2011.txt来用于存放学生的成绩信息。(2) 再创建一个文本文件来用于存放每门课程的学分信息,文本文件名为KG201160057.txt。(3) 用主函数列一个主菜单并利用主菜单调用各个子菜单,通过各个函数来 实现以下功能:计算平加权均分并排序;排序;统计;显示学生成绩条。2.功能要求(1) 计算加权平均分并排序:计算加权平均分;按平均分排序;将名次表显示(2) 对学生信息实现排序功能:按姓名排序;按平均成绩排序。将排序后的结果显示在屏幕上。(3) 统计:统计每门课的平均分;各分数段(60分以下;6069;7079;8089;90分以上)的学生人数。用C语言创建一个数据文件,用该文件来存放统计后的结果,并将结果显示在屏幕上。(4) 显示学生成绩条的功能:显示指定学号的学生成绩条;显示指定姓名的学生成绩条。将结果显示在屏幕上。第二部分 课程设计题目功能1.系统功能模块框图设计读入数据进入程序 主界面 查询成绩读取学生信息按平均成绩排序按学生姓名排序按加权平均分排序统计每门课的平均分退出指定学号的学生成绩条指定学号的学生成绩条2.数据结构说明#define M 10 /定义常量 M为学生人数#define N 4 /定义常量 N为课程数 struct data /定义一个结构体。保存学生成绩信息 int num;char name10;int yy;int math;int jsj;int sx;int rank;double jqave; stuM; /定义一个结构体数组。保存多条成绩信息struct kecheng /定义结构体,保存课程信息int num;char kcname20;double xuefen; courseN; /定义结构体数组,保存多门课程信息本程序主要采用结构体数组进行临时的数据储存,主要应用数组、文件作为数据存贮的方式。3.详细设计主要函数:void start() /在main函数中被调用,读取成绩信息至结构体数组。便于 其他功能模块调用Void menu() /在main函数中被调用,显示菜单。void xuanzhe() /在main函数中被调用,接受菜单选择命令。 void eadfile() /在xuanzhe函数中被调用,在屏幕上显示成绩信息 void anjiaquanpx() /在xuanzhe函数中被调用,计算加权平均分并按加权平均 分排名 void numshow() /在xuanzhe函数中被调用,按学号查看学生成绩条 Viod main() /主函数,读入成绩文档和课程学分文档,计算加权平均分模块功能说明:读取文件信息的函数:void start()char title100;int num=10; int j;FILE *fpfile;int i=0; FILE *fpkc; int k; char str2100;if (fpfile = fopen(yinhang.txt,r)=NULL) printf(open file error!n);fgets(title,300,fpfile);for(i=0;i10;i+)fscanf(fpfile,%d%s%d%d%d%d,&stui.num,,&stui.yy,&stui.jsj,&stui.math,&stui.sx); fpkc=fopen(kc201161469.txt,r); fgets(str2,100,fpkc); for(k=0;kN;k+) fscanf(fpkc,%d%s%lf,&coursek.num,coursek.kcname,&coursek.xuefen); printf(n);fclose(fpkc);计算加权平均分并排序的函数:void anjiaquanpx(int a) /求加权平均分,名次 int i,j; double s=0,sum; FILE *fp; for(i=0;iN;i+) s+=coursei.xuefen; for(i=0;iM;i+) sum=0; stui.rank=1;sum=stui.yy*course0.xuefen+stui.jsj*course1.xuefen+stui.math*course2.xuefen+stui.sx*course3.xuefen; stui.jqave=sum/s; for(i=0;iM;i+) for(j=0;jstui.jqave)stui.rank+=1; if(fp=fopen(加权平均分.txt,w)=NULL) exit(0); printf(名次 学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n); fprintf(fp,名次 学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n);if(a=1) scoresort();else namesort(); for(i=0;iM;i+) fprintf(fp,%3d%4d%7s,stui.rank,stui.num,); fprintf(fp,%7d%7d%7d%7d,stui.yy,stui.jsj,stui.math,stui.sx); fprintf(fp,%8.2lfn,stui.jqave);printf(%d%10d%7s,stui.rank,stui.num,); printf(%7d%7d%7d%7d,stui.yy,stui.jsj,stui.math,stui.sx); printf(%8.2lfn,stui.jqave); printf(n); fclose(fp);统计的函数void tjpjf() /统计每门课程的平均分 int i,sumyy=0,sumjsj=0,summath=0,sumsx=0;for(i=0;iM;i+) sumyy+=stui.yy;printf(%dn,sumyy/10);for(i=0;iM;i+)sumjsj+=stui.jsj;printf(%dn,sumjsj/10);for(i=0;iM;i+) summath+=stui.math;printf(%dn,summath/10);for(i=0;iM;i+)sumsx+=stui.sx;printf(%dn,sumsx/10);显示学生成绩条的函数void numshow() /按学号查询显示成绩条int xh,i,mark=0;printf(学号);scanf(%d,&xh);for(i=0;iM;i+)if(stui.num=xh) printf(学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n);printf(%8d%7s%8d%10d%8d%9d%8.2lfn,stui.num,,stui.yy,stui.jsj,stui.math,stui.sx,stui.jqave);mark=1;if(mark=0) printf(not found);void xsxmcj() /按姓名查询显示成绩条char name10,i,mark=0;printf(请输入姓名);scanf(%s,&name);for(i=0;iM;i+)if(strcmp(,name)=0) printf(学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n);printf(%8d%11s%8d%8d%8d%9dn,stui.num,,stui.yy,stui.jsj,stui.math,stui.sx);mark=1;if(mark=0) printf(not found);4.调试与测试1. 用start ()函数从尹航.txt文件中读取学生成绩的详细信息: 2. 进入主菜单界面,具有9个功能,请选择(19): 3. 从主菜单中选择1进入1菜单功能,显示学生成绩信息 4.从主菜单中选择2,实现按加权平均分排序功能5. 从主菜单中选3按学生姓名排序:6. 在菜单中选择4按平均成绩排序: 7.从主菜单中选5进入统计每门课的平均分:8.从菜单中选6,显示指定学号的成绩9.从菜单中选7,显示指定姓名的成绩第三部分 课程设计总结 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在汪老师的辛勤指导下,终于游逆而解。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。回顾起此次课程设计,至今让我我们仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,几个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,也懂得集体团队的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题同时,在汪老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!附录 程序清单#include #include #include#include#define M 10#define N 4void readfile();void menu();void readkc();void anjiaquanpx();void chushihua();struct xsinfoint num;char name10; int yy;int math;int jsj;int sx;int rank; double jqave; stuM;struct kechengint num;char kcname20;double xuefen;courseN;void menu()printf( =n);printf( = =n);printf( = 欢迎使用 =n);printf( = =n);printf( =n);printf( -n);printf( | 简易学生成绩管理系统 |n);printf( -n);printf( | 1.读取学生信息 |n);printf( | 2.按加权平均分排序 |n);printf( | 3.按学生姓名排序 |n);printf( | 4.按平均成绩排序 |n);printf( | 5.统计每门课的平均分 |n);printf( | 6.显示指定学号的学生成绩条 |n);printf( | 7.显示指定姓名的学生成绩条 |n);printf( | 8.退出 |n); printf( -n);void start()char title800;int num=10; int j;FILE *fpfile;int i=0; FILE *fpkc; int k; char str2100;if (fpfile = fopen(2011.txt,r)=NULL) printf(学生成绩信息文件打开错误!n);fgets(title,300,fpfile);for(i=0;i10;i+)fscanf(fpfile,%d%s%d%d%d%d,&stui.num,,&stui.yy,&stui.jsj,&stui.math,&stui.sx); fpkc=fopen(kc37.txt,r); fgets(str2,100,fpkc); for(k=0;kN;k+) fscanf(fpkc,%d%s%lf,&coursek.num,coursek.kcname,&coursek.xuefen); printf(n); fclose(fpkc);void readfile()char title800;int num=10; int j;FILE *fpfile;int i=0;if (fpfile = fopen(2011.txt,r)=NULL) printf(学生成绩信息文件打开错误!n);fgets(title,300,fpfile);puts(title);for(i=0;i10;i+)printf(%8d%11s%8d%8d%8d%9dn,stui.num,,stui.yy,stui.jsj,stui.math,stui.sx);void scoresort()int i,j;struct xsinfo t;system(cls);for(i=0;i9;i+)for(j=0;j9-i;j+)if(stuj.jqavestuj+1.jqave)t =stuj;stuj=stuj+1;stuj+1=t;void namesort()int i,j;struct xsinfo t;system(cls);for(i=0;i9;i+)for(j=0;jstuj+1.name0)t =stuj;stuj=stuj+1;stuj+1=t;void anjiaquanpx(int a) /求加权平均分,名次 int i,j; double s=0,sum; FILE *fp; for(i=0;iN;i+) s+=coursei.xuefen; for(i=0;iM;i+) sum=0; stui.rank=1;sum=stui.yy*course0.xuefen+stui.jsj*course1.xuefen+stui.math*course2.xuefen+stui.sx*course3.xuefen; stui.jqave=sum/s; for(i=0;iM;i+) for(j=0;jstui.jqave)stui.rank+=1; if(fp=fopen(jj1002平均分.txt,w)=NULL) printf(Faile to build a new file!n); exit(0); printf(创建MC1090221.txt数据文件n); printf(名次 学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n); fprintf(fp,名次 学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n);if(a=1) scoresort();else namesort(); for(i=0;iM;i+) fprintf(fp,%3d%4d%7s,stui.rank,stui.num,); fprintf(fp,%7d%7d%7d%7d,stui.yy,stui.jsj,stui.math,stui.sx); fprintf(fp,%8.2lfn,stui.jqave);printf(%d%10d%7s,stui.rank,stui.num,); printf(%7d%7d%7d%7d,stui.yy,stui.jsj,stui.math,stui.sx); printf(%8.2lfn,stui.jqave); printf(n); fclose(fp);void tjpjf()int i,sumyy=0,sumjsj=0,summath=0,sumsx=0;for(i=0;iM;i+) sumyy+=stui.yy; printf(英语平均分:%dn,sumyy/10);for(i=0;iM;i+) sumjsj+=stui.jsj; printf(计算机平均分:%dn, sumjsj/10);for(i=0;iM;i+) summath+=stui.math; printf(数学平均分:%dn,summath/10);for(i=0;iM;i+) sumsx+=stui.sx; printf(思修平均分:%dn,sumsx/10);void numshow()int xh,i,mark=0;printf(学号);scanf(%d,&xh);for(i=0;iM;i+)if(stui.num=xh) printf(学号 姓名 大学英语 C语言 高等数学 思想道德修养 平均成绩n);printf(%8d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海创意活动策划布置方案
- 微信群营销管理活动方案
- 移动暖气片的营销方案
- 单位红色故事活动方案策划
- 钢桁梁专项施工方案
- 金融展厅策划咨询方案
- 警务实战技能培训
- 文明卫生专项施工方案
- 建筑方案设计参数怎么写
- 线上购物节营销方案设计
- 合肥市肥东县大学生乡村医生专项计划招聘考试真题2024
- 能源问题面试题库及答案
- 2025山西太原铁路局招聘试题及答案解析
- 2025年海上光伏产业技术创新与海洋能源市场前景报告
- 2025年征兵心理测试题库及答案
- 2025年河南省(安阳市)事业单位招聘联考内黄县(综合类)岗位考察考试参考试题及答案解析
- 2025至2030中国电子束晶圆检查系统行业项目调研及市场前景预测评估报告
- 《老年服务礼仪与沟通技巧》全套教学课件
- 电解质紊乱机制-洞察及研究
- 工程试验检测知识培训课件
- 2025年机动车检验检测机构授权签字人考核试题及答案
评论
0/150
提交评论