c语言学生管理界面菜单,C语言学生管理系统源代码

#include

#include

#include

#include

#include

/*

功能:

1.添加学生信息(学号,姓名,性别,5门课程成绩)

2.按学号或者姓名查找、修改、删除和保存各个学生的信息

3.按学号或者总分排序输出每个学生的信息以及总分、平均分和名次

4.计算全班各门功课的平均分,显示每门课程低于平均分的学生信息

5.显示每门课程成绩在90分以上的,以及每门课程不及格的学生信息

注意:必须排序后才能排出名次

*/

#define N 50

/*定义结构类型*/

struct student

{

int stuNo;

char name[10];

char sex[5];

float score1 ;

float score2;

float score3;

float score4;

float score5;

float sumScore;

float avgScore;

int ranking;      //排名

}stu[N];

/*函数声明*/

int login();

void add();

void del();

void delByIndex(int i);

void search();

int searchByNo();

int searchByName();

void update();

void updateByIndex(int i);

void display();

void sort();

void sortByNo();

void sortBySum();

void writeFile();

void readFile();

struct student input();

void lowScoreAvg();

void greaterThanNinty();

void failed();

int count=0;  //存储当前已有的学生人数

/*程序入口*/

void main()

{

int select;

int isSuccess;

int c = 0;//记录登入的次数

do

{

isSuccess = login();

if(!isSuccess)

{

printf("\n\t\t\t用户名不存在或密码错误,请检查后重新输入!\n");

printf("\n\t\t\t",2-c);

c++;

if(c==3)

{

printf("\n\t\t您已尝试登入三次且失败,系统将退出!!!\n");

exit(1);

}

fflush(stdin);

getch();

}

else

break;

}while(1);

do

{

system("cls");

printf("\n\t\t欢迎进入学生成绩管理系统\n");

printf("\n***********************************************\n");

printf("\n1.添加学生信息\n");

printf("\n2.删除学生信息\n");

printf("\n3.修改学生信息\n");

printf("\n4.查找学生信息\n");

printf("\n5.显示学生信息\n");

printf("\n6.学生信息排序\n");

printf("\n7.单门课程低于课程平均分的学生信息\n");

printf("\n8.每门课程成绩在90分以上的学生信息\n");

printf("\n9.每门课程不及格的学生信息\n");

printf("\n10.保存文件\n");

printf("\n11.打开文件\n");

printf("\n12.退出系统\n");

printf("\n**********************************************\n");

printf("\n\t请选择<1--12>:");

scanf("%d",&select);

if(select == 12)

{

printf("\n\t~~bye!!!\n");

break;

}

switch(select)

{

case 1:

add();

break;

case 2:

del();

break;

case 3:

update();

break;

case 4:

search();

break;

case 5:

display();

break;

case 6:

sort();

display();

printf("\n排序已完成,按任意键继续...");

fflush(stdin);

getch();

break;

case 7:

lowScoreAvg();

break;

case 8:

greaterThanNinty();

break;

case 9:

failed();

break;

case 10:

writeFile();

break;

case 11:

readFile();

break;

default:

printf("\n\t您输入的选项无效!按任意键重新输入...\n");

getch();

}

}while(1);

}

/*登录界面*/

int login()

{

int i=0;

char uname[20];

char pwd[20];

system("cls");

printf("\n\t-----------------------------------------------------------\n");

printf("\n\t\t用户名:");

gets(uname);

printf("\n\t\t密  码:");

fflush(stdin);

do

{

pwd[i] = getch();

if(pwd[i]!='\r')

{

i++;

printf("*");

}

}while(pwd[i]!='\r');

pwd[i]='\0';

//验证帐号密码

if(strcmp(uname,"admin")==0 && strcmp(pwd,"admin")==0)

return 1;

else

return 0;

}

/*信息录入*/

struct student input()

{

int i;

struct student st;

do{

printf("\n输入学号:");

scanf("%d",&st.stuNo);

if(searchByNo(st.stuNo)!=-1)

{

printf("\n您输入的学号已存在!!!按任意键重新输入...\n");

}

else

{

break;

}

}while(1);

fflush(stdin);

do{

printf("请输入姓名:");

scanf("%s",st.name);

//gets(st.name);

if(searchByName(st.name)!=-1)

{

printf("\n您输入的姓名已存在!!!按任意键重新输入...\n");

}

else

{

break;

}

}while(1);

fflush(stdin);

printf("请输入性别:");

scanf("%s",st.sex);

//gets(st.sex);

printf("请输入课程1的成绩:");

scanf("%f",&st.score1);

printf("请输入课程2的成绩:");

scanf("%f",&st.score2);

printf("请输入课程3的成绩:");

scanf("%f",&st.score3);

printf("请输入课程4的成绩:");

scanf("%f",&st.score4);

printf("请输入课程5的成绩:");

scanf("%f",&st.score5);

st.sumScore = st.score1 + st.score2 + st.score3 + st.score4 + st.score5 ;

st.avgScore =st.sumScore / 5;

return st;

}

/*添加学生*/

void add()

{

char ans;

do

{

stu[count] = input();

count++;

printf("\n\t信息录入完成,是否继续(y|n):");

fflush(stdin);

ans = getchar();

}while(ans == 'y'||ans == 'Y');

}

/*删除界面*/

void del()

{

int op;

char name[10];

int no;

int i;

do{

system("cls");

printf("主界面>删除界面");

printf("\n\t\t***********************************************\n");

printf("\n\t\t\t 1.根据学号删除\n");

printf("\n\t\t\t 2.根据姓名删除\n");

printf("\n\t\t\t 0.返回主菜单 \n");

printf("\n\t\t***********************************************\n");

printf("\n\t请选择: ");

scanf("%d",&op);

if(op == 0)

{

break;

}

switch(op)

{

case 1:

printf("请输入需要修改的学生信息的学号:");

scanf("%d",&no);

i=searchByNo();

if(i!=-1){

delByIndex(i);

}

else{

printf("\n您输入的学号不存在!!!\n");

}

break;

case 2:

printf("请输入需要修改的学生信息的姓名:");

scanf("%s",name);

//gets(name);

i=searchByName(name);

if(i!=-1){

delByIndex(i);

}

else{

printf("\n您输入的姓名不存在!!!\n");

}

break;

default:

printf("\n您输入的选项无效!!!按任意键重新输入...\n");

fflush(stdin);

getch();

}

}while(1);

}

/*根据学号删除学生信息*/

void delByIndex(int i)

{

char ans;

do

{

printf("\n需要删除的学生信息如下:\n");

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

printf("-------------------------------------------------------------------------------\n");

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

printf("\n确认删除该学生信息吗?:");

fflush(stdin);

ans = getchar();

if(ans == 'y' || ans =='Y')

{

int j;

for(j = i;j>count-1 ; j++)

{stu[j] = stu[j+1];}

count--;

printf("\n删除操作完成,按任意键继续...");

fflush(stdin);

getch();

}

printf("\n是否继续执行删除操作?:");

fflush(stdin);

ans = getchar();

if(ans == 'y'||ans == 'Y')

continue;

else

break;

}while(1);

}

/*修改界面*/

void update()

{

int op;

char name[10];

int no;

int i;

do{

system("cls");

printf("主界面>修改界面");

printf("\n\t\t***********************************************\n");

printf("\n\t\t\t 1.根据学号修改\n");

printf("\n\t\t\t 2.根据姓名修改\n");

printf("\n\t\t\t 0.返回主菜单 \n");

printf("\n\t\t***********************************************\n");

printf("\n\t请选择: ");

scanf("%d",&op);

if(op == 0)

{

break;

}

switch(op)

{

case 1:

printf("请输入需要修改的学生信息的学号:");

scanf("%d",&no);

i=searchByNo();

if(i!=-1){

updateByIndex(i);

}

else{

printf("\n您输入的学号不存在!!!\n");

}

break;

case 2:

printf("请输入需要修改的学生信息的姓名:");

scanf("%s",name);

//gets(name);

i=searchByName();

if(i!=-1){

updateByIndex(i);

}

else{

printf("\n您输入的姓名不存在!!!\n");

}

break;

default:

printf("\n您输入的选项无效!!!按任意键重新输入...\n");

fflush(stdin);

getch();

}

}while(1);

}

/*根据下标修改信息*/

void updateByIndex(int i)

{

printf("请输入修改后的性别:");

scanf("%s",stu[i].sex);

//gets(stu[i].sex);

printf("请输入修改后的课程1的成绩:");

scanf("%f",&stu[i].score1);

printf("请输入修改后的课程2的成绩:");

scanf("%f",&stu[i].score2);

printf("请输入修改后的课程3的成绩:");

scanf("%f",&stu[i].score3);

printf("请输入修改后的课程4的成绩:");

scanf("%f",&stu[i].score4);

printf("请输入修改后的课程5的成绩:");

scanf("%f",&stu[i].score5);

stu[i].sumScore = stu[i].score1 + stu[i].score2 + stu[i].score3 + stu[i].score4 + stu[i].score5 ;

stu[i].avgScore =stu[i].sumScore / 5;

}

/*查找界面*/

void search()

{

int op;

int no;

char name[10];

int i;

do{

system("cls");

printf("主界面>查找界面");

printf("\n\t\t***********************************************\n");

printf("\n\t\t\t 1.根据学号查找\n");

printf("\n\t\t\t 2.根据姓名查找\n");

printf("\n\t\t\t 0.返回主菜单 \n");

printf("\n\t\t***********************************************\n");

printf("\n\t请选择: ");

scanf("%d",&op);

if(op == 0)

{

break;

}

switch(op)

{

case 1:

printf("请输入要查找的学生信息的学号:");

scanf("%d",&no);

i=searchByNo(no);

printf("\n查询结果:\n");

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

printf("-------------------------------------------------------------------------------\n");

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

fflush(stdin);

getch();

break;

case 2:

printf("请输入姓名:");

scanf("%s",name);

//gets(name);

i=searchByName(name);

printf("\n查询结果:\n");

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

printf("-------------------------------------------------------------------------------\n");

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

fflush(stdin);

getch();

break;

default:

printf("\n您输入的选项无效!!!按任意键重新输入...\n");

fflush(stdin);

getch();

}

}while(1);

}

/*根据学号查找*/

int searchByNo(int stuNo)

{

int i;

for(i=0;i

{

if(stu[i].stuNo == stuNo)

return i;

}

return -1;

}

/*根据姓名查找*/

int searchByName(char stuName[])

{

int i;

for(i=0;i

{

if(strcmp(stu[i].name,stuName)==0)

return i;

}

return -1;

}

/*显示信息*/

void display()

{

system("cls");

int i;

printf("\n\t\t*** 显示学生 ***\n");

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

printf("===============================================================================\n");

for(i=0;i

{

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

}

printf("===============================================================================\n");

printf("\n\t\t按任意键返回主菜单...");

fflush(stdin);

getch();

}

/*排序界面*/

void sort()

{

int op;

do{

system("cls");

printf("主界面>排序界面");

printf("\n\t\t***********************************************\n");

printf("\n\t\t\t 1.按学号排序 \n");

printf("\n\t\t\t 2.按总分排序 \n");

printf("\n\t\t\t 0.返回主菜单 \n");

printf("\n\t\t***********************************************\n");

printf("\n\t请选择: ");

scanf("%d",&op);

if(op == 0)

{

break;

}

switch(op)

{

case 1:

sortByNo();

break;

case 2:

sortBySum();

break;

default:

printf("\n您输入的选项无效!!!按任意键重新输入...\n");

fflush(stdin);

getch();

}

}while(1);

}

/*按学号排序*/

void sortByNo()

{

sortBySum();

int i,j;

struct student temp;

for(i=0;i

{

for(j=0;j

{

if(stu[j].stuNo>stu[j+1].stuNo)

{

temp=stu[j+1];

stu[j+1]=stu[j];

stu[j]=temp;

}

}

}

}

/*按总分排序*/

void sortBySum()

{

int i,j;

struct student temp;

for(i=0;i

{

for(j=0;j

{

if(stu[j].sumScore

{

temp=stu[j+1];

stu[j+1]=stu[j];

stu[j]=temp;

}

}

}

//排名

for(i=0;i

{

stu[i].ranking=i+1;

}

}

/*保存文件*/

void writeFile()

{

FILE *fp;

fp = fopen("stu.txt","wb");

int i;

for(i=0;i

{

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

fwrite(&stu[i],sizeof(struct student),1,fp);

}

fclose(fp);

printf("\n文件保存完毕,按任意键继续...\n");

printf("\n");

fflush(stdin);

getch();

}

/*读取文件*/

void readFile()

{

FILE *fp;

fp = fopen("stu.txt","rb");

if(fp==NULL)

{

printf("\nSorry,您要打开的文件不存在。按任意键继续...\n");

fflush(stdin);

getch();

}

else

{

fseek(fp,0,2);

count= ftell(fp)/sizeof (struct student);

rewind(fp);

int i;

for(i=0;i

{

fread(&stu[i],sizeof(struct student),1,fp);

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

}

fclose(fp);

printf("\n文件打开完成,按任意键返回...\n");

printf("\n");

fflush(stdin);

getch();

}

}

/*单门课程低于课程平均分的学生信息*/

void lowScoreAvg()

{

int i;

float avgCourseScore[5];

for(i=0;i

{

avgCourseScore[0]+=stu[i].score1;

avgCourseScore[1]+=stu[i].score2;

avgCourseScore[2]+=stu[i].score3;

avgCourseScore[3]+=stu[i].score4;

avgCourseScore[4]+=stu[i].score5;

}

//求出每门课的平均分

for(i=0;i<5;i++)

{

avgCourseScore[i]=avgCourseScore[i]/5;

}

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

for(i=0;i

{

if(stu[i].score1

{

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

fflush(stdin);

getch();

}

}

}

/*每门课程成绩在90分以上的学生信息*/

void greaterThanNinty()

{

int i;

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

for(i=0;i

{

if(stu[i].score1>90&&stu[i].score2>90&&stu[i].score3>90&&stu[i].score4>90&&stu[i].score5>90)

{

printf("%d\t%s\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

fflush(stdin);

getch();

}

}

}

/*每门课程不及格的学生信息*/

void failed()

{

int i;

printf("\n学号\t姓名\t性别\t课程1\t课程2\t课程3\t课程4\t课程5\t总分\t平均分\n");

for(i=0;i

{

if(stu[i].score1<60&&stu[i].score2<60&&stu[i].score3<60&&stu[i].score4<60&&stu[i].score5<60)

{

printf("%d\t%s\t%s\t%5.2f\t

%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",

stu[i].stuNo,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].score5,

stu[i].sumScore,stu[i].avgScore);

fflush(stdin);

getch();

}

}

}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值