计算机高级语言课程设计(C)学生成绩管理系统_第1页
计算机高级语言课程设计(C)学生成绩管理系统_第2页
计算机高级语言课程设计(C)学生成绩管理系统_第3页
计算机高级语言课程设计(C)学生成绩管理系统_第4页
计算机高级语言课程设计(C)学生成绩管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科生课程论文封面课程名称 计算机高级语言课程设计(C)教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类 别 日 期 目 录目 录11. 题目要求22. 需求分析23.总体设计23.1功能模块划分及流程图23.2数据结构设计24.详细设计34.1主函数34.2各功能模块设计75.上机操作155.1数据源说明155.2编译、链接和运行155.3运行结果166.总结197.致谢20参考文献211. 题目要求某学期某班级学生成绩见文件“lecture_grade.txt”,该学期课程的相关信息见“lecture.txt”,请根据上述两个文件编写代码实现如下功能:(1)统计该班级学生的学习科

2、目数、总分、所修学分数、不及格科目数、不及格学分;(2)计算各个学生的成绩绩点;课程绩点计算方式(成绩/10.0 - 5)学分绩点计算方式(课程绩点*该课程学分*该课程权重) / (课程学分)2. 需求分析根据题目要求,由于学生成绩信息与学期课程相关信息存放于文件中,所以应提供文件的读取,输出等操作;在程序中需要根据相应数据进行计算,所以应提供显示、查找、排序等操作;另外,还应提供键盘式的选择菜单来实现功能选择。3.总体设计3.1功能模块划分及流程图根据上面的需求分析,可以将该系统的设计分为大模块,即查询模块、浏览模块、统计模块、排序模块、输出模块、退出模块。学生课程成绩查询系统输出浏览统计查

3、询排序退出3.2数据结构设计 本系统的实现,全部采用链表这种数据结构,用链表实现课程的查询、浏览、统计、学生成绩信息、挂科情况、以及绩点排序输出,读入的课程信息、读入的学生成绩信息、学生信息统计采用的是结构体这种数据结构。struct student /读入学生成绩信息结构体char sno11; /学号char name10; /姓名int gLEC_SIZE; /所选课程stuSTU_SIZE;struct lecture /读入课程信息结构体char lname30; /课程名称float credit; /学分char type5; /课程类型lecLEC_SIZE;struct st

4、u_grade /学生信息统计结构体char sno11; /学号char name10; /姓名int number; /课程数目int sum; /总分float credit; /学分int fail; /挂科科目float failc; /挂科学分float gpa; /绩点stugSTU_SIZE; 4.详细设计4.1主函数开始【主函数流程图】读取文件读取课程信息文件读取学生课程文件信息统计结束【程序】void main()int i = 0,j = 0;FILE *fp1,*fp2;char file50;int flag = 1;for(i = 0;i < LEC_SIZE

5、;i+)for(j = 0;j < 30;j+)lecturenameij = '0'/课程名称printf("*n"); printf(" 欢迎使用学生课程查询系统 n");printf(" 制作人:174131班 王雪峰 n"); printf("*");printf("开始读取lecture_grade.txt文件.n");fp1 = fopen("lecture_grade.txt","rb");/打开第一个文件if(fp1

6、= NULL)printf("!无法读取文件n");return;elsei = 0;j = 0;int n = 0;char str500;fgets(str,500,fp1);while(stri != 'n') /统计学习科目if(stri = ' ')/''空格号if(stri+1 = ' ')elselecturesum+;i+;lecturesum -=1;i = 10;while(stri != 'n') /读取学习科目名称 if(stri = ' ')lectur

7、enamejn+ = '0'/0是字符串结束符elselecturenamejn+ = stri;if(stri = ' ')if(stri+1 = ' ')elsen = 0;j+;i+;lecturename1327 = '0'for(i = 0;i < STU_SIZE;i+) /读取学习科目成绩fscanf(fp1,"%s %s",stui.sno,);for(j = 0;j < lecturesum;j+)fscanf(fp1,"%d",&st

8、ui.gj);printf("读取完毕n");printf("开始读取lecture.txt文件.n");/读取第二个文件fp2 = fopen("lecture.txt","rb");if(fp2 = NULL)printf("!无法读取文件n");return;elsechar str500;fgets(str,500,fp2);for(i = 0;i < LEC_SIZE;i+)fscanf(fp2,"%s %f %s",leci.lname,&leci.

9、credit,leci.type);for(i = 0;i < lecturesum;i+)/读取课程信息for(j = 0;j < LEC_SIZE;j+)if(strcmp(lecturenamei,lecj.lname) != 0)crediti = lecj.credit;if(strcmp(lecj.type,"必修")quanzhongj = 1.2;else if(strcmp(lecj.type,"选修")quanzhongj = 1.0;elsequanzhongj = 1.1;printf("读取完毕n"

10、;);fclose(fp1);fclose(fp2);count(); /统计4.2各功能模块设计(1) 具体功能菜单模块【需求分析】功能菜单模块设计比较简单,主要功能为提供数据查询,处理,选择和部分函数的调运。其中各功能菜单模块用菜单方式选择。【流程图】开始显示一系列功能选项N输入n,判断n是否是14Y根据n的值调用个功能模块函数Nn!=1,调用其他功能模块函数n=1,输入m,则判断m是否是13Y根据m的值调用个功能模块函数结束【程序】while(flag) int n = 0;int i = 0;int j = 0;int w;printf("*n"); printf(

11、"| 1-查询学生信息 |n"); printf("| 2-浏览挂科信息 |n");printf("| 3-绩点排序输出 |n");printf("| 4-退出查询系统 |n"); printf("*");printf("请输入相应数字进行查询:");scanf("%d",&n);if(n =1)int m = 0;printf("*n");printf("| 1-查看各位成绩信息 |n");printf(&

12、quot;| 2-查看同学各科成绩 |n");printf("| 3-请返回上一层菜单 |n");printf("*n");printf("请输入相应数字进行查询:");scanf("%d",&m);if(m = 1)char s20;printf("*n");printf("请输入学号或姓名进行查询 :n");printf("*n");scanf("%s",s);if(s0 = '1')for(i =

13、 0;i < STU_SIZE;i+)if(strcmp(stugi.sno,s) = 0)printf("学号:%sn",stugi.sno);printf("姓名:%sn",);printf("该学生的学习科目数:%dn",stugi.number);printf("学分绩点:%fn",stugi.gpa);printf("总分:%dn",stugi.sum);printf("所修学分数:%.fn",stugi.credit);printf(&q

14、uot;不及格科目数:%dn",stugi.fail);printf("不及格学分:%.1fn",stugi.failc);printf("n");elsefor(i = 0;i < STU_SIZE;i+)if(strcmp(,s) = 0)printf("学号:%sn",stugi.sno);printf("姓名:%sn",);printf("该学生的学习科目数:%dn",stugi.number);printf("学分绩点:

15、%fn",stugi.gpa);printf("总分:%dn",stugi.sum);printf("所修学分数:%.fn",stugi.credit);printf("不及格科目数:%dn",stugi.fail);printf("不及格学分:%.1fn",stugi.failc);else if(m = 2)char s20;printf("|请输入学号或姓名进行查询|:n");scanf("%s",s);if(s0 = '1')for(i =

16、0;i < STU_SIZE;i+)if(strcmp(stugi.sno,s) = 0)printf("学号:%sn",stugi.sno);printf("姓名:%sn",);printf("学分绩点:%fn",stugi.gpa);for(j = 0;j < lecturesum;j+)printf("%s",lecturenamej);printf("n");printf("%dn",stui.gj);printf("n&qu

17、ot;);elsefor(i = 0;i < STU_SIZE;i+)if(strcmp(,s) = 0)printf("学号:%sn",stugi.sno);printf("姓名:%sn",);printf("学分绩点:%fn",stugi.gpa);for(j = 0;j < lecturesum;j+)if(stui.gj>0)printf("%s",lecturenamej);printf("n");printf("%d

18、n",stui.gj);else if(n =2)printf("n本学期挂科学生有如下: n");for(i = 0;i<STU_SIZE;i+)if(stugi.fail != 0)printf("n*n");printf("*学号*:%s *姓名*:%sn",stugi.sno,);printf("*n");printf("*挂科科目有*:n");printf("*n");int p=0;for(j = 0;j<lectures

19、um;j+)if(stui.gj < 60)&&(stui.gj > 0)printf("%sn",lecturenamej),p+; /挂科项目printf("共挂科 %d 门n",p);else if(n = 3)sort(); /排序else if(n = 4)printf("n*!请按任意键退出!*n");printf("n");return;else if(n<1|n>5)w=1;getchar();printf("n!您的输入有误,请重新重新输入!n&q

20、uot;);else w=0;(2) 挂科统计模块【需求分析】该功能模块主要根据题目要求,通过上述数据显示,进行相关挂科统计得到的相应信息。【流程图】开始读取学生课程信息数据N选课各科成绩>=60Y输出相应数据到程序界面返回主菜单结束【程序】void count()int i = 0;int j = 0;printf("统计学生成绩信息完毕,请进行相关查询.n");for(i = 0;i < STU_SIZE;i+) /统计相关信息int sum = 0;/ 总分float c = 0;/ 总学分float gpasum = 0;/ 学分绩点计算分子int f

21、= 0;/ 挂科数float fc = 0;/ 挂科学分int d=0;/科目数strcpy(stugi.sno,stui.sno);strcpy(,);for(j = 0;j < lecturesum;j+)if(stui.gj < 60)&&(stui.gj >0)f+;fc += creditj;sum += stui.gj;if(stui.gj != 0)d+;c += creditj;if(stui.gj>=60)gpasum += (stui.gj/10.0 - 5) * creditj * quanzh

22、ongj;/学分绩点计算if(stui.gj<60)gpasum = 0;stugi.number=d;/科目数stugi.fail = f; /挂科数stugi.failc = fc; /挂科学分stugi.sum = sum; /总分stugi.credit = c; /总学分stugi.gpa = gpasum/c; /学分绩点(3) 绩点排序显示输出模块【需求分析】该模块功能是根据上述数据,运用相关计算方法,进行简单计算后,利用冒泡排序法对绩点大小进行排序,并输出至文件中。【流程图】开始读取学生课程信息依次选取学生所选课程的学分以及对应成绩,计算学生选课绩点依据公式进行绩点计算绩

23、点排序输出至文件返回主菜单结束【程序】void sort()printf("开始根据绩点排序.n");FILE *fp;fp = fopen("out.txt","w");int i = 0;int j = 0;for(i = 0;i <STU_SIZE;i+) /冒泡排序for(j = 0;j<STU_SIZE;j+)stu_grade temp;if(stugi.gpa>stugj.gpa)temp = stugi;stugi = stugj;stugj = temp;printf("-学号-姓名-绩点-n");for(i=0;i<STU_SIZE;i+)printf(" %s %s %fn",stugi.sno,,stugi.gpa);getchar();printf("已经将绩点信息输出至文件内out.txt,可以进行查看n");for(i = 0;i <STU_SIZE;i+)fprintf(fp,"%s %s %fn",stugi.sno,stu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论