c语言期末作业
学生成绩管理系统
本系统能够对学生成绩管理功能,包括:
1.对多个学生成绩进行管理,至少10个学生。
2.每个学生至少3门课程。
3.对每个学生大学期间的成绩进行记录。
4.修改学生成绩。
5.不同用户的权限不同,管理员拥有所有权限(打印、登记、添加、排序、查询、修改、删除学生信息)、教师可以排序、查询、登记和修改成绩;学生可以查询成绩。 其中查询分姓名查询、学号查询;排序分总成绩排序及各科成绩排序.
6.成绩说明:0~100,整数。
7.成绩需要保存进文件,程序初始化时读取文件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int g=3; //登陆密码时允许输入的次数
char prefix_a[8]="asdf"; //管理员密码
char prefix_t[8]="asdf"; //教师密码
char prefix_s[8]="asdf"; //学生密码
int number; //全局变量学生人数
void menu(); //主界面函数
void administrator(); //管理端界面
void teachar(); //教师端界面
void student(); //学生端界面
void color(short x); //改变字体颜色
void password_a(); //管理端密码登陆
void password_t(); //教师端密码登陆
void password_s(); //学生端密码登陆
void input(); //登记学生成绩
void delete_(); //删除学生信息
void search(); //查询学生成绩
void change(); //修改学生成绩
void show(); //打印学生信息
void add(); //添加学生信息
void print_table(); //列表头
void read(); //从文件中读取信息
void back_a(); //管理端返回上一界面
void back_t(); //教师端返回上一界面
void back_s(); //学生端返回上一界面
void save(); //保存学生信息函数
void back_sort_a(); //管理端排序功能 返回界面
void back_sort_t(); //教师端排序功能 返回界面
void sort_a(); //管理端排序学生成绩
void sort_t(); //教师端排序学生成绩
void sort_sum(); //按总成绩排序
void sort_grade1(); //按数学成绩排序
void sort_grade2(); //按英语成绩排序
void sort_grade3(); //按物理成绩排序
void search_a(); //管理端查询学生成绩
void search_t(); //教师端查询学生成绩
void search_s(); //学生端查询学生成绩
void search_id(); //按学号查询
void search_name(); //按学号查询
void back_search_a(); //管理端查询功能 返回界面
void back_search_t(); //教师端查询功能 返回界面
void back_search_s(); //学生端查询功能 返回界面
struct student{
int id; //学号
char name[20]; //姓名
char sex[5]; //性别
float grade1; //高等数学
float grade2; //大学英语
float grade3; //大学物理
float avg; //平均分
float sum; //总分
}stu[100];
int main()
{
menu();
return 0;
}
void menu() //主界面
{
int l;
printf("\t欢迎使用学生信息系统\t\n");
printf("\t 1.管理端 \t\n");
printf("\t 2.教师端 \t\n");
printf("\t 3.学生端 \t\n");
printf("\t 4.退出 \n");
printf("=================================\n");
printf("请输入选择的登陆端: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
password_a();
break;
case 2:
system("cls");
password_t();
break;
case 3:
system("cls");
password_s();
break;
case 4:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
menu();
break;
}
}
void administrator() //管理端界面
{
read();
int l;
printf("\t欢迎使用管理端系统\t\n");
printf("\t 1.打印学生成绩 \t\n");
printf("\t 2.登记学生成绩 \t\n");
printf("\t 3.添加学生成绩 \t\n");
printf("\t 4.排序学生成绩 \t\n");
printf("\t 5.查询学生成绩\t\n");
printf("\t 6.修改学生信息 \n");
printf("\t 7.删除学生信息 \n");
printf("\t 8.返回 \n");
printf("\t 9.退出 \n");
printf("=================================\n");
printf("请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
show();
back_a();
break;
case 2:
system("cls");
input();
back_a();
break;
case 3:
system("cls");
add();//添加学生信息();
back_a();
break;
case 4:
system("cls");
sort_a();
back_a();
break;
case 5:
system("cls");
search_a();
back_a();
break;
case 6:
system("cls");
change();
back_a();
break;
case 7:
system("cls");
delete_();
back_a();
break;
case 8:
system("cls");
menu();
break;
case 9:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
administrator();
break;
}
}
void teachar() //教师端界面
{
read();
int l;
printf("\t欢迎使用教师端系统\t\n");
printf("\t 1.打印学生成绩 \t\n");
printf("\t 2.登记学生成绩 \t\n");
printf("\t 3.排序学生成绩 \t\n");
printf("\t 4.查询学生成绩\t\n");
printf("\t 5.修改学生信息 \n");
printf("\t 6.返回 \n");
printf("\t 7.退出 \n");
printf("=================================\n");
printf("请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
show();
back_t();
break;
case 2:
system("cls");
input();
back_t();
break;
case 3:
system("cls");
sort_t();
back_t();
break;
case 4:
system("cls");
search_t();
back_t();
break;
case 5:
system("cls");
change();
back_t();
break;
case 6:
system("cls");
menu();
break;
case 7:
printf("感谢您的使用,已退出!");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
teachar();
break;
}
}
void student() //学生端界面
{
read();
int l;
printf("\t欢迎使用学生端系统\t\n");
printf("\t 1.打印学生成绩 \t\n");
printf("\t 2.查询学生成绩\t\n");
printf("\t 3.返回 \n");
printf("\t 4.退出 \n");
printf("=================================\n");
printf("请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
show();
back_s();
break;
case 2:
system("cls");
search_s();
back_s();
break;
case 3:
system("cls");
menu();
break;
case 4:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
student();
break;
}
}
void color(short x) //改变字体颜色
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
}
void password_a() //管理端密码登陆
{
char username[20];
char password[20];
int flag;
while(g--){
printf("\t管理员您好,欢迎使用登陆界面!\n");
printf("请输入账户: ");
scanf("%s",username);
printf("请输入密码: ");
scanf("%s",password);
flag=strcmp(prefix_a,password);
if(flag == 0)
{
color(2);
printf("[输入正确]请等待3秒!\n");
Sleep(3000);
system("cls");
color(7);
administrator();
break;
}
else
{
color(772);
if(g==0){
printf("[警告]您已输错三次,将自动退出系统!\n");
color(7);
exit(1);
}
printf("[输入错误]请3秒后重新输入正确密码!\n");
Sleep(3000);
system("cls");
color(7);
continue;
}
}
}
void password_t() //教师端密码登陆
{
char username[20];
char password[20];
int flag;
while(g--){
printf("\t老师您好,欢迎使用登陆界面!\n");
printf("请输入账户: ");
scanf("%s",username);
printf("请输入密码: ");
scanf("%s",password);
flag=strcmp(prefix_t,password);
if(flag == 0)
{
color(2);
printf("[输入正确]请等待3秒!\n");
Sleep(3000);
system("cls");
color(7);
teachar();
break;
}
else
{
color(772);
if(g==0){
printf("[警告]您已输错三次,将自动退出系统!\n");
color(7);
exit(1);
}
printf("[输入错误]请3秒后重新输入正确密码!\n");
Sleep(3000);
system("cls");
color(7);
continue;
}
}
}
void password_s() //学生端密码登陆
{
char username[20];
char password[20];
int flag;
while(g--){
printf("\t同学你好,欢迎使用登陆界面!\n");
printf("请输入账户: ");
scanf("%s",username);
printf("请输入密码: ");
scanf("%s",password);
flag=strcmp(prefix_s,password);
if(flag == 0)
{
color(2);
printf("[输入正确]请等待3秒!\n");
Sleep(3000);
system("cls");
student();
break;
}
else
{
color(772);
if(g==0){
printf("[警告]您已输错三次,将自动退出系统!\n");
color(7);
exit(1);
}
printf("[输入错误]请3秒后重新输入正确密码!\n");
Sleep(3000);
system("cls");
color(7);
continue;
}
}
}
void back_a() //管理端返回上一界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
administrator();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_a();
break;
}
}
void back_t() //教师端返回上一界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
teachar();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_t();
break;
}
}
void back_s() //学生端返回上一界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
student();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_s();
break;
}
}
void read() //从文件中读取信息
{
FILE *fp;
int i;
fp=fopen("学生信息.txt","r");
if(fp==NULL)
{
color(772);
printf("[警告]文件打开失败\n");
color(7);
}
else {
color(2);
printf("[tip]文件读取成功\n");
color(7);
fscanf(fp,"%d\n",&number);
for(i=0;i<number;i++)
{
fscanf(fp,"%d\t%s\t%s\t%f\t%f\t%f\t%f\t%f\n",&stu[i].id,stu[i].name,stu[i].sex,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3,&stu[i].avg,&stu[i].sum);
}
}
fclose(fp);
}
void print_table() //列表头
{
printf("\t\t\t学号 姓名 性别 高等数学 大学英语 大学物理 平均分 总分\n");
printf("\t\t\t---------------------------------------------------------------------------\n");
}
void input() //登记学生成绩
{
int i;
struct student stu[100];
FILE *fp;
fp=fopen("学生信息.txt","w");
if(fp==NULL)
{
color(772);
printf("[警告]文件打开失败\n");
}
system("cls");
color(7);
printf("\t欢迎进入学生信息录入系统");
printf("\n学生总人数: ");
scanf("%d",&number);
if(number>0){
fprintf(fp,"%d\n",number);
for(i=0;i<number;i++)
{
printf("\n请输入第%d个学生的信息:\n",i+1);
printf("学号: ");
scanf("%d",&stu[i].id);
getchar();
printf("姓名: ");
scanf("%s",stu[i].name);
getchar();
printf("性别: ");
scanf("%s",stu[i].sex);
getchar();
printf("高等数学: ");
scanf("%f",&stu[i].grade1);
getchar();
printf("大学英语: ");
scanf("%f",&stu[i].grade2);
getchar();
printf("大学物理: ");
scanf("%f",&stu[i].grade3);
stu[i].sum= stu[i].grade1 +stu[i].grade2 + stu[i].grade3 ;
stu[i].avg = (stu[i].sum)/3;
fprintf(fp,"\t\t\t%d\t%s\t%s\t%.0f\t%.0f\t%.0f\t%.1f\t%.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
}
fclose(fp);
}
else{
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
input();
}
}
void show() //打印学生信息
{
system("cls");
int i;
print_table();
for(i=0;i<number;i++){
printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
}
printf("\t\t\t---------------------------------------------------------------------------\n");
}
void delete_() //删除学生信息
{
int num,a,v;
printf("\t请输入学生学号:");
scanf("%d",&num);
int i, j;
for (i = 0;i<number; i++)
{
if (stu[i].id==num)
{
printf("\t你将要删除该学生信息\n\n");
print_table();
printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
printf("\n\t1.确认删除");
printf("\n\t2.取消删除");
printf("\n\t=========================");
printf("\n\t请输入:");
scanf("%d", &a);
if (a == 1)
{
for(j=i;j<number-1;j++){
stu[j]=stu[j+1];
}
color(2);
printf("\n\t[tip]删除成功!");
color(7);
number--;
save(); //保存学生信息
break;
}
else
{
color(2);
printf("\n\t[tip]已取消操作!");
color(7);
break;
}
}
}
if(i==number) //该学号不存在
{
color(772);
printf("\n\t[错误]未找到该学号学生");
color(7);
}
printf("\n\t1.继续删除 2.返回上一级\n");
printf("\t请输入:");
scanf("%d", &v);
if (v == 1)
{
system("cls");
delete_();
}
else
{
system("cls");
administrator();
}
}
void save() //保存学生信息函数
{
FILE* fp;
int i,ret;
fp=fopen("学生信息.txt", "w");
if (fp == NULL)
{
color(772);
printf("\n\t[警告]文件打开失败\n");
color(7);
}
fprintf(fp,"%d\n",number);
for (i = 0; i <number; i++)
{
ret=fprintf(fp,"\t\t\t%d\t%s\t%s\t%.0f\t%.0f\t%.0f\t%.1f\t%.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
}
if (ret<0)
{
color(772);
printf("\n\t[错误]文件写入失败\n");
color(7);
}
else
{
color(2);
printf("\n\t[tip]文件写入成功\n");
color(7);
}
fclose(fp); //关闭文件指针
}
void change() //修改学生成绩
{
char name2[20],sex2[5];
float grade1_1,grade2_1,grade3_1;
int id2,avg2,sum2,i,b;
printf("\t请输入要修改的学生的学号:");
scanf("%d",&id2);
for (i =0;i<number;i++)
{
if (stu[i].id ==id2 )
{
printf("\t修改前:\n");
print_table();
printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
printf("\n\t请输入修改后信息\n");
printf("\t学生姓名:");
scanf("%s",name2);
getchar();
printf("\t学生性别:");
scanf("%s", sex2);
getchar();
printf("\t高等数学:");
scanf("%f", &grade1_1);
getchar();
printf("\t大学英语:");
scanf("%f", &grade2_1);
getchar();
printf("\t大学物理:");
scanf("%f", &grade3_1);
getchar();
sum2=grade1_1+grade2_1+grade3_1;
avg2=sum2/3;
printf("\n\t1.确认修改");
printf("\n\t2.取消修改");
printf("\n\t=========================");
printf("\n\t请输入:");
scanf("%d", &b);
if (b== 1)
{
strcpy(stu[i].name, name2);
strcpy(stu[i].sex, sex2);
stu[i].grade1 = grade1_1;
stu[i].grade2 = grade2_1;
stu[i].grade3 = grade3_1;
stu[i].avg = avg2;
stu[i].sum=sum2;
printf("\n\t修改后:\n");
printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
save(); //保存学生信息到文件中
}
break;
}
}
if (i == number)
{
color(772);
printf("\n\t[错误]未找到该学号学生\n");
color(7);
}
printf("\t是否继续修改,请选择(y/n):");
getchar();
if (getchar() == 'y')
{
system("cls");
change();
}
}
void sort_a() //管理员排序学生成绩
{
int l;
printf("\t欢迎使用排序系统\t\n");
printf("\t 1.按总成绩排序 \t\n");
printf("\t 2.按数学成绩排序 \t\n");
printf("\t 3.按英语成绩排序\t\n");
printf("\t 4.按物理成绩排序 \n");
printf("\t 5.返回 \n");
printf("\t 6.退出 \n");
printf("\t=================================\n");
printf("\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
sort_sum();
back_sort_a();
break;
case 2:
system("cls");
sort_grade1();
back_sort_a();
break;
case 3:
system("cls");
sort_grade2();
back_sort_a();
break;
case 4:
system("cls");
sort_grade3();
back_sort_a();
break;
case 5:
system("cls");
administrator();
break;
case 6:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
sort_a();
break;
}
}
void sort_t() //教师排序学生成绩
{
int l;
printf("\t欢迎使用排序系统\t\n");
printf("\t 1.按总成绩排序 \t\n");
printf("\t 2.按数学成绩排序 \t\n");
printf("\t 3.按英语成绩排序\t\n");
printf("\t 4.按物理成绩排序 \n");
printf("\t 5.返回 \n");
printf("\t 6.退出 \n");
printf("\t=================================\n");
printf("\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
sort_sum();
back_sort_t();
break;
case 2:
system("cls");
sort_grade1();
back_sort_t();
break;
case 3:
system("cls");
sort_grade2();
back_sort_t();
break;
case 4:
system("cls");
sort_grade3();
back_sort_t();
break;
case 5:
system("cls");
teachar();
break;
case 6:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
sort_t();
break;
}
}
void sort_sum() //按总成绩排序
{
int k,j,min=0,max=0;
struct student temp;
for (k = 0; k< number ; k++)
{
for (j = 0; j < number - 1 - k; j++)
{
if (stu[j].sum < stu[j + 1].sum)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
for(int i=0;i<number;i++){
if(stu[i].sum<stu[min].sum)
min=i;
if(stu[i].sum>stu[max].sum)
max=i;
}
save();
print_table();
show();
printf("\t总分最高分: ");
printf("\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-9.1f(%.0f)\n",
stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
printf("\t总分最低分: ");
printf("\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-9.1f(%.0f)\n",
stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
printf("\t-------------------------------------------------------------------------------------------");
}
void sort_grade1() //按数学成绩排序
{
int k,j,min=0,max=0;
struct student temp;
for (k = 0; k< number ; k++)
{
for (j = 0; j < number - 1 - k; j++)
{
if (stu[j].grade1 < stu[j + 1].grade1)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
for(int i=0;i<number;i++){
if(stu[i].grade1<stu[min].grade1)
min=i;
if(stu[i].grade1>stu[max].grade1)
max=i;
}
save();
print_table();
show();
printf("\t数学最高分: ");
printf("\t%-10d%-10s%-9s(%-3.0f)\t%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
printf("\t数学最低分: ");
printf("\t%-10d%-10s%-9s(%-3.0f)\t%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
printf("\t-------------------------------------------------------------------------------------------");
}
void sort_grade2() //按英语成绩排序
{
int k,j,min=0,max=0;
struct student temp;
for (k = 0; k< number ; k++)
{
for (j = 0; j < number - 1 - k; j++)
{
if (stu[j].grade2 < stu[j + 1].grade2)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
for(int i=0;i<number;i++){
if(stu[i].grade2<stu[min].grade2)
min=i;
if(stu[i].grade2>stu[max].grade2)
max=i;
}
save();
print_table();
show();
printf("\t英语最高分: ");
printf("\t%-10d%-10s%-10s%-9.0f(%-3.0f)\t %-10.0f%-10.1f%-10.0f\n",
stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
printf("\t英语最低分: ");
printf("\t%-10d%-10s%-10s%-9.0f(%-3.0f)\t %-10.0f%-10.1f%-10.0f\n",
stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
printf("\t-------------------------------------------------------------------------------------------");
}
void sort_grade3() //按物理成绩排序
{
int k,j,min=0,max=0;
struct student temp;
for (k = 0; k< number ; k++)
{
for (j = 0; j < number - 1 - k; j++)
{
if (stu[j].grade3 < stu[j + 1].grade3)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
for(int i=0;i<number;i++){
if(stu[i].grade3<stu[min].grade3)
min=i;
if(stu[i].grade3>stu[max].grade3)
max=i;
}
save();
print_table();
show();
printf("\t物理最高分: ");
printf("\t%-10d%-10s%-10s%-10.0f%-9.0f(%-3.0f)\t %-10.1f%-10.0f\n",
stu[max].id,stu[max].name,stu[max].sex,stu[max].grade1,stu[max].grade2,stu[max].grade3,stu[max].avg,stu[max].sum);
printf("\t物理最低分: ");
printf("\t%-10d%-10s%-10s%-10.0f%-9.0f(%-3.0f)\t %-10.1f%-10.0f\n",
stu[min].id,stu[min].name,stu[min].sex,stu[min].grade1,stu[min].grade2,stu[min].grade3,stu[min].avg,stu[min].sum);
printf("\t-------------------------------------------------------------------------------------------");
}
void search_a() //管理端查询学生成绩
{
int l;
printf("\t欢迎使用成绩查询系统\t\n");
printf("\t 1.按学号查询 \t\n");
printf("\t 2.按姓名查询 \t\n");
printf("\t 3.返回 \n");
printf("\t 4.退出 \n");
printf("\t=================================\n");
printf("\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
search_id();
back_search_a();
break;
case 2:
system("cls");
search_name();
back_search_a();
break;
case 3:
system("cls");
administrator();
break;
case 4:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
search_a();
break;
}
}
void search_t() //教师端查询学生成绩
{
int l;
printf("\t欢迎使用成绩查询系统\t\n");
printf("\t 1.按学号查询 \t\n");
printf("\t 2.按姓名查询 \t\n");
printf("\t 3.返回 \n");
printf("\t 4.退出 \n");
printf("\t=================================\n");
printf("\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
search_id();
back_search_t();
break;
case 2:
system("cls");
search_name();
back_search_t();
break;
case 3:
system("cls");
teachar();
break;
case 4:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
search_t();
break;
}
}
void search_s() //学生端查询学生成绩
{
int l;
printf("\t欢迎使用成绩查询系统\t\n");
printf("\t 1.按学号查询 \t\n");
printf("\t 2.按姓名查询 \t\n");
printf("\t 3.返回 \n");
printf("\t 4.退出 \n");
printf("\t=================================\n");
printf("\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
search_id();
back_search_s();
break;
case 2:
system("cls");
search_name();
back_search_s();
break;
case 3:
system("cls");
student();
break;
case 4:
printf("感谢您的使用,已退出!\n");
exit(0);
default:
color(772);
printf("[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
search_s();
break;
}
}
void search_id() //按学号查询
{
int id3,i;
printf("\t学生的学号:");
scanf("%d",&id3);
for ( i =0;i<number;i++)
{
if (stu[i].id ==id3 )
{
printf("\t该学生信息如下:\n ");
print_table();
printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
break;
}
}
if (i == number)
{
color(772);
printf("\n\t[错误]未找到该学号学生\n");
color(7);
}
printf("\n\t是否继续修改,请选择(y/n):");
getchar();
if (getchar() == 'y')
{
system("cls");
search_id();
}
}
void search_name() //按姓名查询
{
char name1[20];
int i;
printf("\t学生的姓名:");
scanf("%s",name1);
for (i =0;i<number;i++)
{
if (strcmp(stu[i].name,name1)==0 )
{
printf("\t该学生信息如下:\n ");
print_table();
printf("\t\t\t%-10d%-10s%-10s%-10.0f%-10.0f%-10.0f%-10.1f%-10.0f\n",
stu[i].id,stu[i].name,stu[i].sex,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].avg,stu[i].sum);
break;
}
}
if (i == number)
{
color(772);
printf("\n\t[错误]未找到该学生\n");
color(7);
}
printf("\n\t是否继续修改,请选择(y/n):");
getchar();
if (getchar() == 'y')
{
system("cls");
search_name();
}
}
void back_search_a() //管理端查询功能 返回界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回管理端");
printf("\n\t3.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
administrator();
break;
case 3:
system("cls");
search_a();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_search_a();
break;
}
}
void back_search_t() //教师端查询功能 返回界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回教师端");
printf("\n\t3.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
teachar();
break;
case 3:
system("cls");
search_t();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_search_t();
break;
}
}
void back_search_s() //学生端查询功能 返回界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回学生端");
printf("\n\t3.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
student();
break;
case 3:
system("cls");
search_s();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_search_s();
break;
}
}
void back_sort_a() //管理端排序功能 返回界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回管理端");
printf("\n\t3.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
administrator();
break;
case 3:
system("cls");
sort_a();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_sort_a();
break;
}
}
void back_sort_t() //教师端排序功能 返回界面
{
int l;
printf("\n\t1.返回主界面");
printf("\n\t2.返回教师端");
printf("\n\t3.返回上一级");
printf("\n\t=========================");
printf("\n\t请输入要执行的操作: ");
scanf("%d",&l);
switch(l){
case 1:
system("cls");
menu();
break;
case 2:
system("cls");
teachar();
break;
case 3:
system("cls");
sort_t();
break;
default:
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
back_sort_t();
break;
}
}
void add() //添加学生信息
{
int i = number, j, flag,m;
printf("\t请输入待增加的学生数:");
scanf("%d", &m);
if (m > 0){
do
{
flag = 1;
printf("\n\t请输入第%d位学生的信息:\n", i + 1);
while (flag)
{
flag = 0;
printf("\t学号: ");
scanf("%d", &stu[i].id);
for (j = 0; j < i; j++){
if (stu[i].id==stu[j].id){
color(772);
printf("\t[错误]已存在该学号学生,请重新输入!\n");
color(7);
flag = 1;
break;
}
}
}
printf("\t姓名: ");
scanf("%s",stu[i].name);
getchar();
printf("\t性别: ");
scanf("%s",stu[i].sex);
getchar();
printf("\t高等数学: ");
scanf("%f",&stu[i].grade1);
getchar();
printf("\t大学英语: ");
scanf("%f",&stu[i].grade2);
getchar();
printf("\t大学物理: ");
scanf("%f",&stu[i].grade3);
stu[i].sum= stu[i].grade1 +stu[i].grade2 + stu[i].grade3 ;
stu[i].avg = (stu[i].sum)/3;
if (0 == flag){
i++;
}
} while (i<number + m);
}
else
{
color(772);
printf("\t[输入错误]请3秒后重新输入有效数字!\n");
Sleep(3000);
color(7);
system("cls");
add();
}
number += m;
color(2);
printf("\t[成功]学生信息添加完毕!!!");
color(7);
save();
}
文件素材:
5
9 李五 男 76 76 100 84.0 252
6 丝丝 女 9 100 98 69.0 207
2 李四 男 89 79 67 78.3 235
1 张三 男 35 43 67 48.3 145
7 苏苏 女 98 12 53 54.3 163
今天的文章c语言 学生成绩管理系统分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/8362.html