📄 sxb.cpp
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct xsb{
long NO;
char name[20];
int math;
int prog;
int score;
};
int num=0;
void newdata(xsb*xs)
{
long NO;
label1: printf("请输入学号:\n");
scanf("%d",&NO);
for(int i=0;i<num;i++)
if(NO==xs[i].NO)
{printf("学号重复,请重新输入!");goto label1;}
xs[num].NO=NO;
printf("请输入姓名:\n");
scanf("%s",xs[num].name);
printf("请输入数学成绩:\n");
scanf("%d",&xs[num].math);
printf("请输入程序设计成绩:\n");
scanf("%d",&xs[num].prog);
xs[num].score=xs[num].math+xs[num].prog;
num++;
}
void adddata(xsb*xs)
{
newdata(xs);
}
void deletedata(xsb*xs)
{
long NO,j=-1;
printf("请输入想删除的学号:\n");
scanf("%d",&NO);
for(int i=0;i<num;i++)
{
if(NO==xs[i].NO){j=i;break;}
}
for(i=j;i<num-1;i++)
{
xs[i].math=xs[i+1].math;
strcpy(xs[i].name,xs[i+1].name);
xs[i].NO=xs[i+1].NO;
xs[i].prog=xs[i+1].prog;
}
num--;
printf("已成功删除数据\n");
}
void exch(xsb &A, xsb &B)
{ xsb t;
t.math = A.math;
strcpy(t.name,A.name);
t.NO=A.NO;
t.prog=A.prog;
t.score=A.score;
A.math = B.math;
strcpy(A.name,B.name);
A.NO=B.NO;
A.prog=B.prog;
A.score=B.score;
B.math = t.math;
strcpy(B.name,t.name);
B.NO=t.NO;
B.prog=t.prog;
B.score=t.score;
}
void compexch(xsb &A, xsb &B,int tag)
{
switch(tag)
{case 1:if (B.math > A.math) exch(A, B); break;
case 2:if (B.prog > A.prog) exch(A, B); break;
case 3:if (B.score > A.score) exch(A, B); break;
default:break;
}
}
void sort1(xsb a[], int l, int r,int tag)
{ for (int i = l+1; i <= r; i++)
for (int j = i; j > l; j--)
compexch(a[j-1], a[j],tag);
}
void Sort(xsb*xs)
{
int tag,i;
while(1)
{
printf("####排序子菜单#######\n");
printf("1.数学成绩排序\n2.程序设计成绩排序\n3.总分排序\n4.返回主菜单\n请按序号选择相应操作\n");
printf("#####################\n");
scanf("%d",&tag);
switch(tag)
{
case 1:case 2:case 3:sort1(xs,0,num-1,tag);break;
case 4:return;
}
switch(tag)
{
case 1:printf("排序成功,按数学成绩排序\n");
printf("**************************************************\n");
printf("学号 姓名 数学成绩\n");
for(i=0;i<num;i++)
printf("%d %s %d\n",xs[i].NO,xs[i].name,xs[i].math);
printf("**************************************************\n");
break;
case 2:printf("排序成功,按按程序设计成绩排序\n");
printf("**************************************************\n");
printf("学号 姓名 程序设计成绩\n");
for(i=0;i<num;i++)
printf("%d %s %d\n",xs[i].NO,xs[i].name,xs[i].prog);
printf("**************************************************\n");
break;
case 3:printf("排序成功,按总成绩排序\n");
printf("**************************************************\n");
printf("学号 姓名 总成绩\n");
for(i=0;i<num;i++)
printf("%d %s %d\n",xs[i].NO,xs[i].name,xs[i].score);
printf("**************************************************\n");
break;
case 4:return;
}
}
}
void Find(xsb*xs)
{
int tag,i,flag=0,t;
xsb temp;
while(1)
{t=0;
printf("####查询子菜单#######\n");
printf("1.学号查询\n2.姓名查询\n3.数学成绩查询\n4.程序设计成绩查询\n5.总分查询\n6.返回主菜单\n请按序号选择相应操作\n");
printf("#####################\n");
scanf("%d",&tag);
switch(tag)
{
case 1:printf("请输入待查学号:\n");
scanf("%d",&temp.NO);
printf("*******查找结果****************************************\n");
printf("学号 姓名 数学成绩 程序设计成绩 总成绩\n");
for(i=0;i<num;i++)
if(xs[i].NO==temp.NO)
{
printf("%d %s %d %d %d\n",xs[i].NO,xs[i].name,xs[i].math,xs[i].prog,xs[i].score);
flag=1;
}
if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
printf("*******************************************************\n");
break;
case 2:printf("请输入待查姓名:\n");
scanf("%s",temp.name);
printf("*******查找结果****************************************\n");
printf("学号 姓名 数学成绩 程序设计成绩 总成绩\n");
for(i=0;i<num;i++)
if(strcmp(xs[i].name,temp.name)==0)
{
printf("%d %s %d %d %d\n",xs[i].NO,xs[i].name,xs[i].math,xs[i].prog,xs[i].score);
flag=1;
}
if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
printf("*******************************************************\n");
break;
case 3:printf("请输入数学成绩:\n");
scanf("%d",&temp.math);
printf("*******查找结果****************************************\n");
printf("学号 姓名 数学成绩\n");
for(i=0;i<num;i++)
if(xs[i].math>=temp.math)
{t++;
printf("%d %s %d\n",xs[i].NO,xs[i].name,xs[i].math);
flag=1;
}
if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
else printf("共有%d个学生符合条件!\n",t);
printf("*******************************************************\n");
break;
case 4:printf("请输入程序设计成绩:\n");
scanf("%d",&temp.prog);
printf("*******查找结果****************************************\n");
printf("学号 姓名 程序设计成绩\n");
for(i=0;i<num;i++)
if(xs[i].prog>=temp.prog)
{t++;
printf("%d %s %d\n",xs[i].NO,xs[i].name,xs[i].prog);
flag=1;
}
if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
else printf("共有%d个学生符合条件!\n",t);
printf("*******************************************************\n");
break;
case 5:printf("请输入总成绩:\n");
scanf("%d",&temp.score);
printf("*******查找结果****************************************\n");
printf("学号 姓名 总成绩\n");
for(i=0;i<num;i++)
if(xs[i].score>=temp.score)
{t++;
printf("%d %s %d\n",xs[i].NO,xs[i].name,xs[i].score);
flag=1;
}
if(flag!=1)printf("查找完毕,没有找到您需要的结果!\n");
else printf("共有%d个学生符合条件!\n",t);
printf("*******************************************************\n");
break;
case 6:return;
}
}
}
void main()
{
int tag;
xsb xs[100];
while(1)
{ printf("######主菜单#########\n");
printf("1.新建数据\n2.添加数据\n3.删除数据\n4.排序\n5.查询\n6.退出\n请按序号选择相应操作\n");
printf("#####################\n");
scanf("%d",&tag);
switch(tag)
{
case 1:newdata(xs);break;
case 2:adddata(xs);break;
case 3:deletedata(xs);break;
case 4:Sort(xs);break;
case 5:Find(xs);break;
case 6:return;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -