|
发表于 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();
}
|
|