计算机高级语言课程设计C学生成绩管理系统.docx
- 文档编号:10678858
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:25
- 大小:123.42KB
计算机高级语言课程设计C学生成绩管理系统.docx
《计算机高级语言课程设计C学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《计算机高级语言课程设计C学生成绩管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
计算机高级语言课程设计C学生成绩管理系统
本科生课程论文封面
课程名称计算机高级语言课程设计(C)
教师姓名
本科生姓名
本科生学号
本科生专业
所在院系
类别
日期
目录1
1.题目要求2
2.需求分析2
3.总体设计2
3.1功能模块划分及流程图2
3.2数据结构设计2
4.详细设计3
4.1主函数3
4.2各功能模块设计7
5.上机操作15
5.1数据源说明15
5.2编译、链接和运行15
5.3运行结果16
6.总结19
7.致谢20
参考文献21
1.题目要求
某学期某班级学生成绩见文件“”,该学期课程的相关信息见“”,请根据上述两个文件编写代码实现如下功能:
(1)统计该班级学生的学习科目数、总分、所修学分数、不及格科目数、不及格学分;
(2)计算各个学生的成绩绩点;
课程绩点计算方式
(成绩/10.0-5)
学分绩点计算方式
∑(课程绩点*该课程学分*该课程权重)/∑(课程学分)
2.需求分析
根据题目要求,由于学生成绩信息与学期课程相关信息存放于文件中,所以应提供文件的读取,输出等操作;在程序中需要根据相应数据进行计算,所以应提供显示、查找、排序等操作;另外,还应提供键盘式的选择菜单来实现功能选择。
3.总体设计
3.1功能模块划分及流程图
根据上面的需求分析,可以将该系统的设计分为大模块,即查询模块、浏览模块、统计模块、排序模块、输出模块、退出模块。
学生课程成绩查询系统
查询
浏览
统计
排序
输出
退出
3.2数据结构设计
本系统的实现,全部采用链表这种数据结构,用链表实现课程的查询、浏览、统计、学生成绩信息、挂科情况、以及绩点排序输出,读入的课程信息、读入的学生成绩信息、学生信息统计采用的是结构体这种数据结构。
读入学生成绩信息结构体
{
[11];学号
[10];姓名
g[];所选课程
}[];
读入课程信息结构体
{
[30];课程名称
;学分
[5];课程类型
}[];
学生信息统计结构体
{
[11];学号
[10];姓名
;课程数目
;总分
;学分
;挂科科目
;挂科学分
;绩点
}[];
4.详细设计
4.1主函数
开始
读取学生课程文件
读取文件
读取课程信息文件
信息统计
结束
【主函数流程图】
【程序】
()
{
i=0=0;
*1,*2;
[50];
=1;
(i=0<)
{
(j=0<30)
{
[i][j]='\0'课程名称
}
}
("********************************************************************************\n");
("欢迎使用学生课程查询系统\n");
("制作人:
174131班王雪峰\n");
("********************************************************************************");
("开始读取文件...\n");
1=("","")打开第一个文件
(1)
{
("!
!
!
无法读取文件\n");
;
}
{
i=0;
j=0;
n=0;
[500];
(,5001);
([i]'\n')统计学习科目
{
([i]'')''空格号
{
([1]'')
{
}
{
;
}
}
;
}
1;
i=10;
([i]'\n')读取学习科目名称
{
([i]'')
{
[j][]='\0'‘\0’是字符串结束符
}
{
[j][]=[i];
}
([i]'')
{
([1]'')
{
}
{
n=0;
;
}
}
;
}
[13][27]='\0';
(i=0<)读取学习科目成绩
{
(1,""[i][i]);
(j=0<)
{
(1,""[i][j]);
}
}
}
("读取完毕\n");
("开始读取文件...\n")读取第二个文件
2=("","");
(2)
{
("!
!
!
无法读取文件\n");
;
}
{
[500];
(,5002);
(i=0<)
{
(2,""[i][i][i]);
}
}
(i=0<)读取课程信息
{
(j=0<)
{
(([i][j])0)
{
[i]=[j];
(([j],"必修"))
{
[j]=1.2;
}
(([j],"选修"))
{
[j]=1.0;
}
{
[j]=1.1;
}
}
}
}
("读取完毕\n");
(1);
(2);
();统计
4.2各功能模块设计
(1)具体功能菜单模块
【需求分析】
功能菜单模块设计比较简单,主要功能为提供数据查询,处理,选择和部分函数的调运。
其中各功能菜单模块用菜单方式选择。
【流程图】
开始
显示一系列功能选项
输入n,判断n是否是1~4
Y
N
1,输入m,则判断m是否是1~3
1,调用其他功能模块函数
根据n的值调用个功能模块函数
结束
根据m的值调用个功能模块函数
N
Y
【程序】
()
{
n=0;
i=0;
j=0;
w;
("********************************************************************************\n");
("|1-查询学生信息|\n");
("|2-浏览挂科信息|\n");
("|3-绩点排序输出|\n");
("|4-退出查询系统|\n");
("********************************************************************************");
("请输入相应数字进行查询:
");
("");
(n1)
{
m=0;
("********************************************************************************\n");
("|1-查看各位成绩信息|\n");
("|2-查看同学各科成绩|\n");
("|3-请返回上一层菜单|\n");
("********************************************************************************\n");
("请输入相应数字进行查询:
");
("");
(m1)
{
s[20];
("**************************\n");
("请输入学号或姓名进行查询:
\n");
("**************************\n");
("");
(s[0]'1')
{
(i=0<)
{
(([i])0)
{
("学号\n"[i]);
("姓名\n"[i]);
("该学生的学习科目数\n"[i]);
("学分绩点\n"[i]);
("总分\n"[i]);
("所修学分数\n"[i]);
("不及格科目数\n"[i]);
("不及格学分.1f\n"[i]);
("\n");
}
}
}
{
(i=0<)
{
(([i])0)
{
("学号\n"[i]);
("姓名\n"[i]);
("该学生的学习科目数\n"[i]);
("学分绩点\n"[i]);
("总分\n"[i]);
("所修学分数\n"[i]);
("不及格科目数\n"[i]);
("不及格学分.1f\n"[i]);
}
}
}
}
(m2)
{
s[20];
("|请输入学号或姓名进行查询|:
\n");
("");
(s[0]'1')
{
(i=0<)
{
(([i])0)
{
("学号\n"[i]);
("姓名\n"[i]);
("学分绩点\n"[i]);
(j=0<)
{
(""[j]);
("\n");
("\n"[i][j]);
}
("\n");
}
}
}
{
(i=0<)
{
(([i])0)
{
("学号\n"[i]);
("姓名\n"[i]);
("学分绩点\n"[i]);
(j=0<)
{
([i][j]>0)
{
(""[j]);
("\n");
("\n"[i][j]);
}
}
}
}
}
}
}
(n2)
{
("\n本学期挂科学生有如下:
\n");
(i=0<)
{
([i]0)
{
("\n**********************************\n");
("*学号*:
*姓名*:
\n"[i][i]);
("**********************************\n");
("**挂科科目有**:
\n");
("**********************************\n");
0;
(j=0<)
{
(([i][j]<60)([i][j]>0))
{
("\n"[j]);挂科项目
}
}
("共挂科门\n");
}
}
}
(n3)
{
();排序
}
(n4)
{
("\n****************!
请按任意键退出!
*********************\n");
("\n");
;
}
{
(n<1>5)
{
1;
();
("\n!
!
!
!
!
!
!
!
!
!
!
!
!
您的输入有误,请重新重新输入!
!
!
!
!
!
!
!
!
!
!
\n");
}
0;
}
}
}
(2)挂科统计模块
【需求分析】
该功能模块主要根据题目要求,通过上述数据显示,进行相关挂科统计得到的相应信息。
【流程图】
开始
读取学生课程信息数据
选课各科成绩>=60
输出相应数据到程序界面
返回主菜单
结束
Y
N
【程序】
(){
i=0;
j=0;
("统计学生成绩信息完毕,请进行相关查询....\n");
(i=0<)统计相关信息
{
=0总分
c=0总学分
=0学分绩点计算分子
f=0挂科数
=0挂科学分
0科目数
([i][i]);
([i][i]);
(j=0<)
{
(([i][j]<60)([i][j]>0))
{
;
[j];
}
[i][j];
([i][j]0)
{
;
c[j];
([i][j]>=60)
([i][j]/10.0-5)*[j]*[j]学分绩点计算
([i][j]<60)
=0;
}
}
[i]科目数
[i]=f;挂科数
[i]=;挂科学分
[i]=;总分
[i]=c;总学分
[i]=;学分绩点
}
}
(3)绩点排序显示输出模块
【需求分析】
该模块功能是根据上述数据,运用相关计算方法,进行简单计算后,利用冒泡排序法对绩点大小进行排序,并输出至文件中。
【流程图】
开始
读取学生课程信息
依次选取学生所选课程的学分以及对应成绩,计算学生选课绩点
依据公式进行绩点计算
绩点排序
输出至文件
返回主菜单
结束
【程序】
()
{
("开始根据绩点排序...\n");
*;
=("","w");
i=0;
j=0;
(i=0<)冒泡排序
{
(j=0<)
{
;
([i]>[j])
{
=[i];
[i]=[j];
[j]=;
}
}
}
("学号姓名绩点\n");
(0<)
{
("\n"[i][i][i]);
}
();
("已经将绩点信息输出至文件内,可以进行查看\n");
(i=0<)
{
(,"\n"[i][i][i]);使得信息输出到指定的文件
}
();
}
5.上机操作
5.1数据源说明
由于数据是之前存储在文件中,所以数据形式等不需要太大形式的改动,只需要适当更改代码间隔等来实现数据的读取,从而对数据进行合理的运用。
5.2编译、链接和运行
减压压缩包全部文件,即可打开运行,可能会出现错误,请注意需要减压压缩文件全部内容,才可以正常运行。
5.3运行结果
【具体功能菜单】
【学生相关信息查询】
【各位成绩信息】——以同学为例
【同学各科成绩】——以同学为例
【挂科信息查询】
【绩点排序输出功能】
【输出到文件】
6.总结
这次c语言课程设计虽然准备不足,仓促赶工,但是最后还是勉强的把程序基本框架以及程序运行写好,但其中还有几多小错误,比如说只能用自己的文件打开以后运行c程序才是可以较完整的运行,而用老师的原件打开以后,读取会出现错误,尤其是在绩点排序的问题上,最后不断地修改,但还是无能为力,加上对c语言的淡忘,原本还掌握些许技巧,但现在实在是改不好,找了同学帮忙结果他们也不会改,我只能说我尽力了,真的改不下去了,还希望老师能谅解,毕竟学完之后这么久,再加上有许多概念已经不清楚了,所以学习过后还是有些力不存心。
程序可以运行,有些地方也可以有正确的答案,但是在绩点排序问题上无法解决,这点让我自己很失望,改了好多次,但是还是有些不对,最终还是感觉有错误,还请老师批评。
当然,这次程序设计也给我能复习c语言起到了一定的帮助作用,虽然写过报告之后可能又会忘记,但是能再学一次也无妨不是好事,总体来说这次c语言实习是充实的。
7.致谢
参考文献
[1]谭浩强.C程序设计(第三版)[M].北京:
清华大学出版社,2005.
[2]张冬梅,刘远兴,陈晶,等.基于的C语言课程设计及学习指导[M].北京:
清华大学出版社,2011.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 高级 语言 课程设计 学生 成绩管理系统
![提示](https://static.bdocx.com/images/bang_tan.gif)