




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 课程名称_C语言课程设计_题目名称_学生成绩统计_学生学院_物理学院_专业班级_电子科学与技术_学 号_3110008570_学生姓名_胡健_指导教师_刘力斌_2012 年 10 月 17 日 C语言课程设计报告一、C语言课程设计的目的:进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。在许多常规
2、学科的日常教学中,我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起作文来前言不搭后语,解起数学题来步骤混乱,这些都是缺乏思维训练的结果。程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。二、课程设计报告正文课程设计题目的原文: 学生成绩统计【问题描述】 学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输
3、出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】假设某班有:30人(姓名自定)考试课程有:高等数学、物理、外语、C语言、德育5门课程。将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面: 输入成绩到文件中 输出成绩 输出不及格学生名单 成绩排序 修改记录 删除记录 插入记录等主函数中对3个功能选择(菜单),调用对应的函数完成。【测试数据】自定模拟数据题目的分析(需求分析): 该题目主要是锻炼学生对于运用C语言结构体,指针以及文件修改的能力,C语言最难的部分就在于指针,所以,能用最简洁的语句写出一个合理的程序,老师的目的就达到了。通过该课程设计
4、的锻炼,加深学生对这些知识的掌握以及理解。 在该程序中,我将会运用结构体来分别创建学生成绩表,不及格学生成绩表以及中间值成绩表,通过结构体的运用,我能更加快速以及有规律地调用,分配各个变量,达到简洁的目的。 在循环语句中,我将利用指针来达到好的定位效果,定位准确才能够有的放矢地进行各个环节,而不用通过繁杂的排序以及重复语句。 该程序我还运用了文件修改,程序运行过后将会保存于stu.dat中,同时也能读取该文件。该程序有5个模式,所以必须运用文件管理。当然,当你并没有创建文件时,你却读取文件,系统找不到自然就报错。 通过本次课程设计,我更加理解C语言的灵活多变,结构体的便捷,指针的灵活,文件应用
5、的严谨。使我对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。【提示】 模式(mode)1:新建一个工程; 模式(mode)2:修改; 模式(mode)3:删除; 模式(mode)4:插入; 模式(mode)5:查看。 Stu.num :学生学号; S:学生名字(注:拼音); Stu.math:学生数学成绩; Stu.physics:学生物理成绩; Stu.english:学生英语成绩; Stu.clanguage:学生C语言成绩; Stu.moral:学生德育成绩; Stu.ave:学生平均成绩;模式1:将会弹出对话“Stu.n
6、um:”,输入学号,回车,以此类推。模式2:将会询问你需要修改哪一位的数据,按照弹窗提示操作。模式3:将会询问你需要删除哪一位的数据,按照弹窗提示操作。模式4:按照弹窗提示操作。模式5:直接弹出所有学生的成绩,按排名高低输出。输出文件名:“stu.dat”【分析】 该程序能够存储学生成绩数据,排序,算出平均值以及删除,修改,插入等功能,具有较强的实用性。 全程序主要模块包括“排序模块”,“不及格学生输出模块”,“文件保存以及输出模块”以及“成绩排名模块”。“排序模块”模块的难点在于结构体数组的赋值是否合法以及字符函数的运用,“成绩排名”的难点在于判断各模式之间的联系。“文件保存以及输出模块”的
7、难点在于文件操作函数的繁杂以及情况的判断,“不及格学生输出模块”的难点在于成绩的判断以及输入输出的排序。/* 技术文档/帮助清单*/这是一个学生成绩统计程序。该程序仅以10人为例,可通过修改宏定义N来指定人数新建程序。在VC+6.0运行。/* 模式(mode)1:新建一个工程; 模式(mode)2:修改; 模式(mode)3:删除; 模式(mode)4:插入; 模式(mode)5:查看。 Stu.num :学生学号; S:学生名字(注:拼音); Stu.math:学生数学成绩; Stu.physics:学生物理成绩; Stu.english:学生英语成绩; Stu.clangua
8、ge:学生C语言成绩; Stu.moral:学生德育成绩; Stu.ave:学生平均成绩;*/模式1:将会弹出对话“Stu.num:”,输入学号,回车,以此类推。模式2:将会询问你需要修改哪一位的数据,按照弹窗提示操作。模式3:将会询问你需要删除哪一位的数据,按照弹窗提示操作。模式4:按照弹窗提示操作。模式5:直接弹出所有学生的成绩,按排名高低输出。输出文件名:“stu.dat” 1.总体流程图模式选择2.修改文件1.新建工程4.插入数据 3.删除数据5.总览文件 程序清单:/* 程序清单*/#include "stdio.h" #include "string.
9、h"#define N 11struct student /学生结构体 char num6; char name8; int math; int english; int physical; int clanguage; int moral; float avr; stuN; struct failstudent /不及格学生结构体 char num6; char name8; int math; int english; int physical; int clanguage; int moral; failstuN; struct exchange /中间值结构体 char nu
10、m6; char name8; int math; int english; int physical; int clanguage; int moral; float avr; exchange; int i,n=0;int main(void) void save(void);/保存文件函数声明 void sorting(void);/排序函数声明 void press(void);/输入函数声明 void failstudent(void);/不及格学生筛选函数声明 void Stuprintf(void);/学生输出函数声明 void failstuprintf(void);/不及格学
11、生输出函数声明 int mode;/模式变量 while(1) printf("Please select the mode you want!n"); printf("1:This is a new projectt2:Modifyt3:Deletet4.Insertt5.Watchn"); printf("Your choice:"); scanf("%d",&mode); if(mode=1)/新建程序模式 int sum=0; for(i=1;i<N;i+) press();/输入 fails
12、tudent();/不及格学生筛选 sum=stui-1.math+stui-1.english+stui-1.physical+stui-1.clanguage+stui-1.moral; /总分 stui-1.avr=(float)(sum/5.0); /平均值 sorting();/排序 printf("n"); printf("n"); printf("n"); printf("This is a score ranking:n"); Stuprintf();/学生输出 printf("n&quo
13、t;); printf("n"); printf("n"); failstuprintf();/不及格学生输出 save(); else if(mode=2)/修改模式 FILE *fp;/文件声明 static int m,sum;/声明定义变量 extern i;/调取外部变量 if(fp=fopen("stud.dat","rb")=NULL)/读出数据 printf("cannot open filen"); return 0; for(m=0;m<N-1;m+)/读出文件 fre
14、ad(&stum,sizeof(struct student),1,fp); printf("No.%dn",m+1); printf("stuNo:%stname:%stmath.score:%dtphysical.score%dtenglish.score:%dt clanguage.score:%dtmoral.score:%dtavr:%fn",stum.num,,stum.math, stum.physical,stum.english,stum.clanguage,stum.moral,stum.avr); prin
15、tf("whose record do you want to modify?nPlease press 130!"); scanf("%d",&i); press(); sum=stui-1.math+stui-1.english+stui-1.physical+stui-1.clanguage+stui-1.moral; stui-1.avr=(float)(sum/5.0); if(fp=fopen("stud.dat","rb+")=NULL)/写入数据 printf("cannot op
16、en filen"); return 0; fseek(fp,(i-1)*sizeof(struct student),0); fwrite(&stui-1,sizeof(struct student),1,fp); fclose(fp); else if(mode=3)/删除模式 FILE *fp; static int m,sum; extern i; if(fp=fopen("stud.dat","rb")=NULL)/读出数据 printf("cannot open filen"); return 0; fo
17、r(m=0;m<N-1;m+) fread(&stum,sizeof(struct student),1,fp); printf("No.%dn",m+1); printf("stuNo:%stname:%stmath.score:%dtphysical.score%dtenglish.score:%dt clanguage.score:%dtmoral.score:%dtavr:%fn",stum.num,,stum.math, stum.physical,stum.english,stum.clanguage,stum
18、.moral,stum.avr); printf("whose record do you want to delete?nPlease press 130!"); scanf("%d",&i); strcpy(stui-1.num,"null"); strcpy(,"null"); stui-1.math=0; stui-1.physical=0; stui-1.english=0; stui-1.clanguage=0; stui-1.moral=0; stui-1.avr=0;
19、if(fp=fopen("stud.dat","rb+")=NULL)/写入数据 printf("cannot open filen"); return 0; fseek(fp,(i-1)*sizeof(struct student),0); fwrite(&stui-1,sizeof(struct student),1,fp); fclose(fp); else if(mode=4)/插入模式 FILE *fp; static int m,sum; printf("Please insert what you wa
20、nt!"); i=N; press(); sum=stui-1.math+stui-1.english+stui-1.physical+stui-1.clanguage+stui-1.moral; stui-1.avr=(float)(sum/5.0); if(fp=fopen("stud.dat","rb+")=NULL)/写入数据 printf("cannot open filen"); return 0; fseek(fp,(i-1)*sizeof(struct student),0); fwrite(&stu
21、i-1,sizeof(struct student),1,fp); fclose(fp); if(fp=fopen("stud.dat","rb")=NULL)/读出数据 printf("cannot open filen"); return 0; for(m=0;m<N;m+) fread(&stum,sizeof(struct student),1,fp); printf("No.%dn",m+1); printf("stuNo:%stname:%stmath.score:%dtphys
22、ical.score%dtenglish.score:%dt clanguage.score:%dtmoral.score:%dtavr:%fn",stum.num,,stum.math, stum.physical,stum.english,stum.clanguage,stum.moral,stum.avr); fclose(fp); else if(mode=5)/浏览模式 FILE *fp; static int m; if(fp=fopen("stud.dat","rb")=NULL)/读出数据 printf(&qu
23、ot;cannot open filen"); return 0; for(m=0;m<N;m+) fread(&stum,sizeof(struct student),1,fp); printf("No.%dn",m+1); printf("stuNo:%stname:%stmath.score:%dtphysical.score%dtenglish.score:%dt clanguage.score:%dtmoral.score:%dtavr:%fn",stum.num,,stum.math, stum.ph
24、ysical,stum.english,stum.clanguage,stum.moral,stum.avr); fclose(fp); else if(mode!=(1|2|3|4|5)/按错时的反应 printf("Are you kidding?Want a fight?n"); return 0;void sorting(void)/排序函数static int i,j,min; for(i=0;i<N-2;i+) min=i; for(j=i+1;j<N-1;j+) if(stumin.avr<stuj.avr) min=j;strcpy(exc
25、hange.num,stui.num); strcpy(stui.num,stumin.num); strcpy(stumin.num,exchange.num);strcpy(,); strcpy(,); strcpy(,); exchange.math=stui.math; stui.math=stumin.math; stumin.math=exchange.math; exchange.physical=stui.physical; stui.physic
26、al=stumin.physical; stumin.physical=exchange.physical; exchange.english=stui.english; stui.english=stumin.english; stumin.english=exchange.english; exchange.clanguage=stui.clanguage; stui.clanguage=stumin.clanguage; stumin.clanguage=exchange.clanguage; exchange.moral=stui.moral; stui.moral=stumin.mo
27、ral; stumin.moral=exchange.moral; exchange.avr=stui.avr; stui.avr=stumin.avr; stumin.avr=exchange.avr; void save(void)/文件保存函数FILE *fp;static int i; if(fp=fopen("stud.dat","wb")=NULL) printf("cannot open filen"); return; for(i=0;i<N-1;i+) if(fwrite(&stui,sizeof(st
28、ruct student),1,fp)!=1) printf("file write errorn"); for(i=0;i<n;i+) if(fwrite(&failstui,sizeof(struct failstudent),1,fp)!=1) printf("file write errorn"); fclose(fp); void press(void)/输入函数extern i; printf("n please input No. %d score:n",i); printf("stuNo:&qu
29、ot;); scanf("%s",stui-1.num); printf("name:"); scanf("%s",); printf("math.score :"); scanf("%d",&stui-1.math); printf("physical.score :"); scanf("%d",&stui-1.physical); printf("english.score :"); scanf
30、("%d",&stui-1.english); printf("clanguage.score :"); scanf("%d",&stui-1.clanguage); printf("moral.score :"); scanf("%d",&stui-1.moral);void failstudent(void)/不及格学生筛选函数extern i; if(stui-1.math)<60|(stui-1.english<60)|(stui-1.physical
31、<60) |(stui-1.clanguage<60)|(stui-1.moral<60) strcpy(failstun.num,stui-1.num); strcpy(,); failstun.math=stui-1.math; failstun.physical=stui-1.physical; failstun.english=stui-1.english; failstun.clanguage=stui-1.clanguage; failstun.moral=stui-1.moral; n+; void Stuprin
32、tf(void)/学生输出函数static int i; for(i=0;i<N-1;i+) printf("No.%dn",i+1); printf("stuNo:%stname:%stmath.score:%dtphysical.score%dtenglish.score:%dt clanguage.score:%dtmoral.score:%dtavr:%fn",stui.num,,stui.math, stui.physical,stui.english,stui.clanguage,stui.moral,stui.avr); void failstuprintf(void)/不及格学生输出函数 static int i;extern n;if(n=0)printf("GREAT! This class has no failstudent!n");else printf("This is some failstudents:n"); for(i=0;i<n;i+) printf("stuNo:%stname:%stmath.score:%dtphysical.score%dtenglish.score:%dt clan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年环境监测质量体系外部审核应对考核试卷
- 103素养导向教学评价校本研修方案有效性诊断
- 反担保主合同(标准版)
- 公路征收房屋合同(标准版)
- 2024年绥化学院招聘真题
- 综合解析人教版九年级物理《内能》专项练习练习题(含答案详解)
- 2025人教版初一英语名词性从句判断练习题50题带答案
- 2025年技师培训考试题库及答案
- 2025年建筑施工企业安管人员考试(专职安全生产管理人员C1类)考前模拟试题及答案
- 2025金属非金属矿山主要负责人和安管人员考试练习题及答案
- (2024版)小学六年级数学考试命题趋势分析
- 2024年海南省成考(专升本)大学政治考试真题含解析
- 米其林餐厅服务流程
- 油浸式变压器电抗器检修检查与处理规范
- 英语FCE语用词汇-必备词缀
- 写字楼物业服务投标方案
- 蒋廷黻中国近代史
- 组团儿上春晚《八戒返乡》小品台词
- 河津市兴耿福利煤化有限公司煤焦油项目环境影响报告书
- 湖北省荆州市《公共基础知识》国考招聘考试真题含答案
- 腰椎退行性疾病课件
评论
0/150
提交评论