Matain1412
2021-07-07 22:34
采纳率: 66.7%
浏览 602

用C语言编写一个学生成绩管理系统

1)系统以菜单方式工作
具有主控界面,用户按照主控界面提示选择相应的功能;

img

2)系统数据录入功能
数据使用文件存放;
输入学生的学号、姓名、以及五门功课成绩,并计算每个学生五门功课的平均分,并按平均分排列名次,若平均分相同则名次并列,并将结果写入文件;

3)系统数据查询功能
A.学生成绩查询
通过学号、姓名或各科成绩查询文件中的成绩信息,显示结果如下:
学号 姓名 英语 高数 C语言 ........... 平均成绩 名次
01 张三 80 76 65 ............

4)系统删除功能
根据用户输入需要删除的学号,查找该条记录,若找到该记录,可对此人的相应数据进行删除,即对该记录进行标记,当重新写入文件里,不予写入,若未找到该记录,提示用户“未找到符合要求的记录”;
5)修改就是输入学号,找到文件里对应的记录,再依次修改各项内容
6)浏览就是输入一个值(n),然后显示文件中前n行的成绩信息

注:“学生成绩信息”文件及其结构如下,平均成绩和名次的内容为自动统计:
学号 姓名 英语 高数 C语言 ........... 平均成绩 名次
01 张三 80 76 65 ............
02 李若若 85 56 75 ............
… … … … … …
该文件初始由文本编辑工具直接生成,要求库存有10条或以上记录,但不超过100条;

我一开始的文件是这样的:

img

1 赵一 70 75 85 82 80
2 钱二 73 81 68 77 75
3 孙三 78 78 72 75 71
4 李四 80 68 74 77 73
5 王五 58 74 66 70 72
6 周六 49 85 82 81 69
7 林七 92 88 79 83 94
8 张八 48 25 39 66 62
9 廖九 60 18 28 39 57
10 吴十 49 37 58 70 62

我已经写了一点代码,求大神帮我排查排查,帮我补充补充,别用太高级/(ㄒoㄒ)/~~

#include<stdio.h>
#include<stlib.h>
#include<string.h>

void zhuye()
{
printf(" ############欢迎进入学生成绩管理系统############\n");
printf(" 1.录入学生成绩 4.查询学生成绩\n");
printf(" 2.修改学生成绩 5.浏览学生成绩\n");
printf(" 3.删除学生信息 6.清屏\n");
printf(" 0.退出\n");
printf(" ################################################\n");
printf("请输入您的选择:");
}

struct cj
{int xh[20];
char xm[20];
int yy[10];
int gs[10];
int cyy[10];
int wl[10];
int sz[10];
float ave[10];
}s[100];

void duqu()
{
FILE *p0;
p0=fopen("c:\学生成绩信息.txt","r");
if(p0==NULL) exit(0);
fread(s,sizeof(struct cj),count,p0);
for(int i=0;i<count;i++)
printf("%d%-5s%-5d%-5d%-5d%-5d%-5d\n",s[i].xh,s[i].xm,s[i].yy,s[i].gs,s[i].cyy,s[i].wl,s[i].sz);
fclose(p0);
}

void luru()
{
FILE *p;
p=fopen("c:\学生成绩信息.txt","a+");
if(p==NULL) exit(0);
fseek(p,sizeof(struct cj),1);
int n;
printf("请输入新学生学号:");
scanf("%d",&n);
if(n>count)
{
count=count+1;
s[n].xh=n;
printf("请输入新学生姓名:");
scanf("%s",&s[n].xm);
printf("请输入英语成绩:");
scanf("%d",&s[n].yy);
printf("请输入高数成绩:");
scanf("%d",&s[n].gs);
printf("请输入C语言成绩:");
scanf("%d",&s[n].cyy);
printf("请输入物理成绩:");
scanf("%d",&s[n].wl);
printf("请输入思政成绩:");
scanf("%d",&s[n].sz);
fwrite(s[n],sizeof(struct cj),1,p);
printf("录入成功!!\n");
}
else printf("已有该学生成绩信息!!");
}

void xiugai()
{
duqu();
int n;
printf("请输入要修改信息的学生的学号:");
scanf("%d",&n);
if(n<count)
{
printf("请修改学生姓名:");
scanf("%s",&s[n].xm);
printf("请修改英语成绩:");
scanf("%d",&s[n].yy);
printf("请修改高数成绩:");
scanf("%d",&s[n].gs);
printf("请修改C语言成绩:");
scanf("%d",&s[n].cyy);
printf("请修改物理成绩:");
scanf("%d",&s[n].wl);
printf("请修改思政成绩:");
scanf("%d",&s[n].sz);
fwrite(s[n],sizeof(struct cj),1,p);
printf("修改成功!!\n");
}
else printf("未找到该学生成绩信息!!");
}

void chaxun()
{
system("cls");
printf(" ###########请选择查询方式##########\n");
printf(" 1.通过学生学号 5.通过C语言成绩\n");
printf(" 2.通过学生姓名 6.通过物理成绩\n");
printf(" 3.通过英语成绩 7.通过思政成绩\n");
printf(" 4.通过高数成绩 8.清屏\n");
printf(" 0.退出\n");
printf(" ##############################################\n");
int t;
while(1)
{
printf("请输入您的选择:");
scanf("%d",&t);
getchar();
if(t==1)
byxh();
else if(t==2)
byxm();
else if(t==3)
byyy();
else if(t==4)
bygs();
else if(t==5)
bycyy();
else if(t==6)
bywl();
else if(t==7)
bysz();
else if(t==8)
system("cls");
else if(t==0)
break;
else
printf("指令错误!!\n");
}
}

1条回答 默认 最新

相关推荐 更多相似问题