📄 17.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAX_STUDENT 200
int menupos = 0;
char ochar;
int number = 0;
struct node
{
long id;
char name[255];
int result[3];
};
struct node s[MAX_STUDENT];
void add()
{
long int a;
char b[255];
int c, d;
int i;
printf("学号:");
scanf("%ld", &a);
printf("姓名:");
scanf("%s", b);
printf("数学成绩:");
scanf("%d", &c);
printf("程序设计成绩:");
scanf("%d", &d);
s[number].id = a;
for (i = 0; i < 255; ++i)
{
s[number].name[i] = b[i];
}
s[number].result[1] = c;
s[number].result[2] = d;
s[number].result[0] = c + d;
++number;
}
void del()
{
int a, i;
printf("要删除的编号:");
scanf("%d", &a);
for (i = a; i < number - 2; ++i)
{
s[i] = s[i + 1];
}
--number;
}
void swap(int a, int b)
{
int t;
t = a; a = b; b = t;
}
void sort(int a)
{
int b[MAX_STUDENT], i, j;
for (i = 0; i < number; ++i) b[i] = s[i].result[a];
for (i = 0; i < number - 1; ++i)
for (j = i + 1; j < number; ++j)
if (b[i] < b[j]) swap(b[i], b[j]);
for (i = 0; i < number; ++i)
printf("%8ld %10s %3d %3d\n", s[i].id, s[i].name, s[i].result[1], s[i].result[2]);
printf("总人数:%d\n", number);
}
void find(int a)
{
int long b;
int i;
switch(a)
{
case 1:
printf("请输入要查询的学号:");
scanf("%ld", &b);
for (i = 0; i < number; ++i) if (s[i].id == b) break;
if (i < number)
{
printf("%8ld %10s %3d %3d\n", s[i].id, s[i].name, s[i].result[1], s[i].result[2]);
}
else
{
printf("查无记录\n");
}
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
}
void PaintMenu(int i)
{
printf("====菜单=================\n");
switch(i)
{
case 0:
printf("1.新建数据\n2.添加数据\n3.删除数据\n4.排序\n5.查询\n6.退出\n请输入序号选择相应操作");
break;
case 4:
printf("1.数学成绩排序\n2.程序设计成绩排序\n3.总分排序。\n4.返回主菜单\n请按序号选择相应操作");
break;
case 5:
printf("1.学号查询\n2.姓名查询\n3.数学成绩查询\n4.程序设计成绩查询\n5.总分查询\n6.返回主菜单\n请按序号选择相应操作");
break;
}
}
void main()
{
char t;
while(menupos < 60)
{
PaintMenu(menupos / 10);
while (!(ochar = getchar(), ochar >= 48 && ochar <= 58));
ochar -= 48;
if (0 == menupos)
{
menupos = ochar * 10;
if (menupos > 30) continue;
}
if (10 == menupos)
{
menupos = 0;
}
else if (20 == menupos)
{
add();
menupos = 0;
}
else if (30 == menupos)
{
del();
menupos = 0;
}
else if (40 == menupos)
{
switch (ochar)
{
case 1:
sort(1);
break;
case 2:
sort(2);
break;
case 3:
sort(0);
break;
case 4:
menupos = 0;
break;
}
}
else if (50 == menupos)
{
switch (ochar)
{
case 1:
find(1);
break;
case 2:
find(1);
break;
case 3:
find(1);
break;
case 4:
find(1);
break;
case 5:
find(1);
break;
case 6:
menupos = 0;
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -