主菜单
?报错功能
各科成绩
学分统计
总分统计
最终成绩单
//学生结构体
struct student{
char num[11];
char name[10];
int gaoshu;
int Cyuyan;
int zhuandao;
int tiyu;
int yingyu;
int junshi;
int xingzheng;
int xinli;
int jindaishi;
float xf;
float s;
}a[30];
?
while(true){
printf("\t\t\t************************************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 计算机科学与技术2023级1班成绩管理系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 1.输入学生的学号和姓名 *\n");
printf("\t\t\t* 2.输入学生各科成绩 *\n");
printf("\t\t\t* 3.计算学生获得学分 *\n");
printf("\t\t\t* 4.计算学生总分 *\n");
printf("\t\t\t* 5.输出学生成绩信息 *\n");
printf("\t\t\t* 6.退出系统 *\n");
printf("\t\t\t************************************************\n");
printf("请输入您的选择:");
scanf("%d",&choice);
while(true){
printf("\t\t\t\t**********************************************\n");
printf("\t\t\t\t* *\n");
printf("\t\t\t\t* 计算机科学与技术2023级1班成绩管理系统 *\n");
printf("\t\t\t\t* *\n");
printf("\t\t\t\t* 1.输入高数成绩 *\n");
printf("\t\t\t\t* 2.输入C语言成绩 *\n");
printf("\t\t\t\t* 3.输入计算机科学与技术专业导论成绩 *\n");
printf("\t\t\t\t* 4.输入体育成绩 *\n");
printf("\t\t\t\t* 5.输入英语成绩 *\n");
printf("\t\t\t\t* 6.输入军事理论成绩 *\n");
printf("\t\t\t\t* 7.输入形势与政策成绩 *\n");
printf("\t\t\t\t* 8.输入大学生心理健康辅导成绩 *\n");
printf("\t\t\t\t* 9.输入中国近代史纲要成绩 *\n");
printf("\t\t\t\t* 10.返回主菜单 *\n");
printf("\t\t\t\t**********************************************\n");
printf("\t\t\t请输入您的选择:");
scanf("%d",&choice) ;
input_xx:学生信息(输入学生学号与姓名)
void input_xx(){
char str[3];
for(int i=0;i<N;i++){
if(i<10){
strcpy(a[i].num,"230801010");
itoa(i+1,str,10);
strcat(a[i].num,str);
}else if(i>=10){
strcpy(a[i].num,"23080101");
itoa(i+1,str,10);
strcat(a[i].num,str);
}
fflush(stdin);
printf("\t\t\t\t学号:%s 姓名:",a[i].num );
scanf("%s",&a[i].name );
}
}
input_gaoshu…jindaishi:学生单科成绩
void input_gaoshu(){
for(int i=0;i<N;i++){
printf("\t\t\t\t请输入%s号%s同学高数成绩:",a[i].num,a[i].name);
scanf("%d",&a[i].gaoshu);
if(a[i].gaoshu<0||a[i].gaoshu>100){
printf("\t\t\t\t请重新输入%s号%s同学高数成绩:",a[i].num,a[i].name);
scanf("%d",&a[i].gaoshu);
}
}
n++;
}
input_xf:学生学分(根据课程与成绩输出学分)
void input_xf(){
double sum;
sum=0;
if(n<M){
printf("\t\t\t未输入全部科目\n");
}else{
for(int i=0;i<N;i++){
if(a[i].gaoshu>=60){
sum+=5.0;
}if(a[i].Cyuyan >=60){
sum+=3.5;
}if(a[i].zhuandao >=60){
sum+=2.5;
}if(a[i].tiyu >=60){
sum+=1;
}if(a[i].yingyu >=60){
sum+=2;
}if(a[i].junshi >=60){
sum+=1;
}if(a[i].xingzheng >=60){
sum+=2;
}if(a[i].xinli >=60){
sum+=1;
}if(a[i].jindaishi >=60){
sum+=2.5;
}
a[i].xf=sum;
}
printf("---------------------------------\n");
printf("|序号|学 号|姓 名|获得学分|\n");
printf("---------------------------------\n");
for(int i=0;i<N;i++){
printf("|%4d|%10s|%6s|%8.1f|\n",i+1,a[i].num,a[i].name,a[i].xf);
}
}
}
input_total:总成绩(根据输入的单科成绩输出总分)
void input_total(){
if(n<M){
printf("\t\t\t未输入全部科目\n");
}else{
for(int i=0;i<N;i++){
a[i].s =a[i].Cyuyan +a[i].gaoshu +a[i].jindaishi +a[i].junshi +a[i].tiyu +a[i].xingzheng +a[i].xinli +a[i].yingyu +a[i].zhuandao ;
}
printf("---------------------------------\n");
printf("|序号|学 号|姓 名|总 分|\n");
printf("---------------------------------\n");
for(int i=0;i<N;i++){
printf("|%4d|%10s|%6s|%5f|\n",i+1,a[i].num,a[i].name,a[i].s);
}
printf("---------------------------------\n");
}
}
menu:菜单
output:学生成绩单
void output(){
printf("---------------------------------------------------------------------------------------------------\n");
printf("|序号|学 号|姓 名|获得学分|高 数|C语言|专 导|体 育|英 语|军 事|形 政|心 理|近代史|总 分|\n");
printf("---------------------------------------------------------------------------------------------------\n");
for(int i=0;i<N;i++){
printf("|%4d|%10s|%6s|%8.1f|%5d|%5d|%5d|%5d|%5d|%5d|%5d|%5d|%5d|%5d|\n",i+1,a[i].num ,a[i].name,a[i].xf ,a[i].gaoshu ,a[i].Cyuyan ,a[i].zhuandao ,a[i].tiyu ,a[i].yingyu ,a[i].junshi ,a[i].xingzheng ,a[i].xinli ,a[i].jindaishi ,a[i].s );
}
}
1.定义全局变量n,作为计数器,记录已填报成绩的科目。以便后续判断是否输入全科成绩
2.注意数组不要越界!
3.菜单制作注意排版
system("pause");//暂停
system("cls");//清屏
fflush(stdin);//清除缓冲区
4.保证数据类型无误
QUST2023级软件工程实训作业(大一上)