#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
int n=30;
struct stu//定义链表结构类型
{
char num[15];//学号
char name[20];//姓名
int sex;//性别
int score[4];//分数
float aver;//平均分数
int sum;//总分
}s[100];
void main()
{
void menu();
void wenjiandaoru();//声明文件读入函数
void chengjipaixu();//声明成绩排序函数
void chengjichaxun();//声明成绩查询函数
void chengjitongji();//声明统计函数
void xinxixiugai();//声明信息修改函数
void xinxishanchu();//声明删除函数
void xinxitianjia();//声明信息添加函数
void baocun();//声明保存函数
void tuichu();//声明退出函数
void pingjunfen();//声明计算平均分函数
int i;
int xunhuan=1;
printf("\n\t\t\t\t\t欢迎使用学生成绩信息管理系统");
do
{
menu();
scanf("%d",&i);
switch(i)
{
case 1:wenjiandaoru();break;//文件读入
case 2:chengjipaixu();break;//成绩降序排序
case 3:chengjichaxun();break;//成绩查询
case 4:chengjitongji();break;//平均数
case 5:xinxixiugai();break;//信息修改
case 6:xinxishanchu();break;//删除
case 7:xinxitianjia();break;//添加
case 8:baocun();break;//保存
case 9:tuichu();break;//退出
default:printf("\t选择错误,请重新输入\n\n");
}
pingjunfen();
printf("按回车键继续\n");
getchar();
getchar();
}while(xunhuan==1);
}
void menu()
{
/*在屏幕上出现一个主菜单*/
printf("\n\n\n");
printf("\t*********************************************************\n");
printf("\t 学生成绩信息管理系统 \n");
printf("\t \n");
printf("\t 1. 文件导入 \n");
printf("\t 2. 成绩排序(降序) \n");
printf("\t 3. 成绩查询 \n");
printf("\t 4. 成绩统计(平均分) \n");
printf("\t 5. 信息修改 \n");
printf("\t 6. 信息删除 \n");
printf("\t 7. 信息添加 \n");
printf("\t 8. 保存 \n");
printf("\t 9. 退出 \n");
printf("\t \n");
printf("\t*********************************************************\n");
printf("\t\t请输入(1-9)以选择:");
}
void wenjiandaoru() //文件导入//
{
int i;
FILE *fp;
if((fp=fopen("E:\\student.txt","r+"))==NULL)
{
printf("请重新导入文件");
}
else
{
printf("导入成功\n");
printf("学号 姓名 性别 C语言 英语 数学\n");
i=0;
while (!feof(fp))
{
fscanf (fp," %s %s %s %d %d %d",&s[i].num,&s[i].name,&s[i].sex,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
i++;
}
fclose(fp);
}
}
void pingjunfen() //计算平均分//
{ int i,j;
for(i=0;i<n;i++)
{s[i].aver=0;
s[i].sum=0;
for(j=0;j<3;j++)
{s[i].aver+=s[i].score[j];
s[i].sum+=s[i].score[j];
}
s[i].aver=s[i].aver/3;
}
}
void chengjipaixu() //成绩排序//
{
int i,j;
struct stu t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n;j++)
{
if(s[j].sum<s[j+1].sum)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
printf("名次\t学号\t姓名\t性别\tC语言\t英语\t数学\t平均成绩\t总成绩\n");
for(i=0;i<n;i++)
{
printf("%d\t%s\t%s\t%s\t",i+1,s[i].num,s[i].name,&s[i].sex);
for(j=0;j<3;j++)
printf("%d\t",s[i].score[j]);
printf("%0.1f\t\t%d",s[i].aver,s[i].sum);
printf("\n");
}
}
void chengjichaxun() //成绩查询//
{
char a[15];
int i,j;
int k=0;
printf("请输入姓名或学号\n");
scanf("%s",&a);
for(i=0,j=0;i<n;i++)
if((strcmp(a,s[i].name)==0)||(strcmp(a,s[i].num)==0))
{
printf("序号\t学号\t姓名\t性别\tC语言\t英语\t数学\t平均成绩\t总成绩\n");
printf("%d\t%s\t%s\t%s\t",i+1,s[i].num,s[i].name,&s[i].sex);
for(j=0;j<3;j++)
printf("%d\t",s[i].score[j]);
printf("%0.1f\t\t%d",s[i].aver,s[i].sum);
printf("\n");
k=1;
}
if(k==0)
printf("未录入此学生信息\n");
}
void chengjitongji() //统计平均分//
{
int i;
float count=0,sum=0;
for(i=0;i<n;i++)
sum+=s[i].aver;
printf("全体平均分:%0.2f\n",sum/n);
}
void xinxixiugai() //信息修改//
{
char a[15];
int i,j;
int k=0;
printf("请输入姓名或学号\n");
scanf("%s",&a);
for(i=0;i<n;i++)
{
if(strcmp(a,s[i].name)==0||strcmp(a,s[i].num)==0)
{ printf("序号\t学号\t姓名\t性别\tC语言\t英语\t数学\t平均成绩\t总成绩\n");
printf("%d\t%s\t%s\t%s\t",i+1,s[i].num,s[i].name,&s[i].sex);
for(j=0;j<3;j++)
printf("%d\t",s[i].score[j]);
printf("%0.1f\t\t%d",s[i].aver,s[i].sum);
printf("\n");
printf("请重新输入(按照 C语言 英语 数学 的顺序)\n");
scanf("%d%d%d",&s[i].score[0],&s[i].score[1],&s[i].score[2]);
k=1;
printf("修改成功");}
}
if(k==0)
printf("无该学生信息\n");
}
void xinxishanchu() //信息删除//
{
int i,j,c,k=0;
char m,a[15];
printf("请输入姓名或学号\n");
scanf("%s",&a);
for(i=0;i<n;i++)
{
if(strcmp(a,s[i].name)==0||strcmp(a,s[i].num)==0)
{ printf("序号\t学号\t姓名\t性别\tC语言\t英语\t数学\t平均成绩\t总成绩\n");
printf("%d\t%s\t%s\t%s\t",i+1,s[i].num,s[i].name,&s[i].sex);
for(j=0;j<3;j++)
printf("%d\t",s[i].score[j]);
printf("%0.1f\t\t%d",s[i].aver,s[i].sum);
printf("\n");
c=i;
k=1;
}
}
if(k==0)
printf("无该学生信息\n");
printf("是否删除?(Y/N)\n");
scanf("%s",&m);
if(m=='Y')
{
for(i=c;i<n-1;i++)
s[i]=s[i+1];
n=n-1;
printf("删除成功\n");
}
else
printf("删除失败\n");
}
void xinxitianjia() //信息添加//
{
int i=0;
char ch;
printf("请依次输入学生的 学号,姓名,性别,C语言,英语,数学成绩\n");
scanf("%s%s%s%d%d%d",&s[i].num,&s[i].name,&s[i].sex,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
n++;
printf("是否继续录入(y/n)\n");
ch=getch();
switch(ch!='Y'&&ch!='y')
{
break;
}
}
void baocun() //保存//
{
FILE *fp=fopen("E:\\student1.txt","wb");
int i;
char m;
printf("是否保存?(y/n)\n");
scanf("%s",&m);
if(m=='y')
{ fprintf(fp,"学号\t姓名\t性别\tC语言\t英语\t数学\t平均成绩\t总成绩\r\n");
for(i=0;i<n;i++)
fprintf(fp,"%s\t%s\t%s\t%d\t%d\t%d\t%0.1f\t\t%d\r\n",s[i].num,s[i].name,&s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].aver,s[i].sum);
printf("保存完毕");
}
else printf("保存已取消");
fclose(fp);
}
void tuichu() //退出系统//
{
exit(0);
}