#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N 3
#define M 3
struct student
{
char num[12];
char name[20];
int score[3];
float ave;
}stu[N];
int student_number = 0;
int Menu()
{
int a;
do {
system("cls"); /*运行前清屏,把选择清掉*/
printf("**********************************************************\n");
printf("* 欢迎使用高校学生成绩管理系统V1.0 *\n");
printf("* 请选择功能 *\n");
printf("**********************************************************\n");
printf("* 1.录入学生成绩计算学生总平均分 *\n");
printf("* 2.查找学生成绩 *\n");
printf("* 3.修改学生成绩 *\n");
printf("* 4.计算学生每门课平均分最高分最低分 *\n");
printf("* 5.根据学生总平均分从高到低排序 *\n");
printf("* 6.划分学生成绩等级 *\n");
printf("* 0.退出系统 *\n");
printf("**********************************************************\n");
printf("请输入所选功能前的序号:");
scanf_s("%d", &a);
if (a < 0 || a>6)
{
printf("错误选择");
system("pause");
}
} while (a < 0 || a>10);
return a;
}
void ll()
{
int i;
float sum[N];
printf("请输入学生学号、姓名及高数、C语言、数据结构的成绩\n");
for (i = 0; i < N; i++)
{
scanf_s("%s %s %d %d %d", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
sum[i] = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
stu[i].ave = sum[i] / 3;
}
printf("\n学号\t姓名\t高数\tc语言\t数据结构\t平均分\n");
for (i = 0; i < N; i++)
{
printf("%s\t%s\t%d\t%d\t%d\t%f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
}
}
void px()
{
int i = 0;
char testnum[12];
printf("请输入要查找学生的学号:");
scanf_s("%s", testnum);
i = 0;
while (strcmp(testnum, stu[i].num) != 0 && i < student_number)
{
i++;
}
if (i < student_number)
{
printf("\n学号\t姓名\t高数\tc语言\t数据结构\t平均分\n");
printf("%s\t%s\t%d\t%d\t%d\t%f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
}
else
printf("查无此人");
}
void pj()
{
int i = 0, j;
char testnum[12];
printf("请输入要修改学生的学号:");
scanf_s("%s", testnum);
while (strcmp(testnum, stu[i].num) != 0 && i < student_number)
{
i++;
}
if (i < student_number)
{
printf("开始修改\n");
printf("学号\t:");
scanf_s("%s", stu[i].num);
printf("姓名\t:");
scanf_s("%s", stu[i].name);
printf("高数\t:");
scanf_s("%d", &stu[i].score[0]);
printf("c语言\t:");
scanf_s("%d", &stu[i].score[1]);
printf("数据结构\t:");
scanf_s("%d", &stu[i].score[2]);
stu[i].ave = (float)(stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
printf("\n学号\t姓名\t高数\tc语言\t数据结构\t平均分\n");
printf("%s\t%s\t%d\t%d\t%d\t%f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
printf("修改成功");
}
}
void zg()
{
int i = 0, j, max = stu[0].score[i], min = stu[0].score[i], t[3], s[3];
float sum[M];
float ave1[3];
for (i = 0; i < N; i++)
{
sum[i] = stu[0].score[i] + stu[1].score[i] + stu[2].score[i];
ave1[i] = sum[i] / 3;
}
printf("各科的平均分分别为:%8.2f \n", ave1[i]);
printf("\n");
for (i = 0; i < N; i++)
{
max = stu[0].score[i];
for (j = 0; j < 3; j++)
{
if (max < stu[j].score[i])
{
max = stu[j].score[i];
t[i] = max;
}
}printf("各科最高分分别为:%d %d %d \n", t[0],t[1],t[2]);
}
printf("\n");
for (i = 0; i < N; i++)
{
min = stu[0].score[i];
for (j = 0; j < 3; j++)
{
if (min > stu[j].score[i])
{
min = stu[j].score[i];
s[i] = min;
}
}printf("各科最低分分别为:%d %d %d \n", s[0],s[1],s[2]);
}
}
void dj()
{
int i, j, t;
float sum[M];
float ave1[3];
for (i = 0; i < N; i++)
{
sum[i] = stu[0].score[i] + stu[1].score[i] + stu[2].score[i];
ave1[i] = sum[i] / 3;
}
for (j = 0; j < 3; j++)
{
for (i = 0; i < 2 - j; i++)
if (stu[i].ave < stu[i + 1].ave)
{
t = stu[i].ave; stu[i].ave = stu[i + 1].ave; stu[i + 1].ave = t;
}
}
printf("根据平均分从高到低排序后:%s %.2f\n", stu[i].num, stu[i].ave);
printf("\n");
}
void di()
{
int i;
char* testnum = 0;
printf("请输入要划分等级的学生学号: ");
scanf_s("%s", testnum);
printf("\n");
for (i = 0; i <= N; i++)
{
if (stu[i].num == testnum)
scanf_s("%f\n", stu[i].ave);
}
for (i = 0; i < N; i++)
{
if (stu[i].ave >= 90)
printf("优\n");
else if (stu[i].ave >= 80 && stu[i].ave < 90)
printf("良\n");
else if (stu[i].ave >= 60 && stu[i].ave < 80)
printf("中\n");
else
printf("差\n");
}
}
void AddFromText()
{
FILE* fp;
int i = 0;
if ((fp = fopen("D:\\student.txt", "r")) == NULL)
{
printf("打开文件失败,无读取数据");
}
else
{
fscanf(fp, "%s", &student_number);
while (i < student_number)
{
fscanf(fp, "%s%s%d%d%d%f", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
i++;
}
fclose(fp);
exit(0);
}
}
void Write()
{
int i = 0;
FILE* fp;
if ((fp = fopen("D:\\student.txt", "w")) == NULL)
{
printf("保存失败");
}
else
{
fprintf(fp, "%d", student_number);
while (i < student_number)
{
fprintf(fp, "%s%d%d%d%d%f", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
i++;
}
fclose(fp);
printf("保存成功");
exit(0);
}
}
int main()
{
AddFromText();
for (;;)
{
switch (Menu())
{
case 1:ll(); system("pause"); continue;
case 2:px(); system("pause"); continue;
case 3:pj(); system("pause"); continue;
case 4:zg(); system("pause"); continue;
case 5:dj(); system("pause"); continue;
case 6:di(); system("pause"); continue;
case 0:Write();
}
}
}