简单成绩管理
/*
简单成绩管理,最终成绩=30%平时成绩+20%期中成绩+50%期末成绩
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char name[100][10];
char code[100][20]; //学号
double usual[100]; //平时成绩
double mid[100]; //期中成绩
double final[100]; //期末成绩
void print(int j)重生之大文豪
{
printf("\n%s\t%s", name[j], code[j]);
printf("\n该生成绩为:\t\t平时\t期中\t期末\t最终\n");
printf("\t\t\t%g\t%g\t%g", usual[j], mid[j], final[j]);
printf("\t%g\n", 0.3*usual[j]+0.2*mid[j]+0.5*final[j]);
}
void inquire()
{
int choice;
char y;
printf("\n\t\t\t成绩信息查询菜单\n\n");
for(;;){
printf("\t\t\t1.按姓名查询\n");
printf("\t\t\t2.按学号查询\n");
printf("\n\t输入序号:");
scanf(" %d", &choice);
switch (choice)
{
case 1:
{
int j, b=0;
char a[10];
printf("\t\t请输入学生姓名:");
getchar();
scanf("%s", a);
for(j=0; j<100; j++)
if(strcmp(a,name[j])==0) {b++;break;}
if(b == 1)
print(j);
else printf("\n未找到该生\n");
break;
}
case 2:
{
int i=0, j;
char a[20];
printf("\t\t输入学生学号:");
scanf("%s", a);
for(j=0; j<100; j++)
if(strcmp(a, code[j])==0) {i++;break;}
if(i == 1)
print(j);
else printf("\n未找到该生\n");
break;
}
default : printf("输入错误!\n"), getchar();break;
}
printf("\t\t是否继续查询? y/n\t");
scanf(" %c", &y);
if(y != 'y') break;
}
}
void typein()
{
int i;
char y;
printf("\t\t\t成绩信息录入\n");
for(;;){
for(i=0; i<100; i++)
if(usual[i] == 0) break;
printf("输入学生姓名:");
scanf("%s", name[i]);
printf("\n输入学号:");
scanf("%s", code[i]);
printf("\n输入平时成绩:");
scanf("%lf", &usual[i]);
printf("\n输入期中成绩:");
scanf("%lf", &mid[i]);
printf("\n输入期末成绩:");
scanf("%lf", &final[i]);
printf("\n\t\t录入完毕,是否继续录入? y/n\t");
scanf(" %c", &y);
if(y != 'y')
break;
}
}
void modif()
{
int i, b=0;
char a[10];
char y;
for(;;){
printf("输入学生姓名:");
scanf("%s", a);
for(i=0; i<100; i++)
if(strcmp(a, name[i])==0)
{b++;
break;
}
if(b != 0)
{
printf("\n学生 %s 的成绩为:\n", name[i]);
printf("\t\t平时\t期中\t期末\n");
printf("\t\t%g\t%g\t%g\n", usual[i], mid[i], final[i]);
printf("更改成绩:\n");
printf("输入平时成绩:");
scanf("%lf", &usual[i]);
printf("\n输入期中成绩:");
scanf("%lf", &mid[i]);
printf("\n输入期末成绩:");
scanf("%lf", &final[i]);
printf("\n修改完成");
}
else printf("未找到该生");
printf("\t\t是否继续修改? y/n\t");
scanf(" %c", &y);
if(y != 'y') break;
}
}
void output()
{
int j;
printf("\n\t\t打印成绩单:\n\t姓名\t学号\t\t\t平时\t期中\t期末\t最终\n");
for(j=0; j<100; j++)
if(usual[j] != 0)
{
printf("\n\t%s\t%s\t", name[j], code[j]);
printf("\t%g\t%g\t%g", usual[j], mid[j], final[j]);
printf("\t%g\n", 0.3*usual[j]+0.2*mid[j]+0.5*final[j]);
}
printf("\n");
system("pause");
}
main()
{
int choice;
char y[10];
memset(name, 0, sizeof(char)*1000);
memset(code, 0, sizeof(char)*2000);
memset(usual, 0, sizeof(double)*100);
memset(mid, 0, sizeof(double)*100);
memset(final, 0, sizeof(double)*100);
for(;;)
{
printf("\t\t********************************\n");
printf("\t\t* 学生成绩管理系统 *\n");
printf("\t\t********************************\n\n");
printf("\t\t\t 主菜单\n\n");
printf("\t\t\t1. 成绩信息查询\n");
printf("\t\t\t2. 成绩信息录入\n");
printf("\t\t\t3. 成绩信息修改\n");
printf("\t\t\t4. 打印成绩单\n\n");
printf("\t输入序号:");
scanf("%d", &choice);
switch (choice)
{
case 1: system("cls");inquire();break;
case 2: typein();break;
case 3: modif();break;
case 4: system("cls");output();break;
default :printf("输入错误!\n"); gets(y);
system("pause");break;
}
system("cls");
}
}