C语言也是过了一遍了,再写一遍学生管理系统。
功能
1、输入学生信息 5、通过姓名删除学生信息
2、查看录入学生信息 6、添加学生信息
3、按学号查找学生 7、按学号修改学生信息
4、按平均成绩排序 8、选择菜单
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 50 //最大学生人数
int n = 0,m=0,k=1; // n代表当前记录的学生人数
struct student
{
char num[16]; //学号
char name[18]; //姓名
char cla[10]; //班级
char en; //英语
char math; //数学
}stu[N];
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void input() //1.输入学生信息
{
int i=0;
char ch='y';
system("cls"); //清屏函数 系统中调用
while(ch=='y'||ch=='Y') //当不输入y或Y时跳出循环
{
printf(" ----学生信息输入---- \n");
printf("学号: ");
scanf("%s",stu[i].num);
printf("姓名: ");
scanf("%s",stu[i].name);
printf("班级: ");
scanf("%s",stu[i].cla);
printf("英语: ");
scanf("%d",&stu[i].en);
printf("数学: ");
scanf("%d",&stu[i].math);
printf("是否继续添加?(y/n)");
getchar();
scanf("%c",&ch);
i++;
n++;
}
system("pause"); //等待命令
}
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void display() //2.显示全部数据信息
{
int i;
system("cls");
printf("共有%d位学生的信息:\n", n);
if (n != 0)
{
printf("学生学号\t学生姓名 \t班级 \t英语 \t数学\n");
printf("--------------------------------------------------------------------\n");
for (i = 0; i<n; i++)
{
printf("%s \t %s \t %s \t %d \t %d\n",stu[i].num, stu[i].name, stu[i].cla, stu[i].en, stu[i].math);
}
}
}
//----------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------//
void seek() //3.按学号查找学生信息
{
int i, item, flag=0;
char s1[10];
printf("请输入要查询的学生的学号:\n");
scanf("%s", s1);
for (i = 0; i<n; i++)
if (strcmp(s1,stu[i].num) == 0)
{
flag = 1;
printf(" 学号 姓名 班级 英语 数学 \n");
printf("--------------------------------------------------------------------\n");
printf(" %s %s %s %3d %3d\n", stu[i].num,stu[i].name,stu[i].cla,stu[i].en,stu[i].math);
}
if (flag == 0)
printf("无该学生信息\n");
}
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void rank() //4.按平均分排序
{
struct student temp; //用于交换时存放数组信息用于后面的交换
float aver; //平均分
int s[100];
int i=0;
int j,k,t;
int m;
system("cls"); //清屏函数
for(i=0;i<=n;i++) //把学生的平均成绩放入数组s中
{
aver=0;
aver=(stu[i].en+stu[i].math)/2;
s[i]=aver;
}
for(i=0;i<=n;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(s[j]>s[k])
k=j;
t=s[k];s[k]=s[i];s[i]=t; //按照平均分大小进行排序
temp=stu[k];stu[k]=stu[i];stu[i]=temp; //使其数组按相应顺序随平均分大小一起排序
}
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
printf(" 学号 姓名 英语 数学 平均分 \n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
for(i=0;i<n;i++)
printf(" %s %s %d %d %d \n",stu[i].num,stu[i].name,stu[i].en,stu[i].math,s[i]);
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n");
system("pause");
}
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void delate()//5.按姓名删除学生信息函数
{
int i, j, flag = 0;
char s1[15];
printf("请输入要删除的学生的姓名:\n");
scanf("%s", s1);
for (i = 0; i<n; i++)
if (strcmp(stu[i].name, s1) == 0)
{
flag = 1;
for(j=i;j<n-1;j++) //要删除的学生后面学生都往前面移一位
{
stu[j]=stu[j+1];
}
}
if (flag==0) //查找失败
{
printf("无该学生信息\n");
}
if (flag==1)
{
printf("删除成功!!!");
n--; //学生人数减1
}
system("pause");
}
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void add()//6.添加学生信息函数
{
int i,j=n,flag;
printf("请输入待增加的学生数:\n");
scanf("%d", &m);
if (m > 0)
{
do
{
flag = 1;
while (flag)
{
flag = 0;
printf("请输入第%d位学生的学号:\n", j + 1);
scanf("%s", stu[j].num);
for (i = 0; i < j; i++)
{
if (strcmp(stu[i].num, stu[j].num) == 0)
{
printf("该学号已存在,请重新输入\n");
flag = 1;
break;
}
}
}
printf("请输入第%d 个学生的姓名:\n", j+1);
scanf("%s", stu[j].name);
printf("请输入第%d 个学生的班级:\n", j+1);
scanf("%s", &stu[j].cla);
printf("请输入第%d 个学生的英语:\n", j+1);
scanf("%d", &stu[j].en);
printf("请输入第%d 个学生的数学\n",j+1);
scanf("%d", &stu[j].math);
if (flag==0)
{
j++;
}
} while (j<n+m);
}
n += m;
printf("学生信息添加完成\n");
system("pause");
}
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void modify() //7.修改学生信息
{
int i, item,score,num = 0,flag=0;
char s1[15], s2[15];
printf("请输入要修改的学生的学号:\n");
scanf("%s", s1);
for (i = 0; i < n; i++)
{
if (strcmp(stu[i].num, s1) == 0)
{
flag=1;
num = i;
printf("------------------\n");
printf("1.修改学号\n");
printf("2.修改姓名\n");
printf("3.修改班级\n");
printf("4.修改英语\n");
printf("5.修改数学\n");
printf("6.退出本菜单\n");
printf("------------------\n");
while (1)
{
printf("请选择子菜单编号:");
scanf("%d", &item);
switch (item)
{
case 1:
printf("请输入新的学号:\n");
scanf("%s", stu[num].num);
break;
case 2:
printf("请输入新的姓名:\n");
scanf("%s", stu[num].name);
break;
case 3:
printf("请输入新的班级:\n");
scanf("%s", stu[num].cla);
break;
case 4:
printf("请输入新的英语:\n");
scanf("%d", &score);
stu[num].en = score;
break;
case 5:
printf("请输入新的数学:\n");
scanf("%d", &score);
stu[num].math = score;
break;
case 6: return;
default:printf("请在1-6之间选择\n");
}
}
printf("修改完毕\n");
}
}
if(flag==0)
{
printf("无该学生信息");
}
}
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
void menu()//选择菜单
{
int num;
printf(" \n\n \n\n");
printf(" ******************************************************\n\n");
printf(" * 学生信息管理系统 *\n\n");
printf(" ******************************************************\n\n");
printf(" *******************系统功能菜单*********************** \n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 系统功能 * * 1.输入学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 2.查看已录入成绩 * * 3.查找学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 4.按平均成绩排序 * * 5.删除学生信息 * \n");
printf(" ********************************************* \n");
printf(" * 6.添加学生成绩 * * 7.修改学生成绩 * \n");
printf(" ********************** ********************** \n");
printf(" * 0.退出管理系统 * * * \n");
printf(" ********************** ********************** \n");
printf(" ---------------------- ---------------------- \n");
printf("请选择菜单编号:");
scanf("%d", &num);
switch (num)
{
case 0:k = 0; printf("马上退出系统");break;
case 1:input(); break;
case 2:display(); break;
case 3:seek(); break;
case 4:rank(); break;
case 5:delate(); break;
case 6:add(); break;
case 7:modify();break;
default:printf("请在0-8之间选择\n");
}
}
//主函数
int main()
{
while (k) //在菜单中选择0 ,退出系统
{
menu();
}
system("pause");
return 0;
}