C语言课程设计报告(分数统计).doc

上传人:doc321 文档编号:12995990 上传时间:2021-12-10 格式:DOC 页数:52 大小:525.50KB
返回 下载 相关 举报
C语言课程设计报告(分数统计).doc_第1页
第1页 / 共52页
C语言课程设计报告(分数统计).doc_第2页
第2页 / 共52页
C语言课程设计报告(分数统计).doc_第3页
第3页 / 共52页
C语言课程设计报告(分数统计).doc_第4页
第4页 / 共52页
C语言课程设计报告(分数统计).doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《C语言课程设计报告(分数统计).doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告(分数统计).doc(52页珍藏版)》请在三一文库上搜索。

1、优质文本成绩:存档资料 计算机科学学院课 程 设 计 报 告 课程名称 C语言课程设计 题 目 学生试卷分数统计 专业班级 计算机应用二班 学 号 学生姓名 指导教师 2016年 06 月 11日计算机科学学院课程设计任务书课程名称: C语言课程设计 设计题目: 学生试卷分数统计 专 业: 电气自动化 班 级: 完成时间: 2016-6-11 指导教师: 专业负责人: 主要内容作为教师,考试完成后需要对试卷进行分析和研究。本课程设计要求用C语言编写程序完成以下功能:1.从键盘输入假设干名>=20人学生的平时成绩和期末成绩2.输入完毕后,显示所有学生的学号、平时成绩和期末成绩,并将成绩保存

2、在文件analysis.dat中。3.读文件analysis.dat,根据文件中保存成绩的分布情况画出直方图,并显示在屏幕上。4.计算总评成绩、平时成绩和期末成绩的平均分和标准差。5.计算完毕后,在屏幕上显示总评成绩,平时成绩和期末成绩的平均分和标准差。根本要求按照课程设计任务的要求,对题目进行需求分析、概要设计和详细设计,并用C/C+进行编码实现,最后形成一份内容充实、条理清晰、分析严谨、结果正确、格式标准的课程设计报告。提交内容:1.程序代码必须有注释2.课程设计报告3.文件analysis.dat参考资料计算机科学学院课程设计成绩评价表课程名称C语言课程设计题 目学生试卷分数统计学生姓名

3、学号指导教师姓名职称助教 序 号评价工程指 标总分值评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写标准,图表完备正确。453创新工作中有创新意识,对前人工作有一些改良或有一定应用价值。54辩论能正确答复指导教师所提出的问题。30总 分评 语:指导教师: 年 月 日【软件课程设计报告目录】1、需求分析说明程序设计的任务,强调的是程序要做什么,明确规定:1输入的形式和输入值的范围;2输出的形式;3程序所

4、能到达的功能;4测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。2、概要设计说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次调用关系。3、详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。4、使用说明、测试分析及结果1说明如何使用你编写的程序;2测试结果与分析;3调试过程中遇到的问题是如何解决提以及对设计与实现的回忆讨论和分析;4运行界面。5、课程设计总结设计心得1你在编程过程中用时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题?2遇到了哪些难

5、题?你是怎么克服的?3你对算法有什么改正想法吗?4你的收获有哪些?参考文献1. 需求分析1.1从键盘输入假设干名>=20人学生的平时成绩和期末成绩。输入完毕后,成绩保存在文件analysis.dat中。1.1.1程序能够对用户的错误输入给出提示。1.1.2用户不需要先输入学生人数,在输入完成任意一个学生的所有信息后用户可以方便的结束输入,程序会自动的计算出学生人数。1.1.3用户能设定学生的平时成绩的次数即学生课程数,以便于用户每次使用本程序时即使学生的平时成绩次数不一样,用户也能方便的使用本程序。1.1.4用户可以设定进入本程序的密码,以防止其他人进入程序修改其信息。当用户忘记密码时,

6、用户也可以答复密保问题来找回密码。1.2读文件analysis.dat, 显示所有学生的学号、平时成绩和期末成绩,并将根据文件中保存成绩的分布情况画出直方图,并显示在屏幕上。1.2.1当用户发现某个学生的成绩输入出了错时,用户可以直接修改此学生的成绩。1.2.2当用户发现还有局部学生的成绩忘记了输入时,也可以继续添加输入。1.2.3用户也可以删除某个学生。1.3计算总评成绩、平时成绩和期末成绩的平均分和标准差。1.4计算完毕后,在屏幕上显示总评成绩,平时成绩和期末成绩的平均分和标准差。1.4.1用户可以选择输出总评成绩在前N名的优秀学生。1.5用户可以建立多个文件来存储多个班级的学生成绩,在程

7、序刚进入时用户可以选择翻开相应班级的文件,并操作。1.5.1用户在新建文件时,要输入学生的学号、姓名、成绩等内容即程序不允许建立空文件。1.5.2程序也允许用户要删除文件。1.6为了用户能更的使用本程序,在程序中用户可以查看帮助文档。2.概要设计2.1本程序中用到的抽象数据类型的定义如下:typedef struct studentchar num15;/学号char name15;/姓名float score 10;/平时成绩float SCORE;/总评成绩STU;2.2主程序的流程如图1.1 图1.1,main函数的流程2.3各程序模块之间的层次调用关系如图1.2所示 图1.2,各程序模

8、块之间的调用3.详细设计3.1程序开始预编译局部如下:#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h>typedef struct studentchar num15;/学号char name15;/姓名float score 10;/平时成绩float SCORE;/总评成绩STU;int File_n;/学生成绩管理文件的个数3.2对menu_1()函数的设计如下:/菜单1void menu_1()system("mode con col

9、s=100 lines=25");/窗口宽度 system("color 0B");/窗口颜色system("date /T");/显示日期system("TIME /T");/显示时间char password7;int flag;FILE *fp;/文件指针if(fp=fopen("系统文件.txt","r")=NULL)printf("系统文件不存在!n");exit(0);fscanf(fp,"%d %s %d",&flag,pa

10、ssword,&File_n);fclose(fp);printf("ttt您的当前位置:学生成绩管理nn");printf("ttttn"); printf("tttt 学生成绩管理 n"); printf("tttt n"); printf("tttt1.新建一个学生成绩管理文件 n"); printf("tttt n"); printf("tttt2.翻开已有的学生成绩管理文件(%3d) n",File_n); printf("tt

11、tt n"); printf("tttt3.设置密码 n"); printf("tttt n"); printf("tttt4.翻开帮助文档 n"); printf("tttt n"); printf("tttt5.退出系统 n"); printf("ttttn"); 3.3对menu_2()函数的设计如下/菜单2void menu_2()system("mode con cols=100 lines=1000");/窗口宽度 system(&q

12、uot;color 0E");/窗口颜色system("date /T");/显示日期system("TIME /T");/显示时间printf("ttt您的当前位置:学生成绩管理->新建一个学生成绩管理文件nn");printf("ttttn"); printf("tttt 新建一个学生成绩管理文件 n"); printf("tttt n"); printf("tttt1.输出刚刚新建的文件和学生的总体成绩 n"); printf(&qu

13、ot;tttt n"); printf("tttt2.输出成绩的直方图 n"); printf("tttt n"); printf("tttt3.输出总评成绩排在前n名的学生 n"); printf("tttt n"); printf("tttt4.清屏 n"); printf("tttt n");printf("tttt5.返回上一级 n"); printf("tttt n"); printf("tttt6.退出系

14、统 n"); printf("ttttn"); 3.4对menu_3()函数的设计如下/菜单void menu_3()system("mode con cols=100 lines=1000");/窗口宽度 system("color 0E");/窗口颜色system("date /T");/显示日期system("TIME /T");/显示时间printf("ttt您的当前位置:学生成绩管理->翻开已有的学生成绩管理文件nn");printf("t

15、tttn"); printf("tttt 翻开已有的学生成绩管理文件 n"); printf("tttt n"); printf("tttt1.输出此文件和学生的总体成绩 n"); printf("tttt n"); printf("tttt2.输出此文件的学生成绩的直方图 n"); printf("tttt n"); printf("tttt3.输出此文件总评成绩排在前n名的学生 n"); printf("tttt n");

16、 printf("tttt4.向此文件里增加学生 n"); printf("tttt n"); printf("tttt5.在此文件里删除学生 n"); printf("tttt n"); printf("tttt6.修改此文件里的学生的成绩 n");printf("tttt n"); printf("tttt7.清屏 n"); printf("tttt n"); printf("tttt8.返回上一级 n"); p

17、rintf("tttt n"); printf("tttt9.退出系统 n"); printf("ttttn"); 3.5对menu_4()函数的设计如下/菜单4void menu_4()system("mode con cols=100 lines=1000");/窗口宽度 system("color 0A");/窗口颜色system("date /T");/显示日期system("TIME /T");/显示时间printf("ttt您的当前位

18、置:学生成绩管理->设置密码nn");printf("ttttn"); printf("tttt 设置密码 n"); printf("tttt n"); printf("tttt1.修改密码 n"); printf("tttt n"); printf("tttt2.修改密保 n",File_n); printf("tttt n"); printf("tttt3.设置密码权限 n"); printf("tttt

19、n"); printf("tttt4.返回上一级 n"); printf("tttt n"); printf("tttt5.退出系统 n"); printf("ttttn"); 3.6对Read_System()函数的设计如下/扫描系统文件void Read_System()system("mode con cols=80 lines=25");/窗口宽度 system("color 0A");/设定显示字符的颜色int flag;/flag是系统的密码标志位,标志

20、用户是否设置过密码char password27;/用来存储系统密码和用户输入密码FILE *fp;/文件指针if(fp=fopen("系统文件.txt","r")=NULL)printf("系统文件不存在!n");exit(0);fscanf(fp,"%d %s %d",&flag,password0,&File_n);if(flag!=0)/标志用户设置了密码flag=0;/标志密码输入正确printf("您已设置过密码,请输入6位密码进入系统:");scanf("

21、%s",password1);getchar();for(int i=0;i<6;i+)if(password1i!=(password0i-(i+1)flag=i+1;/标志密码输入错误break;if(flag!=0)/密码输入是否正确?printf("您的密码输入有误!是否找回密码?n");printf("输入1确认找回,输入0退出程序:");scanf("%d",&flag);getchar();while(flag!=1 && flag!=0)printf("该选择无效!请重

22、新选择:");scanf("%d",&flag);getchar();if(flag=0)fclose(fp);printf("谢谢使用! 正在退出.n");exit(0);if(flag=1)char matter100,key230;/matter用来存放密保问题,key用来存放密保答案和用户输入的答案fscanf(fp," %s %s",matter,key0);printf("您的密保问题:%sn",matter);printf("请输入密保答案:");scanf(&q

23、uot;%s",key1);getchar();if(strcmp(key0,key1)=0)printf("密保答复正确!n");printf("您的密码为:");for(int i=0;i<6;i+)/解密密码printf("%c",password0i-(i+1);printf("n");fclose(fp);printf("请您记住密码!按Enter进入程序n");getchar();return ;elseprintf("密保答复错误!n");fcl

24、ose(fp);printf("谢谢使用! 正在退出.n");exit(0);fclose(fp);/关闭文件3.7对New()函数的设计如下/新建文件FILE* New()FILE *fp,*new_fp;/指向文件指针char 30;printf("nnnnnnnnn");printf("tttt 请输入新建文件名:");scanf("%s",);getchar();for(int i=0;i!='0'i+);i+='.'i+='t'i+='x'i

25、+='t'i='0'if(fp=fopen("系统文件.txt","a")=NULL)printf("系统文件不存在!n");exit(0);fprintf(fp," %s",);/把新建的文件名存储到系统文件中fseek(fp,9L,0);fscanf(fp,"%d",File_n);fclose(fp);if(fp=fopen("系统文件.txt","r")=NULL)/修改系统文件内容printf("翻开系统

26、文件失败!n");exit(0);if(new_fp=fopen("临时文件.txt","w")=NULL)printf("应用程序错误,建立临时文件失败!n");exit(0);char ch;/用于修改文件内容时存储临时数据for(i=0;!feof(fp);i+)if(i=9)fprintf(new_fp,"%d",File_n);while()i+;elsefseek(fp,i,0);fscanf(fp,"%c",&ch);fprintf(new_fp,"%c

27、",ch);fclose(fp);fclose(new_fp);system("del 系统文件.txt");system("rename 临时文件.txt 系统文件.txt");if(new_fp=fopen(,"w+")=NULL)printf("应用程序错误,新建文件失败!n");exit(0);return new_fp;3.8对Accept_data(FILE *fp)函数的设计如下/输入学生成绩并存储在文件中void Accept_data(FILE *fp)system("mode

28、 con cols=100 lines=1000");/窗口宽度 system("color 0E");int cnum;/cnum用来计算平时成绩次数int a1,a2;/用来接收总评成绩的比例STU *stu;printf("请输入计算总评成绩时使用平时成绩与期末成绩的比例,用整数表示n");printf("平时成绩所占比例:");scanf("%d",&a1);getchar();printf("期末成绩所占比例:");scanf("%d",&

29、a2);getchar();while(a1+a2)!=100)printf("您的输入有误!%d+%d=%d!n",a1,a2,a1+a2);printf("请重新输入!n");printf("平时成绩所占比例:");scanf("%d",&a1);getchar();printf("期末成绩所占比例:");scanf("%d",&a2);getchar();printf("请输入平时成绩的次数(09):");scanf("%d

30、",&cnum);getchar();while(cnum<=0 | cnum>9)printf("您的输入有误!请重新输入(09):");scanf("%d",&cnum);getchar();fprintf(fp," %d %d %dn",cnum,a1,a2);/存储平时成绩次数、分值比例float sum_score;/用来存放总的平时成绩printf("注意:输入的学号为"0"那么结束输入!n");for(int i=0;i+)sum_score=

31、0;if(stu=(STU*)malloc(sizeof(STU)=NULL)printf("内存分配失败!n");exit(0);printf("您正在输入第%d位学生的信息n",i+1);printf("学号:");scanf("%s",stu->num);getchar();if(strcmp(stu->num,"0")=0)free(stu);break;printf("姓名:");scanf("%s",stu->name);ge

32、tchar();for(int j=0;j<cnum;j+)printf("课程%d:",j+1);scanf("%f",&stu->scorej);getchar();while(stu->scorej>100 | stu->scorej<0)printf("您的输入有误!请重新输入,课程%d:",j+1);scanf("%f",&stu->scorej);getchar();sum_score+=stu->scorej;printf("期

33、末成绩:");scanf("%f",&stu->scorecnum);getchar();while(stu->scorecnum>100 | stu->scorecnum<0)printf("您的输入有误!请重新输入,期末成绩:");scanf("%f",&stu->scorecnum);getchar();stu->SCORE=(sum_score/cnum)*(a1/100.0)+(stu->scorecnum)*(a2/100.0);fprintf(fp

34、,"%s %s ",stu->num,stu->name);for(j=0;j<=cnum;j+)fprintf(fp,"%f ",stu->scorej);fprintf(fp,"%fn",stu->SCORE);free(stu);fseek(fp,0L,0);fprintf(fp,"%d ",i);/存储学生人数printf("输入完毕!n");printf("文件已保存!n");printf("按Enter键继续!")

35、;getchar();3.9对Show_data(FILE *fp)函数的设计如下/输出文件和学生的总体成绩void Show_data(FILE *fp)int cnum,pnum;/cnum用来存放平时成绩次数,pnum用来存放学生人数int a1,a2;/用来存放总评成绩的比例float max,min,temp,SCORE;/用来存放总评成绩最高分和最低分float aver3=0,0,0,avri3=0,0,0;/aver3存放平均分,avri3存放标准差float pass_num=0;/存放及格人数STU *stu;fscanf(fp,"%d %d %d %dn&quo

36、t;,&pnum,&cnum,&a1,&a2);/读平时成绩次数、分值比例printf("nn");if(pnum=0)printf("此文件里没有学生的成绩信息!n");printf("请按Enter键退出!n");getchar();return ;printf("输出的学生人数:%3d 学生平时成绩次数:%dn",pnum,cnum);printf("平时分值所占比例:%d% 期末成绩所占比例:%d%nn",a1,a2);printf("学号tt姓

37、名t");for(int i=0;i<cnum;i+)printf("课程%dt",i+1);printf("期末t总评n");max=0;for(i=0;i<pnum;i+)if(stu=(STU*)malloc(sizeof(STU)=NULL)printf("内存分配失败!n");exit(0);fscanf(fp,"%s %s ",stu->num,stu->name);printf("%-16s%-8s",stu->num,stu->nam

38、e);for(int j=0;j<cnum;j+)fscanf(fp,"%f ",&stu->scorej);aver0+=stu->scorej;printf("%-8.2f",stu->scorej);fscanf(fp,"%f ",&stu->scorej);aver1+=stu->scorej;fscanf(fp,"%fn",&stu->SCORE);aver2+=stu->SCORE;if(i=0)min=stu->SCORE;

39、if(stu->SCORE>=60)pass_num+;SCORE=stu->SCORE;if(max<stu->SCORE)temp=max;max=SCORE;SCORE=temp;SCORE=stu->SCORE;if(min>SCORE)temp=min;min=SCORE;SCORE=temp;printf("%-8.2f%-8.2fn",stu->scorej,stu->SCORE);free(stu);aver0=(aver0/(pnum*cnum);aver1=aver1/pnum;aver2=aver2

40、/pnum;fseek(fp,0L,0);fscanf(fp,"%d %d %d %dn",&pnum,&cnum,&a1,&a2);/读平时成绩次数、分值比例float temp1=0,temp2=0,temp3=0;/用于帮助计算标准差for(i=0;i<pnum;i+)if(stu=(STU*)malloc(sizeof(STU)=NULL)printf("内存分配失败!n");exit(0);fscanf(fp,"%s %s ",stu->num,stu->name);for(int j=0;j<cnum;j+)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1