1、C语言程序设计课程设计实习报告长江大学C语言程序设计课程设计实习报告 题 目: 学生成绩管理系统 姓 名: 陈桥 学 院: 计算机科学学院 专 业: 教育技术学 班 级: 教技 11001 学 号: 201003885 指导教师: 马老师 康老师 2011年12月19日目 录一 设计目的1二 课程设计摘要 2三 课程设计的任务与数据3四 系统功能模块 4五 详细设计(各功能模块的具体实现算法流程图) 5六 调试分析(包含各模块的测试用例及测试结果) 6七 总结 7一、设计目的1.进一步熟悉VC6.0的开发环境,掌握基本的编程方法,熟悉用C语言完成一个应用程序的设计过程、掌握有关编辑和调试程序的
2、方法和技巧;2.主要掌握C语言中的结果提、指针及文件操作等内容;3.了解开发简单应用程序的全过程,包括:分析、设计、编程、调试和编写报告。二、课程设计摘要第一步 原始数据(建立两个数据文件)1. 文件1用来存放学生成绩2. 文件2用来存放课程学分第二步 程序设计思想1. 定义两个结构体数组用来存放文件1和文件2的内容。2. 编写各个函数对应各个应实现的功能。3. 编写第一个函数ReadDat1( )读取文件1(jj110014.txt)读取学生成绩4. 编写第二个函数ReadDat2( )读取文件2(jj01kc.txt)读取课程学分5. 编写第三个函数pj( )计算各个同学的加权平均值6.
3、编写第四个函数writecj()计算每个同学的名次,同时创建文本文件ksMC110014.txt写入数据,包括各个学生的学号、名次、姓名、各科成绩、加权平均值。7. 编写第五个函数kc( )统计全班每门课程的平均分和标准差,并计算各分数段(60分以下;6069;7079;8089;90分以上的学生人数)。课程设计的计算公式为:式中:y为课程标准差,xi 为第i个学生成绩, 为本门课程的算术平均成绩,N为学生数。创建txt文本文件kskcjj110014.txt写入数据,包括课程编号、课程名称、课程学分、标准差、分数段人数统计。7编写第六个函数cjt( )打印每名学生的成绩条,同时创建txt文本
4、文件kscjt110014.txt写入成绩条内容。8编写第七个函数bjg( )屏幕显示所有存在不及格课程的学生名单(含学号、不及格课程名称、课程的学分及成绩)。9编写第八个函数yxiu( )屏幕显示优等生名单(含学号、N门课成绩、平均分、名次)。三、程序设计的任务与数据1.原始文件用记事本新建一文本文件,文件名为:“班名+序号”,将本班的M名学生在本学期的N门考试课的成绩(要求用真实的课程名、假想的分数,并要求将自己的学号假定为1,将自己的每门课的分数都定在90分以上,而将别人的每门课的分数都定在95分以下。)输入到这个文件中,建议按如下形式存放(注:20M50、5N8,下文以M=4,N=3为
5、例): 学号 姓名 英语 C语言 数学 1 我自己 96 93 99 2 张某 76 89 89 3 李某 91 96 67 4 王某 75 58 56 jj110014.txt 用记事本新建另一文本文件,文件名为:“班名+KC”,将本班本学期的N门真实的课程名及其学分输入到这个数据文件中,建议按如下列形式存放: 编号 课程名称 课程学分1 英语 6.02 C语言 4.53 数学 5.5jj01kc.txt2课设任务在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,并根据以上内容计算每个学生N门课的加权平均分(保留1位小数,4舍5入),并按平均分排列名次,平均分相同则名次并列。然
6、后显示菜单,利用菜单调用各个函数,分别完成如下功能: 1) 用C语言创建一个数据文件,文件名为:“MC+班号+序号”,如信计0901班的12号同学所建的文件名应为:“MC1090221.txt”。用来存放班级排名后的成绩表,要求按以下形式存放。 名次 学号 姓名 英语 C语言 数学 平均成绩 1 1 我自己 96 93 99 95.5 3 2 张某 76 89 89 80.5 4 3 李某 91 96 67 78.2 2 4 王某 75 58 56 88.8 5 5 赵某 58 67 77 68.5 2) 分别统计全班每门课的平均分和标准差,并计算各分数段(60分以下;6069;7079;80
7、89;90分以上)的学生人数。课程标准差的计算公式为:式中:y为课程标准差,xi 为第i个学生成绩, 为本门课程的算术平均成绩,N为学生数。3) 用C语言创建一个数据文件,文件名为:“KC+班号+序号”, hx1090121.txt 编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格1 英语 6.0 16.8 3 10 18 15 3 2 C语言 4.5 11.7 1 5 20 13 83 数学 5.5 18.5 9 12 19 8 14) 打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:“CJT+班号+序号”, CJT1090221.txt。成绩条的格式自
8、定。5) 屏幕显示所有存在不及格课程的学生的名单(含学号、不及格课程名称、课程的学分及成绩)。6) 屏幕显示优等生名单(含学号、门课成绩、平均分、名次) 优等生条件(只要满足三个条件中的任意一个条件即可):a) 平均分 92分b) 名次在本班位于前五名c) 平均分 88分,并且至少有一门课的成绩 99分四、系统功能模块五、详细设计(各功能模块的具体实现算法流程图)1.流程图 #include #include struct stu int num; char name10; int score5; float ave;stu20;struct kecheng int num,count5; c
9、har kcname10; float xuefen,ave;course5;void ReadDat1() int i,j; char str1100; FILE *fp; if(fp=fopen(jj110014.txt,r)=NULL) printf(Cannot open the file1!n); exit(0); fgets(str1,100,fp); printf(%s,str1); for(i=0;i20;i+) fscanf(fp,%5d%s,&stui.num,stui.name); printf(%2d %2s,stui.num,stui.name); for(j=0;j
10、5;j+) fscanf(fp,%4d,&stui.scorej); printf(%6d,stui.scorej); printf(n); fclose(fp);void ReadDat2() FILE *fp; int k; char str2100; fp=fopen(jj01kc.txt,r); fgets(str2,100,fp); puts(str2); for(k=0;k5;k+) fscanf(fp,%d%s%f,&coursek.num,coursek.kcname,&coursek.xuefen); printf(%-8d%-10s%fn,coursek.num,cours
11、ek.kcname,coursek.xuefen); fclose(fp);void pj() int i,j; float s=0,sum; for(i=0;i5;i+) s+=coursei.xuefen; for(i=0;i20;i+) sum=0; for(j=0;j5;j+) sum+=stui.scorej*coursej.xuefen; stui.ave=sum/s; void writecj() FILE *fp; int i,j,a20,k; for(i=0;i20;i+) k=1; for(j=0;j20;j+) if(stui.ave-stuj.ave0) k+; ai=
12、k; if(fp=fopen(e:ksMC110014.txt,w)=NULL) printf(Faile to build a new file!n); exit(0); fprintf(fp,名次 学号 姓名 英语 C语言 数学 体育 物理 平均成绩n); for(i=0;i20;i+) fprintf(fp,%3d%4d%7s,ai,stui.num,stui.name); for(j=0;j5;j+) fprintf(fp,%5d,stui.scorej); fprintf(fp,%8.2fn,stui.ave); fclose(fp);void kc() int i,j; float
13、 b5,sum5; FILE *fp; for(i=0;i5;i+) bi=0; for(j=0;j5;j+) sumj=0; for(i=0;i20;i+) sumj+=stui.scorej; for(j=0;j5;j+) for(i=0;i20;i+) bj+=(stui.scorej-sumj/20.0)*(stui.scorej-sumj/20.0); coursej.ave=(float)sqrt(double)bj/20.0); for(j=0;j5;j+) for(i=0;i5;i+) coursej.counti=0; for(j=0;j5;j+) for(i=0;i=90)
14、 coursej.count0+; else if(stui.scorej=80) coursej.count1+; else if(stui.scorej=70) coursej.count2+; else if(stui.scorej=60) coursej.count3+; else coursej.count4+; if(fp=fopen(e:kskcjj110014.txt,w)=NULL) printf(Faile to build a new file!n); exit(0); fprintf(fp,编号 课程名称 课程学分 标准差 优秀 良好 中等 及格 不及格n); for(
15、i=0;i5;i+) fprintf(fp,%-6d%-10s%-7.1f%5.1f,i+1,coursei.kcname,coursei.xuefen,coursei.ave); for(j=0;j5;j+) fprintf(fp,%5d,coursei.countj); fprintf(fp,n); fclose(fp);void cjt() int i,j,a20,k; float s=0,sum; FILE *fp; for(i=0;i5;i+) s+=coursei.xuefen; for(i=0;i20;i+) sum=0; for(j=0;j5;j+) sum+=stui.sco
16、rej*coursej.xuefen; stui.ave=sum/s; for(i=0;i20;i+) k=1; for(j=0;j20;j+) if(stui.ave-stuj.ave0) k+; ai=k; if(fp=fopen(e:kscjt110014.txt,w)=NULL) printf(Faile to build a new file!n); exit(0); fprintf(fp,名次 学号 姓名 英语 C语言 数学 体育 物理 平均成绩n); for(i=0;i20;i+) fprintf(fp,%3d%4d%7s,ai,stui.num,stui.name); for(
17、j=0;j5;j+) fprintf(fp,%5d,stui.scorej); fprintf(fp,%6.2fn,stui.ave); fprintf(fp,n); while(i!=19) fprintf(fp,名次 学号 姓名 英语 C语言 数学 体育 物理 平均成绩n); break; fclose(fp);void bjg() int i,j; printf(不及格课程学生名单n); printf(学号 姓名 不及格课程名称 课程学分 课程成绩n); for(i=0;i20;i+) for(j=0;j5;j+) if(stui.scorej60) printf(%-5d,stui.n
18、um); printf(%-8s,stui.name); printf(%7s,coursej.kcname); printf(%11.1f,coursej.xuefen); printf(%8dn,stui.scorej); printf(n);void yxiu() int i,j,k,a20,b20,c20; float s=0,sum; for(i=0;i5;i+) s+=coursei.xuefen; for(i=0;i20;i+) sum=0; for(j=0;j5;j+) sum+=stui.scorej*coursej.xuefen; stui.ave=sum/s; for(i
19、=0;i20;i+) k=1; for(j=0;j20;j+) if(stui.ave-stuj.ave0) k+; ai=k; printf(优等生名单n); printf(名次 学号 姓名 英语 C语言 数学 体育 物理 平均分n); for(i=0;i20;i+) bi=0; ci=0; for(j=0;j=92) bj+; for(i=0;i=88&stuj.scorei=99) cj+; for(i=0;i20;i+) if(ai=5|bi|ci) printf( %-5d,ai); printf(%-5d,stui.num); printf(%-6s,stui.name); for
20、(j=0;j5;j+) printf(%-5d,stui.scorej); printf(%-7.2fn,stui.ave); printf(n);main() ReadDat1(); ReadDat2(); pj(); writecj(); kc(); cjt(); bjg(); yxiu();六、调试分析(包含各模块的测试用例及测试结果)源文件运行结果C程序新建的文本文件ksMC110014.txtKskcjj110014.txtKscjt110014.txt七、总结编程题目要求简单易懂,但实际操作却很难,主要是没有理清条理,通过编程各个函数解决各个问题,题目变得简单易操作。通过编程解决实际问题,掌握了结构体,数组,文件的使用,函数的各个调用,以及顺序结构、选择结构、循环结构的应用。通过编程,进一步掌握了C语言的实践操作。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1