【期末满分作业】C语言程序设计 实训1——奖学金评定系统的设计与实现(附带实验报告、源码以及解释)
大家好,各位努力奋斗的大学生小伙伴们!今天,我将带你们领略一项令人惊叹的程序设计奇迹——《奖学金评定系统》!是不是感到激动呢?别急,让我为你们揭开这个能让你在C语言程序设计中拿满分的秘密武器!
首先放成绩单cancan实力(bushi。。。
要求:
一、系统设计
1.设计2022-2023-1学期,班级学生成绩管理系统的数据结构,着眼于实际需要和问题解决,设计合理的数据类型;
2.设计学号输入方式,保证学号格式规范,学号与专业、班级、入学年份匹配;
3.成绩输入按实际情况,出一门成绩,录入一次,并做好统计已录入成绩门次;
4.所有课程成绩录入完毕,并经确认无误之后才能进行计算均分、计算获得学分和奖学金评定;
5.设计修改功能,防止信息录入错误,无法修改,影响后续功能的完成;
6.以二维表格形式输出班级所有学生信息,表头使用中文名称;
7.根据业务课程综合成绩评选.一、二、三等奖学金,获奖信息输出准确,包括获奖学生的全部信息;
8.设计思路明确,采用自顶向下的程序设计,系统组织架构清晰,模块功能明确,
二、编程
1.格式书写规范(锯齿状);
2.鼓励采用函数式多文件结构;
3.减少使用全局变量;
4.代码通俗易懂;
5.程序运行流畅,交互友好、操作方便;
三、系统测试
1.所有功能均需符合实际应用情况,均需进行测试;
2.必须经过大量数据测试,保证运行结果的正确;
四、报告
1.内容部分:包括封面、目录、正文(系统设计、功能描述、总结);
2.封面部分:C语言程序设计实训1(黑体三号居中)、实训内容、班级、学号、姓名、完成日期(宋体四号居中);
3.正文部分:系统设计描述清晰,功能描述需要和截图匹配(截图大小每副运行截图12*8cm,居中显示);
4.总结部分:总结描述客观;
5.文件采用学号+姓名.doc格式
五、其他
1.独立完成;
2.按时完成;
3.在实训过程中,遵守职业操守,做有温度的人,写有温度的代码,切实提高自己综合应用开发能力,不断巩固职业素养。
一、简介
奖学金评定系统的整体功能都包括主菜单、子菜单、录入学生成绩、修改学生成绩、导出学生成绩、删除学生信息、对学生进行排名、评定奖学金、查看个人成绩、查看班级成绩、查看个人班级排名、查看不及格课程等功能,以下目录为程序的基本功能:
二、程序功能展现
1.主菜单功能
可以选择教师端或者学生端以实现不同功能
2.子菜单功能
设计两个菜单,根据不同用户的需要可实现不同的功能
3.录入学生成绩功能(教师端)
以下为测试数据:
将学生信息导入,如果录入时学号相同或者成绩不符合规范将会提示错误并且重新输入成绩。
4.修改学生成绩功能(教师端)
可对录入的成绩进行修改,并对输入正确性进行检测,而且进行学分的修改,设计修改功能,防止信息录入错误,无法修改,影响后续功能的完成
5.导出学生成绩功能(教师端)
可以以二维表格形式输出班级所有学生信息,表头使用中文名称
6.删除学生信息功能(教师端)
可对输入学生的信息进行删除
7.对学生进行排名功能(教师端)
可实现依据总分对学生进行排名,并导出成绩单
8.评定奖学金功能(教师端)
可评出学分修满且成绩优异的三名学生,若有科目不及格将不会进行奖学金的评定
9.查看个人成绩功能(学生端)
可供学生输入学好查寻自己的成绩
10.查看班级成绩(学生端)
可供学生查看班级成绩单
11.查看个人班级排名功能(学生端)
可供学生查询自己在班级中的排名
12.查看不及格课程功能(学生端)
可供学生查询自己不及格的课程,若全部及格则输出无,否则则输出不及格的课程
三、完整代码
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;struct Node{char id[20];char name[10];double credit;double maths;double PE;double history;double introduction;double English;double design; double sum;double score;
};
Node stu[100];
int num=0;bool cmp(Node x,Node y){return x.sum>y.sum;
}int serch(char ID[]){for(int i=1;i<=num;i++){if(strcmp(stu[i].id,ID)==0) {return i;} }return -1;
}int serch1(char ID[]){for(int i=1;i<num;i++){if(strcmp(stu[i].id,ID)==0) {return i;} }return -1;
}void input(){while(1){num++; printf("请输入学号:");cin>>stu[num].id;while(serch1(stu[num].id)!=-1){printf("学号重复,请重新输入!!!\n");printf("请输入学号:");cin>>stu[num].id;getchar();}printf("请输入姓名:");scanf("%s",stu[num].name);getchar();printf("请输入高等数学成绩:");scanf("%lf",&stu[num].maths);while(stu[num].maths>100||stu[num].maths<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[num].maths);}if(stu[num].maths>=60){stu[num].score+=5;} printf("请输入大学体育成绩:");scanf("%lf",&stu[num].PE);while(stu[num].PE>100||stu[num].PE<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[num].PE);}if(stu[num].PE>=60){stu[num].score+=1;} printf("请输入中国近代史纲要成绩:");scanf("%lf",&stu[num].history);while(stu[num].history>100||stu[num].history<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[num].history);}if(stu[num].history>=60){stu[num].score+=2;}printf("请输入软件技术导论成绩:");scanf("%lf",&stu[num].introduction);while(stu[num].introduction>100||stu[num].introduction<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[num].introduction);}if(stu[num].introduction>=60){stu[num].score+=2;}printf("请输入大学英语成绩:");scanf("%lf",&stu[num].English);while(stu[num].English>100|stu[num].English<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[num].English);}if(stu[num].English>=60){stu[num].score+=4;}printf("请输入C语言程序设计成绩:");scanf("%lf",&stu[num].design);while(stu[num].design>100||stu[num].design<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[num].design);}if(stu[num].design>=60){stu[num].score+=4;}stu[num].sum=stu[num].maths+stu[num].PE+stu[num].history+stu[num].introduction+stu[num].English+stu[num].design;string choice; printf("是否继续输入?(是/否)\n");cin>>choice;system("cls");if(choice=="否"){return;}}
}void revise(){while(1){char ID[20];int index;printf("请输入要修改的学生的学号:");while(1){scanf("%s",&ID);getchar();index=serch(ID); if(index==-1){printf("该学生不存在,请重新输入!\n");}else{break;}}int choice;printf("请输入您要修改的学生信息:\n");printf("1.修改姓名\n");printf("2.修改高等数学成绩\n");printf("3.修改大学体育成绩\n");printf("4.修改中国近代史纲要成绩\n");printf("5.修改软件技术导论成绩\n");printf("6.修改大学英语成绩\n");printf("7.修改C语言程序设计成绩\n");scanf("%d",&choice);int f=0;switch(choice){case 1: printf("请输入姓名:");scanf("%s",stu[num].name);getchar();break;case 2:printf("请输入高等数学成绩:");if(stu[index].maths<60){f=1;}scanf("%lf",&stu[index].maths);while(stu[index].maths>100||stu[index].maths<0){printf("输入错误,请重新输入!!!\n");scanf("%d",&stu[index].maths);}if(stu[index].maths>=60&&f==1){stu[index].score+=5;} getchar();break;case 3: printf("请输入大学体育成绩:");if(stu[index].PE<60){f=1;}scanf("%lf",&stu[index].PE);while(stu[index].PE>100||stu[index].PE<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[index].PE);}if(stu[index].PE>=60&&f==1){stu[index].score+=1;} getchar();break;case 4: printf("请输入中国近代史纲要成绩:");if(stu[index].history<60){f=1;}scanf("%lf",&stu[index].history);while(stu[index].history>100||stu[index].history<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[index].history);}if(stu[index].history>=60&&f==1){stu[index].score+=2;}getchar();break;case 5:printf("请输入软件技术导论成绩:");if(stu[index].introduction){f=1;}scanf("%lf",&stu[index].introduction);while(stu[index].introduction>100||stu[index].introduction<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[index].introduction);}if(stu[index].introduction>=60&&f==1){stu[index].score+=2;}getchar();break;case 6: printf("请输入大学英语成绩:");if(stu[index].English<60){f=1;}scanf("%lf",&stu[index].English);while(stu[index].English>100|stu[index].English<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[index].English);}if(stu[index].English>=60&&f==1){stu[index].score+=4;}getchar();break;case 7: printf("请输入C语言程序设计成绩:");if(stu[index].design<60){f=1;}scanf("%lf",&stu[index].design);while(stu[index].design>100||stu[index].design<0){printf("输入错误,请重新输入!!!\n");scanf("%lf",&stu[index].design);}if(stu[index].design>=60&&f==1){stu[index].score+=4;}getchar();break;} stu[index].sum=stu[index].maths+stu[index].PE+stu[index].history+stu[index].introduction+stu[index].English+stu[index].design;system("cls");string choice2;printf("是否继续修改?(是/否)\n");cin>>choice2;if(choice2=="否"){return;}}}void inquire(){char ID[20];int index;printf("请输入要查找的学生的学号:");while(1){scanf("%s",&ID);getchar();index=serch(ID); if(index==-1){printf("该学生不存在,请重新输入!\n");}else{break;}}printf("-------------------------------------------------------------------------------------------------------------------\n");printf("|%s| %s | %s |%s|%s|%s|%s|%s|%s| %s |%s|\n","序号","学号","姓名","高等数学","大学体育","中国近代史纲要","软件技术导论","大学英语","C语言程序设计","总分","实际获得学分");printf("|----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");printf("|%4d|%12s|%6s|%8.1lf|%8.1lf|%14.1lf|%12.1lf|%8.1lf|%13.1lf|%6.1lf|%12.1f|\n",index,stu[index].id,stu[index].name,stu[index].maths,stu[index].PE,stu[index].history,stu[index].introduction,stu[index].English,stu[index].design,stu[index].sum,stu[index].score);printf("-------------------------------------------------------------------------------------------------------------------\n");system("pause");system("cls");
}void output(){printf("-------------------------------------------------------------------------------------------------------------------\n");printf("|%s| %s | %s |%s|%s|%s|%s|%s|%s| %s |%s|\n","序号","学号","姓名","高等数学","大学体育","中国近代史纲要","软件技术导论","大学英语","C语言程序设计","总分","实际获得学分");printf("|----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");for(int i=1;i<=num;i++){printf("|%4d|%12s|%6s|%8.1lf|%8.1lf|%14.1lf|%12.1lf|%8.1lf|%13.1lf|%6.1lf|%12.1f|\n",i,stu[i].id,stu[i].name,stu[i].maths,stu[i].PE,stu[i].history,stu[i].introduction,stu[i].English,stu[i].design,stu[i].sum,stu[i].score);if(i!=num){printf("|----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");}else{printf("-------------------------------------------------------------------------------------------------------------------\n");}}system("pause");system("cls");
}void remove(){while(1){char ID[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&ID);getchar();index=serch(ID); while(index==-1){printf("学生不存在,请重新输入!\n");scanf("%s",&ID);index=serch(ID); }string choice1;printf("是否确认删除?(是/否)\n");cin>>choice1;if(choice1=="否"){printf("请重新输入。\n"); system("pause");system("cls");continue;}else{for(int i=index;i<num;i++){stu[i]=stu[i+1];}num--;}getchar();printf("恭喜你删除成功!!!\n");string choice2;printf("是否继续删除?(是/否)\n");cin>>choice2;if(choice2=="否"){return;}}system("pause");system("cls");
}void rank(){sort(stu+1,stu+num+1,cmp);printf("-------------------------------------------------------------------------------------------------------------------\n");printf("|%s| %s | %s |%s|%s|%s|%s|%s|%s| %s |%s|\n","序号","学号","姓名","高等数学","大学体育","中国近代史纲要","软件技术导论","大学英语","C语言程序设计","总分","实际获得学分");printf("|----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");for(int i=1;i<=num;i++){printf("|%4d|%12s|%6s|%8.1lf|%8.1lf|%14.1lf|%12.1lf|%8.1lf|%13.1lf|%6.1lf|%12.1f|\n",i,stu[i].id,stu[i].name,stu[i].maths,stu[i].PE,stu[i].history,stu[i].introduction,stu[i].English,stu[i].design,stu[i].sum,stu[i].score);if(i!=num){printf("|----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");}else{printf("-------------------------------------------------------------------------------------------------------------------\n");}}system("pause");system("cls");
}void judge(){sort(stu+1,stu+num+1,cmp);int cnt=0;int i=1;printf("--------------------------------------------------------------------------------------------------------------------\n");printf("|%5s| %s | %s |%s|%s|%s|%s|%s|%s| %s |%s|\n","奖项","学号","姓名","高等数学","大学体育","中国近代史纲要","软件技术导论","大学英语","C语言程序设计","总分","实际获得学分");printf("|-----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");for(i=1;i<=num;i++){if(stu[i].score!=18){continue;}cnt++;printf("|%d等奖|%12s|%6s|%8.1lf|%8.1lf|%14.1lf|%12.1lf|%8.1lf|%13.1lf|%6.1lf|%12.1f|\n",cnt,stu[i].id,stu[i].name,stu[i].maths,stu[i].PE,stu[i].history,stu[i].introduction,stu[i].English,stu[i].design,stu[i].sum,stu[i].score);if(cnt==3||i!=num){printf("--------------------------------------------------------------------------------------------------------------------\n");}else{printf("|-----|------------|------|--------|--------|--------------|------------|--------|-------------|------|------------|\n");}if(cnt==3||i==num){break;}}system("pause");system("cls");
}void checkrank(){char ID[20];int index;printf("请输入要查找的学生的学号:");scanf("%s",&ID);getchar();index=serch(ID); while(index==-1){printf("学生不存在,请重新输入!\n");scanf("%s",&ID);index=serch(ID); }printf("您在班级的排名为%d名!",index); system("pause");system("cls");
}void checkfail(){char ID[20];int index,n=0;printf("请输入要查找的学生的学号:");scanf("%s",&ID);getchar();index=serch(ID); while(index==-1){printf("学生不存在,请重新输入!\n");scanf("%s",&ID);index=serch(ID); }printf("不及格的科目有:");if(stu[index].maths<60){printf("高等数学 ");n++;} if(stu[index].PE<60){printf("大学体育 ");n++;} if(stu[index].history<60){printf("中国近代史纲要 ");n++;}if(stu[index].introduction<60){printf("软件技术导论 ");n++;}if(stu[index].English<60){printf("大学英语 ");n++;}if(stu[index].design<60){printf("C语言程序设计 ");n++;}if(n==0){printf("无!!!");}system("pause");system("cls");
}void meno1(){int choice1;while(1){printf(" 教师端 \n "); printf("******************\n");printf(" 功能菜单 \n"); printf("姓名: \n"); printf("==================\n"); printf("1.录入学生成绩 \n");printf("2.修改学生成绩 \n"); printf("3.查询学生成绩 \n"); printf("4.导出学生成绩 \n"); printf("5.删除学生信息 \n"); printf("6.对学生进行排名 \n"); printf("7.评定奖学金 \n"); printf("0.退出程序 \n");printf("==================\n");printf("请输入您的选择:");scanf("%d",&choice1);system("cls");switch(choice1){case 1: input(); break;case 2: revise(); break;case 3: inquire(); break;case 4: output(); break;case 5: remove(); break;case 6: rank(); break;case 7: judge(); break;case 0: printf("欢迎你再次使用,再见!\n"); return;default: printf("对不起,您的选择有误,请重新输入!!!\n"); system("pause");system("cls");} }
}void meno2(){int choice2;while(1){printf(" 学生端 \n");printf(" ********************\n");printf(" 功能菜单 \n"); printf("姓名: \n"); printf("==================\n"); printf("1.查看个人成绩 \n"); printf("2.查看班级成绩 \n"); printf("3.查看个人班级排名 \n"); printf("4.查看不及格课程 \n");printf("0.结束程序 \n");printf("==================\n ");printf("请输入您的选择:"); scanf("%d",&choice2);system("cls");switch(choice2){case 1: inquire(); break; case 2: output(); break; case 3: checkrank(); break;case 4: checkfail(); break;case 0: printf("欢迎你再次使用,再见!\n"); return;default:printf("对不起,您的选择有误,请重新输入!!!\n"); system("pause");system("cls");} }
} int main(){int choice;while(1){printf(" 主菜单 \n");printf("*****************************\n");printf(" 1.教师端 \n");printf(" 2.学生端 \n");printf(" 0.结束程序 \n"); printf("*****************************\n");printf("请输入您的选择:");scanf("%d",&choice);system("cls");switch(choice){case 1: meno1();break;case 2: meno2();break;case 0: printf("欢迎您再次使用,再见!\n");exit(0);default:printf("对不起,您的选择有误,请重新输入!!!\n");system("pause");system("cls");}}return 0;
}
四、实验报告 (附带实验报告、源码以及解释)
【期末满分作业】C语言程序设计 实训1——奖学金评定系统的设计与实现(附带实验报告、源码以及解释)相关推荐
- 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc
(整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...
- c语言程序设计中北大学,《中北大学软件学院2013届C语言程序设计实训题目.doc...
<中北大学软件学院2013届C语言程序设计实训题目 C语言程序课程设计题目 (孟龙)题目1:年历显示 功能要求: 输入一个年份,输出是在屏幕上显示该年的日历.假定输入的年份在1940-2040年 ...
- c语言程序设计实训教材,C语言程序设计实训指导书
摘要: 李建中等编著的这本<C语言程序设计实训指导书>为<C语言程序设计>的配套教材.全书共分4部分.第1部分主要介绍Visual C++6.0的集成功能界面和操作;第2部分配 ...
- c语言周林答案,C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt...
C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt * * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序 ...
- 中北c语言程序设计,中北大学软件学2013届C语言程序设计实训题目.doc
中北大学软件学2013届C语言程序设计实训题目 C语言程序课程设计题目 (孟龙)题目1:年历显示 功能要求: 输入一个年份,输出是在屏幕上显示该年的日历.假定输入的年份在1940-2040年之间. 输 ...
- 转专业考试c语言试题,C语言程序设计实训题目.doc
C语言程序设计实训题目 C语言程序课程设计题目 题目1:年历显示 功能要求: 输入一个年份,输出是在屏幕上显示该年的日历.假定输入的年份在1940-2040年之间. 输入年月,输出该月的日历. 输入年 ...
- c语言程序设计项目实训总结,c语言程序设计实训总结.docx
c语言程序设计实训总结C语言程序设计实训总结为加强学生的实践动手能力,为贯彻落实教学计划的要求,培养学生的实践技能,计算机系05级计算机网络工程与管理.计算机信息学管理.图形图像三个的学生于XX年6月 ...
- 判断奇偶的c语言程序设计教程课后答案,C语言程序设计实训教程习题和试验解答.doc...
C语言程序设计实训教程习题和实验解答 2.1 C语言概述 [习题解答] 1结构化程序有三大基本结构:顺序.分支和循环. 2..算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤.或者看成按 ...
- c语言程序设计王电化教材答案中国铁道,(教材)C语言程序设计实训指导与习题解答...
图书简介 <高职高专计算机系列规划教材:C语言程序设计实训指导与习题解答>是安徽省高等学校"十一五"省级规划教材的<C语言程序设计>(方少卿主编)的配套实训 ...
最新文章
- python学习笔记 -- reduce合并减少
- office 2013 安装问题
- np.dot()函数用法(亲测矩阵算法)
- 数据分列将数字转换成文本格式
- 弱网测试用什么农_弱网测试--使用fiddler进行弱网测试
- Cannot open include file: 'unistd.h': No such file or directory的解决办法
- Latex中导入VISIO图片
- 利用 Python分析北京雾霾天,发现这么秘密
- html 超链接 中文转码,html和Url转码与解码
- AD19 绘制PCB操作流程笔记
- 回顾2020,展望2021
- 坚持学习、只是尽力维持不退步吧了
- python---flask解决跨域
- Windows 七种截图方式 快捷键 系统自带 工具软件
- 指责TD的人几个是有资格的?--艾瑞网专家项立刚的博客专栏 - 艾瑞网
- 如何写论文的“引言”部分
- 如何让自己的网站快速被搜索引擎找到
- 抵抗勒索病毒的正确姿势——不要上来就封端口!
- 游戏软件的发展和特点
- TeeChart8.0安装 ---转贴收藏