> # ♻️ 资源
> **大小:** 112KB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010506**](https://www.yuque.com/sxbn/ks100010506)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87400265**](https://download.csdn.net/download/s1t16/87400265)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 1. 课程设计目的
《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
# 2. 课程设计任务与要求
本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
- 对系统进行功能需求分析
- 设计合理的数据结构和系统框架
- 界面设计美观、清楚、合理
- 编程简练,程序功能齐全,能正确运行
- 具有一定的创新性
- 说明书、流程图要清楚
- 课题完成后必须按要求提交课程设计报告
任务:
- 通过文件读入n个学生的学号、姓名和m门成绩
- n个学生某门课程的最高分和最低分
- m门课程的平均值
- 每个学生的平均值和总分
- 根据某个学生的某科成绩给出“优秀”、“良好”、“可以”、“较差”等级
# 3. 课程设计说明书
⑴功能描述
功能1.通过文件读入n个学生的学号、姓名和m门成绩
功能2. n个学生某门课程的最高分和最低分
功能3. m门课程的平均值
功能4.每个学生的平均值和总分
功能5.根据某个学生的某科成绩给出“优秀”、“良好”、“可以”、“较差”等级
⑵概要设计
模块结构图:
经过仔细分析题目得,学生管理系统,共可以分成5个模块,分别是学生信息文件读取模块,计算课程最高分和最低分模块、计算课程平均分模块、计算学生总分和平均分模块、根据学生成绩给出成绩等级模块,使用框图可以如下表示:
![2683819b05e3c0a14e57d2f78ad6d41f.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1712456998171-769151b0-1464-4bd9-9d89-b9a1abd34335.png#averageHue=%23ebebeb&clientId=u4e672060-ba57-4&from=paste&height=183&id=u978ed378&originHeight=229&originWidth=870&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=13861&status=done&style=none&taskId=u0fd34b32-86ef-4e12-8211-d31cfa3238b&title=&width=696)
⑶详细设计:
总体流程图:
![854ef9811f5bd9f8e3b7b8728d89e010.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1712457055708-6de03359-48cc-4748-be0a-096d6e20df45.png#averageHue=%23f5f5f5&clientId=u4e672060-ba57-4&from=paste&height=376&id=ude3ec7f0&originHeight=470&originWidth=734&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=29081&status=done&style=none&taskId=uefe70c6b-9aea-4b5f-af53-a5baab16919&title=&width=587.2)
核心功能流程图如下:
![b21622a6347051ec5a157891473d2047.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1712457070612-14e158e2-ada3-4c54-9392-a274093570b2.png#averageHue=%23f4f4f4&clientId=u4e672060-ba57-4&from=paste&height=288&id=u24fcdf44&originHeight=360&originWidth=402&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=19417&status=done&style=none&taskId=ufc295490-e91c-4bdc-a182-39245fb82a5&title=&width=321.6)
⑷代码实现
本系统总共5个模块:详细如下:
读取学生信息
作用:打开本地文件,进行学生信息的读取。
设计思路:使用C++中的ifstream数据类型打开函数,然后使用该文件进行输入。
代码如下:
```
void input(){
char tar[100];
cout << "请输入你要读取学生的文件,本系统自带data.txt" << endl;
cin >> tar;
ifstream myfile(tar);
myfile>>n>>m;
for(i = 0;i<n;i++){
myfile>>sno>>name;
for(j = 0;j<m;j++){
myfile>> g[j] ;
}
st[i].sno = sno;
st[i].name = name;
for(k = 0;k<m;k++){
st[i].grade[k] = g[k];
}
}
}
```
查找课程的最高分和最低分
作用:查找课程中的最高分和最低分
设计思路:刚开始先进行判断,输入是否有效,然后根据用户的输入课程号使用for循环进行查询,比较。
代码如下:
```
void min_max(){ //课程最高和最低成绩 (课程号)
int num;
while(1){
cout<<"请输入要查询最高分和最低分的课程号:"<<endl;
cin >> num;
if(num > m || num < 1){
cout<<"输入出错,请重新输入:"<<endl;
continue;
}
num--;
double grad[N] = {0};
for(i = 0;i<n;i++){
grad[i] = st[i].grade[num];
}
sort(grad,grad + n);
cout<<"此课程最高分为:"<<grad[n-1]<<' '<<"最低分为:"<<grad[0]<<endl;
if(check(flag)){
break;
}
}
}
```
计算课程的平均分
作用:计算每个课程的平均分
设计思路:使用第一个for循环进行课程的遍历,使用第二个for循环进行学生的遍历,最终可计算出每门课程的平均成绩
代码如下:
```
void avg_course(){ //m门课程的平均成绩
int avg[N];
for(i = 0;i<m;i++){
double re = 0;
for(j = 0;j<m;j++){
re += st[i].grade[i];
}
re /= n;
avg[i] = re;
cout<<"第"<<i+1<<"门课程的平均成绩为:"<<re<<endl;
}
}
```
计算学生成绩的平均分
作用:计算出所有学生的平均分。
设计思路:使用第一个for循环进行学生的遍历,使用第二个for循环进行课程的遍历,最终可计算出每个学生的总分和平均分。
代码如下:
```
void avg_st(){ //每个学生的平均成绩和总分
for(i = 0;i<n;i++){
double re = 0;
for(j = 0;j< m;j++){
re += st[i].grade[j];
}
cout<<"学号为:"<<st[i].sno<<' '<<"姓名为:"<<st[i].name<<' '<<"总分为:"<<re<<' ';
re /= m;
cout<<"平均成绩为:"<<re<<endl;
}
}
```
计算学生成绩等级
作用:根据用户的输入,查询学生的成绩等级。
设计思路:首先提示用户输入学生的学号和课程号,然后通过分支结构,90分以上为优秀,70-90为良好,60-70为良好,60以下为差,最终给出用户的查询结果。
代码如下:
```
void seclect(){ //根据成绩给等级
while(1){
while(1){
cout<<"请输入要查询学生的学号和课程号:"<<endl;
cin>> stud >> course;
double grade = -1;
for(i = 0;i<n;i++){
if(st[i].sno == stud)
grade = st[i].grade[course];
}
if(grade == -1)
cout<<"查找失败"<<endl;
if(grade <= 100 && grade >= 90){
cout<<"该同学成绩为优秀"<<endl;
break;
}
if(grade < 90 && grade >= 70){
cout<<"该同学成绩为良好"<<endl;
break;
}
if(grade < 70 && grade >= 60){
cout<<"该同学成绩为可以"<<endl;
break;
}
if(grade < 60){
cout<<"该同学成绩为较差"<<endl;
break;
}
}
if(check(flag)){
break;
}
}
}
```
# 4. 课程设计成果
系统自带学生信息文件
![d9d7b40480735f0bde48e0aa895cb679.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1712457239497-0051a84b-8670-4415-8c77-01a393ba4827.png#averageHue=%23f9f7f6&clientId=u4e672060-ba57-4&from=paste&height=119&id=ucf52167f&origin
没有合适的资源?快使用搜索试试~ 我知道了~
基于C++实现(控制台)学生成绩管理系统【100010506】
共5个文件
cpp:1个
txt:1个
doc:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 87 浏览量
2023-01-28
10:17:40
上传
评论
收藏 114KB ZIP 举报
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010506 学生成绩管理系统共可以分成5个模块,分别是学生信息文件读取模块、计算课程最高分和最低分模块、计算课程平均分模块、计算学生总分和平均分模块、根据学生成绩给出成绩等级模块。
资源推荐
资源详情
资源评论
收起资源包目录
100010506-基于C++实现(控制台)学生成绩管理系统.zip (5个子文件)
grademanagement
data.txt 61B
LICENSE 1KB
main.cpp 3KB
学生成绩管理系统.doc 181KB
README.md 12KB
共 5 条
- 1
资源评论
神仙别闹
- 粉丝: 3778
- 资源: 7469
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功