用函数,do while 循环,以及switch循环做一个学生管理系统。
主函数
int main()
{
int choose;
int a[N + 1];
do {
choose = menu();
printf(" ");
switch (choose)
{
case 1:
mycreate(a, N);
break;
case 2:
mydisplay(a, N);
break;
case 3:
mysearch(a, N);
break;
case 4:
mymax(a, N);
break;
case 5:
myadd(a, N);
break;
case 6:
mydelete(a, N);
break;
case 7:
mysort(a, N);
break;
case 0:exit(0);
default:printf(" 为非法选项!");
}
} while (1);
}
调用函数
菜单
int menu()
{
int imenu;
printf(" ***********************************\n");
printf(" * *\n");
printf(" * 班级学生成绩管理程序 *\n");
printf(" * *\n");
printf(" ***********************************\n");
printf(" * 1.输入学生成绩 *\n");
printf(" * 2.显示学生成绩 *\n");
printf(" * 3.查找成绩 *\n");
printf(" * 4.查找最高分 *\n");
printf(" * 5.插入学生成绩 *\n");
printf(" * 6.按学号删除成绩 *\n");
printf(" * 7.成绩排序 *\n");
printf(" * 0.退出程序 *\n");
printf(" ***********************************\n");
printf(" 请输入选项编号: ");
scanf_s("%d", &imenu);
return imenu;
}
输入学生成绩
void mycreate(int p[], int n)
{
int i = 0; printf("\n输入学生成绩:");
for (i = 0; i < n; i++)
scanf_s("%d", &p[i]);
}
显示学生成绩
void mydisplay(int p[], int n)
{
int i = 0;
printf("学生成绩如下:\n");
for (i = 0; i < n; i++)
if (p[i] != -1) //-1表示成绩已删除,为删除成绩做准备
printf("%4d", p[i]);
printf("\n");
}
查找成绩
void mysearch(int p[], int n)
{
int i = 0, x = 0;
printf("\n输入要查找的成绩");
scanf_s("%d", &x);
mydisplay(p, N);
for (i = 0; i < n; i++)
if (x == p[i])break;
if (i < n)
printf("要查找成绩再数组中的下标:%d\n", i);
else
printf("查找的成绩:%d不存在!\n", x);
}
查找最高分
void mymax(int p[], int n)
{
int max = p[0], i;
for (i = 1; i < n; i++)
{
if (max < p[i])
max = p[i];
}
printf("\n最高分成绩是:%4d\n", max);
}
插入学生成绩
void myadd(int p[], int n)
{
int i = 0, k = 0, s;
printf("\n成绩的原始顺序:\n");
mydisplay(p, n);
printf("请输入要插入成绩位置序号与成绩:");
scanf_s("%d%d", &k, &s);
for (i = n; i > k + 1; i--)
p[i] = p[i - 1];
p[k]= s;
printf("插入成绩后的顺序:\n");
for (i = 0; i < N + 1; i++)
printf("%4d", p[i]);
printf("\n");
}
按学号删除成绩
void mydelete(int p[], int n)
{
int i, s;
printf("\n删除前的成绩:");
mydisplay(p, n);
printf("请输入要删除的成绩");
scanf_s("%d", &s);
for (i = 0; i < n; i++)
{
if (s == p[i])
{
p[i] = -1; //加删除标记
break;
}
}
printf("\n删除后的成绩:");
mydisplay(p, n);
}
成绩排序
void mysort(int p[], int n)
{
int i = 0, j = 0, k = 0, t = 0;
printf("\n排序前的成绩:\n");
mydisplay(p, n);
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = k + 1; j < n; j++)
if (p[k] > p[j])k = j;
if (k > j)
{
t = p[i];
p[i] = p[k];
p[k] == t;
}
}
printf("\n排序后的成绩:\n");
mydisplay(p, n);
}
所有代码请自取
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define N 10
int menu();
void mycreate(int p[], int n);
void mydisplay(int p[], int n);
void mysearch(int p[], int n);
void mymax(int p[], int n);
void myadd(int p[], int n);
void mydelete(int p[], int n);
void mysort(int p[], int n);
int main()
{
int choose;
int a[N + 1];
do {
choose = menu();
printf(" ");
switch (choose)
{
case 1:
mycreate(a, N);
break;
case 2:
mydisplay(a, N);
break;
case 3:
mysearch(a, N);
break;
case 4:
mymax(a, N);
break;
case 5:
myadd(a, N);
break;
case 6:
mydelete(a, N);
break;
case 7:
mysort(a, N);
break;
case 0:exit(0);
default:printf(" 为非法选项!");
}
} while (1);
}
int menu()
{
int imenu;
printf(" ***********************************\n");
printf(" * *\n");
printf(" * 班级学生成绩管理程序 *\n");
printf(" * *\n");
printf(" ***********************************\n");
printf(" * 1.输入学生成绩 *\n");
printf(" * 2.显示学生成绩 *\n");
printf(" * 3.查找成绩 *\n");
printf(" * 4.查找最高分 *\n");
printf(" * 5.插入学生成绩 *\n");
printf(" * 6.按学号删除成绩 *\n");
printf(" * 7.成绩排序 *\n");
printf(" * 0.退出程序 *\n");
printf(" ***********************************\n");
printf(" 请输入选项编号: ");
scanf_s("%d", &imenu);
return imenu;
}
void mycreate(int p[], int n)
{
int i = 0; printf("\n输入学生成绩:");
for (i = 0; i < n; i++)
scanf_s("%d", &p[i]);
}
void mydisplay(int p[], int n)
{
int i = 0;
printf("学生成绩如下:\n");
for (i = 0; i < n; i++)
if (p[i] != -1) //-1表示成绩已删除,为删除成绩做准备
printf("%4d", p[i]);
printf("\n");
}
void mysearch(int p[], int n)
{
int i = 0, x = 0;
printf("\n输入要查找的成绩");
scanf_s("%d", &x);
mydisplay(p, N);
for (i = 0; i < n; i++)
if (x == p[i])break;
if (i < n)
printf("要查找成绩再数组中的下标:%d\n", i);
else
printf("查找的成绩:%d不存在!\n", x);
}
void myadd(int p[], int n)
{
int i = 0, k = 0, s;
printf("\n成绩的原始顺序:\n");
mydisplay(p, n);
printf("请输入要插入成绩位置序号与成绩:");
scanf_s("%d%d", &k, &s);
for (i = n; i > k + 1; i--)
p[i] = p[i - 1];
p[k]= s;
printf("插入成绩后的顺序:\n");
for (i = 0; i < N + 1; i++)
printf("%4d", p[i]);
printf("\n");
}
void mymax(int p[], int n)
{
int max = p[0], i;
for (i = 1; i < n; i++)
{
if (max < p[i])
max = p[i];
}
printf("\n最高分成绩是:%4d\n", max);
}
void mydelete(int p[], int n)
{
int i, s;
printf("\n删除前的成绩:");
mydisplay(p, n);
printf("请输入要删除的成绩");
scanf_s("%d", &s);
for (i = 0; i < n; i++)
{
if (s == p[i])
{
p[i] = -1; //加删除标记
break;
}
}
printf("\n删除后的成绩:");
mydisplay(p, n);
}
void mysort(int p[], int n)
{
int i = 0, j = 0, k = 0, t = 0;
printf("\n排序前的成绩:\n");
mydisplay(p, n);
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = k + 1; j < n; j++)
if (p[k] > p[j])k = j;
if (k > j)
{
t = p[i];
p[i] = p[k];
p[k] == t;
}
}
printf("\n排序后的成绩:\n");
mydisplay(p, n);
}