| 
 | 
 
 
发表于 2021-7-2 21:59:07
|
显示全部楼层
 
 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define NUM 1000 
void denglu();void caidan();int  
shuru();void cha();void shanchu 
();void xiugai();void cr();void 
pxxz();void xm();void xh();void 
zhenti();void xmsc();void xhsc() 
;void cr1();int N=0; 
int main() 
{denglu(); 
caidan(); 
shuru(); 
cha(); 
shanchu(); 
xiugai(); 
cr(); 
return 0; 
} 
void denglu()//登录主页 
{char zhanghao[20]={"ZXLWSD"}; 
int mi=123; 
char y[20]; 
int m,i=1; 
printf("***************用户登录***************\n"); 
while(i<=3) 
{ 
printf("请输入用户名:\n"); 
scanf("%s",y); 
printf("请输入密码:\n"); 
scanf("%d",&m); 
if(strcmp(zhanghao,y)==0&&mi==m) 
{printf("登录成功!\n"); 
caidan(); 
break;} 
else 
printf("您输入的账户与密码不匹配请重新输入!\n"); 
i++; 
} 
if(i<=3) 
printf("\n"); 
else 
printf("操作过频繁,请重新启用!\n"); 
exit(0); 
} 
void caidan()//登录菜单 
{ 
printf("**********主菜单**********\n"); 
int a; 
while(1) 
{printf("******************\n"); 
printf("*1:输入成绩       *\n"); 
printf("*2:查询成绩       *\n"); 
printf("*3:删除成绩       *\n"); 
printf("*4:成绩修改       *\n"); 
printf("*5:成绩排名       *\n"); 
printf("*6:插入成绩       *\n"); 
printf("*7:退出           *\n"); 
printf("*请输入您的选项: *\n"); 
printf("*******************\n"); 
scanf("%d",&a); 
switch(a) 
{ 
case 1:printf("输入成绩\n");shuru();break; 
case 2:printf("查询成绩\n");cha();break; 
case 3:printf("删除成绩\n");shanchu();break; 
case 4:printf("成绩修改\n");xiugai(); break; 
case 5:printf("成绩排名\n");pxxz();break; 
case 6:printf("插入成绩\n");cr();break; 
case 7:printf("退出\n");exit(0);break; 
default:printf("输入数据出错\n"); 
} 
} 
} 
struct student 
{int num; 
char name[10]; 
float score[3]; 
}stu[50]; 
void input(); 
void print(); 
int shuru() 
{printf("请输入学生个数:\n"); 
scanf("%d",&N); 
input(stu); 
print(stu); 
return 0; 
} 
void input() 
{int i; 
for (i=0; i<N; i++) 
{ 
printf("请输入第%d个学生的学号,姓名,语文,数学,英语:\n", i+1); 
scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); 
} 
printf("输入成功!\n"); 
} 
void print() 
{ 
int i; 
float average;//平均数 
float ts;//总分 
for(i=0; i<N; i++) 
{ 
printf("请输入第%d个学生的学号,姓名,语文,数学,英语:\n", i+1); 
printf("学号%d 姓名%s 成绩1:%.1f 成绩2:%.1f 成绩3:%.1f ",stu[i].num, stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]); 
ts=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; 
average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; 
printf("总分%.1f 平均分%.1f\n",ts,average); 
} 
} 
void cha() 
{printf("*********查找菜单*********\n"); 
int b; 
while(1) 
{printf("**************************\n"); 
printf("*1:姓名查找               *\n"); 
printf("*2:学号查找               *\n"); 
printf("*3:查询所有成绩           *\n"); 
printf("*4:返回上一级菜单         *\n"); 
printf("*请输入需要查找按键:     *\n"); 
printf("***************************\n"); 
scanf("%d",&b); 
switch(b) 
{ 
case 1:xm(stu);break; 
case 2:xh(stu);break; 
case 3:zhenti(stu);break; 
case 4:return;break; 
default:printf("输入数据出错\n"); 
} 
} 
} 
void zhenti() 
{ 
int i; 
float average;//平均数 
float ts;//总分 
for(i=0;i<N;i++) 
{ 
printf("学号%d 姓名%s 语文为%.1f 数学为%.1f 英语为%.1f\n",stu[i].num, stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]); 
ts=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; 
average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; 
printf("总分%.1f 平均分%.1f\n ",ts,average); 
} 
} 
void xm()//姓名查找 
{ 
int count=0; 
int i; 
float average;//平均数 
float ts;//总分 
char name1[10]; 
printf("请输入要查找的姓名:\n"); 
scanf(" %s",name1); 
for(i=0;i<N;i++) 
{ 
if(strcmp(name1,stu[i].name)==0) 
{ 
printf("学号为%d 姓名为%s 语文为%.1f 数学为%.1f 英语为%.1f",stu[i].num, stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]); 
ts=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; 
average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; 
printf("总分%.1f 平均分%.1f\n",ts,average); 
count++; 
} 
} 
if(count==0) 
printf("输入姓名有误!\n"); 
} 
void xh()//学号查找 
{ 
int i; 
int num1; 
float average;//平均数 
float ts;//总分 
printf("请输入要查找的学号:\n"); 
scanf(" %d",&num1); 
for(i=0;i<N;i++) 
{ 
if(num1==stu[i].num) 
{ 
printf("学号%d 姓名%s 语文为%.1f 数学为%.1f 英语为%.1f\n",stu[i].num, stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]); 
ts=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; 
average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; 
printf("总分%.1f平均分%.1f\n",ts,average); 
break; 
} 
} 
if(i==N) 
printf("输入的学号有误!\n"); 
} 
void shanchu()//删除菜单 
{printf("*********删除菜单*********\n"); 
int c; 
while(1) 
{printf("******************** \n"); 
printf("*请输入删除途径:    *\n"); 
printf("*1:姓名删除          *\n"); 
printf("*2:学号删除          *\n"); 
printf("*3:返回上一级菜单    *\n"); 
printf("**********************\n"); 
scanf("%d",&c); 
switch(c) 
{ 
case 1:xmsc(stu);break; 
case 2:xhsc(stu);break; 
case 3:return;break; 
default:printf("输入数据出错\n"); 
} 
} 
} 
void xmsc()//姓名删除 
{int count=0; 
int i,j; 
float average;//平均数 
float ts;//总分 
char name2[10]; 
printf("请输入要删除的姓名:\n"); 
scanf(" %s",name2); 
for(i=0;i<N;i++) 
{ 
if(strcmp(name2,stu[i].name)==0) 
{ 
count++; 
for(j=i;j<N-1;j++) 
{ 
stu[j]=stu[j+1]; 
} 
printf("学号%d 姓名%s 语文为%.1f 数学为%.1f 英语为%.1f ",stu[i].num, stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]); 
ts=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; 
average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; 
printf("总分%.1f 平均分%.1f\n",ts,average); 
N--; 
} 
} 
printf("删除成功!\n"); 
if(count==0) 
printf("输入有误!"); 
} 
void xhsc()//学号删除 
{int i,j; 
int num2; 
float average;//平均数 
float ts;//总分 
printf("请输入要删除的学号:\n"); 
scanf(" %d",&num2); 
for(i=0;i<N;i++) 
{ 
if(num2==stu[i].num) 
{ 
for(j=i;j<N-1;j++) 
{stu[j]=stu[j+1]; 
} 
printf("学号%d 姓名%s 语文为%.1f 数学为%.1f 英语为%.1f ",stu[i].num, stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]); 
ts=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; 
average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; 
printf("总分%.1f 平均分%.1f\n",ts,average); 
N--; 
} 
} 
printf("删除成功!\n"); 
if(i==N-1) 
printf("输入的学号有误!\n"); 
 
} 
void xiugai()//修改成绩 
{ 
int i,k; 
int num3,s1; 
char s2[10]; 
float s3,s4,s5; 
printf("请输入修改学生学号:\n"); 
scanf("%d",&num3); 
for(i=0;i<N;i++) 
{ 
if(num3==stu[i].num) 
{num3=i; 
printf("*********修给界面***********\n"); 
printf("*    1.修改姓名            *\n"); 
printf("*    2.修改语文成绩          *\n"); 
printf("*    3.修改数学成绩          *\n"); 
printf("*    4.修改英语成绩          *\n"); 
printf("*    5.退出本菜单          *\n"); 
printf("****************************\n"); 
while(1) 
{ 
printf("请选择修改内容编号:\n"); 
scanf("%d",&k); 
switch(k) 
{ 
case 1:printf("    请输入新姓名; ");scanf("%s",s2);strcpy(stu[i].name,s2);break; 
case 2:printf("    请输入新语文成绩; ");scanf("%f",&s3);stu[i].score[0]=s3;break; 
case 3:printf("    请输入新数学成绩; ");scanf("%f",&s4);stu[i].score[1]=s4;break; 
case 4:printf("    请输入新英语成绩; ");scanf("%f",&s5);stu[i].score[2]=s5;break; 
case 5:return;break; 
} 
} 
} 
else 
printf("   "); 
} 
} 
void xhpx()//按照学号排序 
{int i,j; 
float average;//平均数 
float ts;//总分 
struct student stu1;//定义一个中间量 
for(i=0;i<N-1;i++) 
{for(j=i+1;j<N;j++) 
{ 
if(stu[i].num>stu[j].num) 
{ 
stu1=stu[i]; 
stu[i]=stu[j]; 
stu[j]=stu1; 
} 
} 
} 
} 
void xmpx()//按照姓名排序 
{int i,j; 
float average;//平均数 
float ts;//总分 
struct student stu1; 
for(i=0;i<N-1;i++) 
{for(j=i+1;j<N;j++) 
{if(strcmp(stu[i].name,stu[j].name)>0) 
{ 
stu1=stu[i]; 
stu[i]=stu[j]; 
stu[j]=stu1; 
} 
} 
} 
} 
void pxxz()//排序方式选择 
{int a; 
printf("     0:返回上一级菜单 \n"); 
printf("     1:按照学号排序 \n"); 
printf("     2:按照姓名排序- \n"); 
printf("请选择:\n"); 
scanf("%d",&a); 
switch(a) 
{case 0:return;break; 
case 1:xhpx();break; 
case 2:xmpx();break; 
} 
} 
void cr()//插入 
{ 
printf("**********************************\n"); 
printf("*按学号插入请按1                 *\n"); 
printf("*按学号插入请按2                 *\n"); 
printf("*返回上一级菜单0                 *\n"); 
int m; 
printf("请输入你的选择:"); 
scanf("%d",&m); 
switch(m) 
{case 0:return;break; 
case 1:cr1();break; 
case 2:break; 
} 
} 
void cr1() 
{ 
int a,i,j; 
printf("请输入需要添加的学生总人数"); 
scanf("%d",&a); 
N=N+a; 
for(i=N-a;i<N;i++) 
{printf("请输入学生%d的学号,姓名:\n",i+1); 
scanf("%d%s",&stu[i].num,stu[i].name); 
printf("请输入学生成绩:\n"); 
printf("语文,数学,英语,总分,平均分"); 
for(j=0;j<N;j++) 
printf("添加成功\n"); 
} 
caidan(); 
} 
 |   
 
 
 
 |