#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define QP system("cls");
void f1()
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Welcome to score manange system ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.初始化 ┃\n");
printf(" ┃ 2.添加新的学生记录 ┃\n");
printf(" ┃ 3.查询和修改已有学生记录 ┃\n");
printf(" ┃ 4.显示当前保存信息 ┃\n");
printf(" ┃ 5.根据学号查询已有学生记录 ┃\n");
printf(" ┃ 6.根据姓名查询已有学生记录 ┃\n");
printf(" ┃ 7.删除已有学生记录 ┃\n");
printf(" ┃ 8.根据总分排序 ┃\n");
printf(" ┃ 9.清除屏幕信息 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f2()
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Welcome to score manange system ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.根据学号查询已有学生记录 ┃\n");
printf(" ┃ 2.根据姓名查询已有学生记录 ┃\n");
printf(" ┃ 3.清除屏幕信息 ┃\n");
printf(" ┃ 4.返回上级 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f3()
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Welcome to score manange system ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.管理员登陆 ┃\n");
printf(" ┃ 2.学生登陆 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
struct student
{
long no;
char name[20];
int chinese;
int maths;
int english;
int total;
};
struct student s[50];
int n = 0;
void init()
{
printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
printf("当输入学号为0时停止输入\n");
while (n <= 50)
{
printf("请输入学生的学号:");
scanf("%ld", &s[n].no);
if (s[n].no == 0)
break;
printf("请输入学生的姓名:");
scanf("%s", s[n].name);
printf("请输入学生的语文,数学,英语成绩:");
scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
s[n].total = s[n].chinese + s[n].maths + s[n].english;
n++;
}
}
void print()
{
int j;
printf("学生记录如下:\n");
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
for (j = 0; j < n; j++)
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[j].no, s[j].name, s[j].chinese, s[j].maths, s[j].english, s[j].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
void add()
{
printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
printf("请输入学生的学号:");
scanf("%ld", &s[n].no);
printf("请输入学生的姓名:");
scanf("%s", s[n].name);
printf("请输入学生的语文,数学,英语成绩:");
scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
s[n].total = s[n].chinese + s[n].maths + s[n].english;
n++;
}
void mod()
{
int num, i;
int found = 1;
char choice;
while (1)
{
printf("请输入要修改的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
printf("%ld\t%s\t%d\t%d\t%d\t%d\t\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
scanf("%d%d%d", &s[i].chinese, &s[i].maths, &s[i].english);
s[i].total = s[i].chinese + s[i].maths + s[i].english;
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续修改(Y/N)\n");
choice = getchar();
getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void findbyno()
{
int num, i;
int found = 1;
char choice;
while (1)
{
printf("请输入要查找的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续查询(Y/N)\n");
getchar();
choice = getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void findbyname()
{
int num, i;
int found = 1;
char choice;
char w[20];
while (1)
{
printf("请输入要查找的学生的姓名:");
gets(w);
for (i = 0; i < n&&found == 1; i++)
if (strcmp(s[i].name, w) == 0)
{
found = 0;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续查询(Y/N)\n");
choice = getchar();
getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void del()
{
int num, i,j;
int found = 1;
char choice;
while (1)
{
printf("请输入要删除的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
for(j=i+1;j<=n-1;i++)
s[j-1]=s[j];
n--;
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续删除(Y/N)\n");
getchar();
choice = getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void sort()
{
int i,j;
struct student k;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(s[j].total<s[j+1].total)
{
k=s[j];
s[j]=s[j+1];
s[j+1]=k;
}
}
void run1()
{
int A;
f1();
while (1)
{
printf("请输入0-9:");
scanf("%d", &A);
switch (A)
{
case 1:
init();
print();
break;
case 2:
add();
print();
break;
case 3:
mod();
print();
break;
case 4:
print();
break;
case 5:
findbyno();
break;
case 6:
findbyname();
break;
case 7:
del();
print();
break;
case 8:
sort();
print();
break;
case 9:
QP
f1();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
void run();
void run2()
{
int A;
f2();
while (1)
{
printf("请输入0-4:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
break;
case 2:
findbyname();
break;
case 3:
QP
f2();
break;
case 4:
QP
run();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
void run()
{
int A;
int m;
f3();
while (1)
{
printf("请输入0-2:");
scanf("%d", &A);
switch (A)
{
case 1:
printf("请输入密码:\n");
scanf("%d",&m);
printf("%d",m);
if(m==12345)
{
QP
run1();
}
else
{
QP
f3();
}
break;
case 2:
QP
run2();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
int main()
{
run();
return 0;
}
课后作业,未完成版,待完善中。
环境Dev 5.4.0
—————————————————————————————————————————————————————————————————————————————————————————————————————
5.21完善。
#include <stdio.h>
#include <stdlib.h> //修改控制台颜色所需头文件
#include <string.h>
#define QP system("cls"); //定义“清屏”
void run();
void sort();
void f1() //管理员界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.初始化 ┃\n");
printf(" ┃ 2.添加新的学生记录 ┃\n");
printf(" ┃ 3.查询和修改已有学生记录 ┃\n");
printf(" ┃ 4.显示当前保存信息 ┃\n");
printf(" ┃ 5.查询系统 ┃\n");
printf(" ┃ 6.删除已有学生记录 ┃\n");
printf(" ┃ 7.排序系统 ┃\n");
printf(" ┃ 8.清除屏幕信息 ┃\n");
printf(" ┃ 9.返回上级 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f2() //学生界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Student systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.查询系统 ┃\n");
printf(" ┃ 2.清除屏幕信息 ┃\n");
printf(" ┃ 3.返回上级 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f3() //开始界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Welcome to score manange system ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.管理员登陆 ┃\n");
printf(" ┃ 2.学生登陆 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f4() //排序界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.语文 ┃\n");
printf(" ┃ 2.数学 ┃\n");
printf(" ┃ 3.英语 ┃\n");
printf(" ┃ 4.总分 ┃\n");
printf(" ┃ 5.清除屏幕信息 ┃\n");
printf(" ┃ 0.返回上级 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f5() //排序选项界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.降序 ┃\n");
printf(" ┃ 2.升序 ┃\n");
printf(" ┃ 3.清除屏幕信息 ┃\n");
printf(" ┃ 0.返回上级 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f6() //查找界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.学号查找 ┃\n");
printf(" ┃ 2.姓名查找 ┃\n");
printf(" ┃ 3.清除屏幕信息 ┃\n");
printf(" ┃ 0.返回上级 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
struct student //定义学生结构体
{
long no;
char name[20];
int chinese;
int maths;
int english;
int total;
};
struct student s[50];
int n = 0;
void init() //输入
{
printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
printf("当输入学号为0时停止输入\n");
while (n <= 50)
{
printf("请输入学生的学号:");
scanf("%ld", &s[n].no);
if (s[n].no == 0)
break;
printf("请输入学生的姓名:");
scanf("%s", s[n].name);
printf("请输入学生的语文,数学,英语成绩:");
scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
s[n].total = s[n].chinese + s[n].maths + s[n].english;
n++;
}
}
void print() //输出
{
int j;
printf("学生记录如下:\n");
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
for (j = 0; j < n; j++)
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[j].no, s[j].name, s[j].chinese, s[j].maths, s[j].english, s[j].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
void add() //增加
{
printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
printf("请输入学生的学号:");
scanf("%ld", &s[n].no);
printf("请输入学生的姓名:");
scanf("%s", s[n].name);
printf("请输入学生的语文,数学,英语成绩:");
scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
s[n].total = s[n].chinese + s[n].maths + s[n].english;
n++;
}
void mod() //查询 修改
{
int num, i;
int found = 1;
char choice;
while (1)
{
printf("请输入要修改的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
printf("%ld\t%s\t%d\t%d\t%d\t%d\t\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
scanf("%d%d%d", &s[i].chinese, &s[i].maths, &s[i].english);
s[i].total = s[i].chinese + s[i].maths + s[i].english;
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续修改(Y/N)\n");
getchar();
choice = getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void findbyno() //学号查找
{
int num, i;
int found = 1;
printf("请输入要查找的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n; i++)
if (s[i].no == num)
{
found = 0;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
if (found == 1)
printf("未找到\n");
}
void findbyname() //姓名查找
{
int num, i;
int found = 1;
char w[20];
printf("请输入要查找的学生的姓名:");
getchar();
gets(w);
for (i = 0; i < n; i++)
if (strcmp(s[i].name, w) == 0)
{
found = 0;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
if (found == 1)
printf("未找到\n");
}
void find_f1() //管理员查询系统
{
QP
int A;
f6();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
break;
case 2:
findbyname();
break;
case 3:
QP
f6();
break;
case 0:
QP
f1();
break;
default:
printf("输入错误\n");
break;
}
}
}
void find_f2() //学生查询系统
{
QP
int A;
f6();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
break;
case 2:
findbyname();
break;
case 3:
QP
f6();
break;
case 0:
QP
f2();
break;
default:
printf("输入错误\n");
break;
}
}
}
void del() //删除
{
int num, i, j;
int found = 1;
char choice;
while (1)
{
printf("请输入要删除的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
for (j = i + 1; j <= n - 1; i++)
s[j - 1] = s[j];
n--;
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续删除(Y/N)\n");
getchar();
choice = getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void sort_totalmin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].total < s[j + 1].total)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_totalmax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].total > s[j + 1].total)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_total() //总分排序
{
QP
int A;
f5();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_totalmin();
print();
break;
case 2:
sort_totalmax();
print();
break;
case 3:
QP
f5();
break;
case 0:
QP
f4();
break;
default:
printf("输入错误\n");
break;
}
}
}
void sort_chinesemin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].chinese < s[j + 1].chinese)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_chinesemax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].chinese > s[j + 1].chinese)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_chinese() //语文排序
{
QP
int A;
f5();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_chinesemin();
print();
break;
case 2:
sort_chinesemax();
print();
break;
case 3:
QP
f5();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
}
void sort_mathsmin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].maths < s[j + 1].maths)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_mathsmax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].maths > s[j + 1].maths)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_maths() //数学排序
{
QP
int A;
f5();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_mathsmin();
print();
break;
case 2:
sort_mathsmax();
print();
break;
case 3:
QP
f5();
break;
case 0:
QP
f4();
break;
default:
printf("输入错误\n");
break;
}
}
}
void sort_englishmin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].english < s[j + 1].english)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_englishmax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].english > s[j + 1].english)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_english() //英语排序
{
QP
int A;
f5();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_englishmin();
print();
break;
case 2:
sort_englishmax();
print();
break;
case 3:
QP
f5();
break;
case 0:
QP
f4();
break;
default:
printf("输入错误\n");
break;
}
}
}
void sort() //排序
{
int A;
f4();
while (1)
{
printf("请输入0-5:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_chinese();
break;
case 2:
sort_maths();
break;
case 3:
sort_english();
break;
case 4:
sort_total();
break;
case 5:
QP
f4();
break;
case 0:
QP
f1();
break;
default:
printf("输入错误\n");
break;
}
}
}
void run1() //运行管理员界面
{
system("color 0B");
int A;
f1();
while (1)
{
printf("请输入0-9:");
scanf("%d", &A);
switch (A)
{
case 1:
init();
print();
break;
case 2:
add();
print();
break;
case 3:
mod();
print();
break;
case 4:
print();
break;
case 5:
find_f1();
break;
case 6:
del();
print();
break;
case 7:
QP
sort();
break;
case 8:
QP
f1();
break;
case 9:
QP
run();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
void run2() //运行学生界面
{
system("color 0E");
int A;
f2();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
find_f2();
break;
case 2:
QP
f2();
break;
case 3:
QP
run();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
void run() //运行开始界面
{
system("color 3F");
int A;
int m;
f3();
while (1)
{
printf("请输入0-2:");
scanf("%d", &A);
switch (A)
{
case 1:
printf("请输入密码:\n");
scanf("%d", &m);
printf("%d", m);
if (m == 12345)
{
QP
run1();
}
else
{
QP
f3();
}
break;
case 2:
QP
run2();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
int main() //主函数
{
run();
return 0;
}
5.28更新。完善之前的一些错误,下次更新估计就是改用链表,加入文件。
#include <stdio.h>
#include <stdlib.h> //修改控制台颜色所需头文件
#include <string.h>
#define QP system("cls"); //定义“清屏”
void run();
void run1();
void run2();
void sort_total();
void sort_total1();
void sort_chinese();
void sort_chinese1();
void sort_maths();
void sort_maths1();
void sort_english();
void sort_english1();
void sort();
void sort1();
void find_f1();
void find_f11();
void find_f2();
void find_f22();
void f1() //管理员界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.初始化 ┃\n");
printf(" ┃ 2.添加新的学生记录 ┃\n");
printf(" ┃ 3.查询和修改已有学生记录 ┃\n");
printf(" ┃ 4.显示当前保存信息 ┃\n");
printf(" ┃ 5.查询系统 ┃\n");
printf(" ┃ 6.删除已有学生记录 ┃\n");
printf(" ┃ 7.排序系统 ┃\n");
printf(" ┃ 8.清除屏幕信息 ┃\n");
printf(" ┃ 9.返回上级 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f2() //学生界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Student systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.查询系统 ┃\n");
printf(" ┃ 2.清除屏幕信息 ┃\n");
printf(" ┃ 3.返回上级 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f3() //开始界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Welcome to score manange system ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.管理员登陆 ┃\n");
printf(" ┃ 2.学生登陆 ┃\n");
printf(" ┃ 0.退出学生成绩管理系统 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f4() //排序界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.语文 ┃\n");
printf(" ┃ 2.数学 ┃\n");
printf(" ┃ 3.英语 ┃\n");
printf(" ┃ 4.总分 ┃\n");
printf(" ┃ 5.清除屏幕信息 ┃\n");
printf(" ┃ 0.返回上级 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f5() //排序选项界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.降序 ┃\n");
printf(" ┃ 2.升序 ┃\n");
printf(" ┃ 3.清除屏幕信息 ┃\n");
printf(" ┃ 0.返回上级 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
void f6() //查找界面
{
printf(" ┏━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ Administrator systems ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ 1.学号查找 ┃\n");
printf(" ┃ 2.姓名查找 ┃\n");
printf(" ┃ 3.清除屏幕信息 ┃\n");
printf(" ┃ 0.返回上级 ┃\n");
printf(" ┗━━━━━━━━━━━━━━━━━━┛\n");
}
struct student //定义学生结构体
{
long no;
char name[20];
int chinese;
int maths;
int english;
int total;
};
struct student s[50];
int n = 0;
void init() //输入
{
printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
printf("当输入学号为0时停止输入\n");
while (n <= 50)
{
printf("请输入学生的学号:");
scanf("%ld", &s[n].no);
if (s[n].no == 0)
break;
printf("请输入学生的姓名:");
scanf("%s", s[n].name);
printf("请输入学生的语文,数学,英语成绩:");
scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
s[n].total = s[n].chinese + s[n].maths + s[n].english;
n++;
}
}
void print() //输出
{
int j;
printf("学生记录如下:\n");
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
for (j = 0; j < n; j++)
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[j].no, s[j].name, s[j].chinese, s[j].maths, s[j].english, s[j].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
void add() //增加
{
printf("请输入学生的学号,姓名,语文,数学,英语成绩\n");
printf("请输入学生的学号:");
scanf("%ld", &s[n].no);
printf("请输入学生的姓名:");
scanf("%s", s[n].name);
printf("请输入学生的语文,数学,英语成绩:");
scanf("%d%d%d", &s[n].chinese, &s[n].maths, &s[n].english);
s[n].total = s[n].chinese + s[n].maths + s[n].english;
n++;
}
void mod() //查询 修改
{
int num, i;
int found = 1;
char choice;
while (1)
{
printf("请输入要修改的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
printf("%ld\t%s\t%d\t%d\t%d\t%d\t\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
scanf("%d%d%d", &s[i].chinese, &s[i].maths, &s[i].english);
s[i].total = s[i].chinese + s[i].maths + s[i].english;
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续修改(Y/N)\n");
getchar();
choice = getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void findbyno() //学号查找
{
int num, i;
int found = 1;
printf("请输入要查找的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n; i++)
if (s[i].no == num)
{
found = 0;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
if (found == 1)
printf("未找到\n");
}
void findbyname() //姓名查找
{
int num, i;
int found = 1;
char w[20];
printf("请输入要查找的学生的姓名:");
getchar();
gets(w);
for (i = 0; i < n; i++)
if (strcmp(s[i].name, w) == 0)
{
found = 0;
printf(" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf(" ┃ 学号\t姓名\t语文\t数学\t英语\t总成绩 ┃\n");
printf(" ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");
printf(" ┃ %ld \t %s \t %d \t %d \t %d \t %d \t ┃\n", s[i].no, s[i].name, s[i].chinese, s[i].maths, s[i].english, s[i].total);
printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
}
if (found == 1)
printf("未找到\n");
}
void find_f1() //管理员查询系统
{
QP
int A;
f6();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
find_f11();
break;
case 2:
findbyname();
find_f11();
break;
case 3:
QP
find_f11();
break;
case 0:
QP
run1();
break;
default:
printf("输入错误\n");
break;
}
}
void find_f11() //管理员查询系统
{
//QP
int A;
f6();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
find_f1();
break;
case 2:
findbyname();
find_f1();
break;
case 3:
QP
find_f1();
break;
case 0:
QP
run1();
break;
default:
printf("输入错误\n");
break;
}
}
void find_f2() //学生查询系统
{
QP
int A;
f6();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
find_f22();
break;
case 2:
findbyname();
find_f22();
break;
case 3:
QP
find_f22();
break;
case 0:
QP
run2();
break;
default:
printf("输入错误\n");
break;
}
}
void find_f22() //学生查询系统
{
//QP
int A;
f6();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
findbyno();
find_f2();
break;
case 2:
findbyname();
find_f2();
break;
case 3:
QP
find_f2();
break;
case 0:
QP
run2();
break;
default:
printf("输入错误\n");
break;
}
}
void del() //删除
{
int num, i, j;
int found = 1;
char choice;
while (1)
{
printf("请输入要删除的学生的学号:");
scanf("%d", &num);
for (i = 0; i < n&&found == 1; i++)
if (s[i].no == num)
{
found = 0;
for (j = i + 1; j <= n - 1; i++)
s[j - 1] = s[j];
n--;
}
if (found == 1)
printf("未找到\n");
found = 1;
printf("是否继续删除(Y/N)\n");
getchar();
choice = getchar();
if (choice == 'N' || choice == 'n')
break;
}
}
void sort_totalmin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].total < s[j + 1].total)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_totalmax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].total > s[j + 1].total)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_total() //总分排序
{
QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_totalmin();
print();
sort_total1();
break;
case 2:
sort_totalmax();
print();
sort_total1();
break;
case 3:
QP
sort_total1();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_total1() //总分排序
{
//QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_totalmin();
print();
sort_total();
break;
case 2:
sort_totalmax();
print();
sort_total();
break;
case 3:
QP
sort_total();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_chinesemin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].chinese < s[j + 1].chinese)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_chinesemax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].chinese > s[j + 1].chinese)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_chinese() //语文排序
{
QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_chinesemin();
print();
sort_chinese1();
break;
case 2:
sort_chinesemax();
print();
sort_chinese1();
break;
case 3:
QP
sort_chinese1();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_chinese1() //语文排序
{
//QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_chinesemin();
print();
sort_chinese();
break;
case 2:
sort_chinesemax();
print();
sort_chinese();
break;
case 3:
QP
sort_chinese();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_mathsmin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].maths < s[j + 1].maths)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_mathsmax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].maths > s[j + 1].maths)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_maths() //数学排序
{
QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_mathsmin();
print();
sort_maths1();
break;
case 2:
sort_mathsmax();
print();
sort_maths1();
break;
case 3:
QP
sort_maths1();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_maths1() //数学排序
{
//QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_mathsmin();
print();
sort_maths();
break;
case 2:
sort_mathsmax();
print();
sort_maths();
break;
case 3:
QP
sort_maths();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_englishmin()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].english < s[j + 1].english)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_englishmax()
{
int i, j;
struct student k;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (s[j].english > s[j + 1].english)
{
k = s[j];
s[j] = s[j + 1];
s[j + 1] = k;
}
}
void sort_english() //英语排序
{
QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_englishmin();
print();
sort_english1();
break;
case 2:
sort_englishmax();
print();
sort_english1();
break;
case 3:
QP
sort_english1();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort_english1() //英语排序
{
//QP
int A;
f5();
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_englishmin();
print();
sort_english();
break;
case 2:
sort_englishmax();
print();
sort_english();
break;
case 3:
QP
sort_english();
break;
case 0:
QP
sort();
break;
default:
printf("输入错误\n");
break;
}
}
void sort() //排序
{
int A;
f4();
printf("请输入0-5:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_chinese();
break;
case 2:
sort_maths();
break;
case 3:
sort_english();
break;
case 4:
sort_total();
break;
case 5:
QP
sort1();
break;
case 0:
QP
run1();
break;
default:
printf("输入错误\n");
break;
}
}
void sort1() //排序
{
int A;
f4();
printf("请输入0-5:");
scanf("%d", &A);
switch (A)
{
case 1:
sort_chinese();
break;
case 2:
sort_maths();
break;
case 3:
sort_english();
break;
case 4:
sort_total();
break;
case 5:
QP
sort();
break;
case 0:
QP
run1();
break;
default:
printf("输入错误\n");
break;
}
}
void run1() //运行管理员界面
{
system("color 0B");
int A;
f1();
while (1)
{
printf("请输入0-9:");
scanf("%d", &A);
switch (A)
{
case 1:
init();
print();
break;
case 2:
add();
print();
break;
case 3:
mod();
print();
break;
case 4:
print();
break;
case 5:
find_f1();
break;
case 6:
del();
print();
break;
case 7:
QP
sort();
break;
case 8:
QP
f1();
break;
case 9:
QP
run();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
void run2() //运行学生界面
{
system("color 0E");
int A;
f2();
while (1)
{
printf("请输入0-3:");
scanf("%d", &A);
switch (A)
{
case 1:
find_f2();
break;
case 2:
QP
f2();
break;
case 3:
QP
run();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
void run() //运行开始界面
{
system("color 3F");
int A;
int m;
f3();
while (1)
{
printf("请输入0-2:");
scanf("%d", &A);
switch (A)
{
case 1:
printf("请输入密码:\n");
scanf("%d", &m);
printf("%d", m);
if (m == 12345)
{
QP
run1();
}
else
{
QP
f3();
}
break;
case 2:
QP
run2();
break;
case 0:
system("cls");
exit(0);
break;
default:
printf("输入错误\n");
break;
}
}
}
int main() //主函数
{
run();
return 0;
}