一
#include<stdio.h>
#include<stdlib.h>
#include<string.h>//头文件
#define LEN 20//学号和姓名最大字符数,20
#define N 50//最大的学生人数
int M = 0;//当前已经有的学生数量
//函数声明
void insert(); //录入学生信息
void modify(); //修改学生信息
void search(); //查询学生信息
void menu(); //主菜单函数
void save(); //保存学生信息
void jiguanbiao(); //输出学生籍贯信息
void xueji(); //查询学生学籍变化信息
void delet(); //删除学生信息
void help(); //帮助提示
//结构体保存学生信息
struct student{
long int Id; //学号
char Name[LEN+1]; //姓名
char Sex[LEN+1]; //性别
int Age; //年龄
char BirthPlace[LEN+1]; //籍贯
char YuanXi[LEN+1]; //院系
char ZhuanYe[LEN+1]; //专业
int BanJi; //班级
char xueji[LEN+1];//学籍变化信息
}stu[N];
//主函数
int main()
{
while (1)
{
menu();
}
system("pause");
return 0;
}
void menu()//菜单函数
{
int num;
printf("\n");
printf("——————————————————————————\n");
printf("*************欢迎使用学生信息管理系统***************\n");
printf("* *\n");
printf("********************系统功能菜单********************\n");
printf("* *\n");
printf("* 0.使用帮助 *\n");
printf("* 1.添加学生信息 *\n");
printf("* 2.修改学生信息 *\n");
printf("* 3.查找学生信息 *\n");
printf("* 4.输出学生籍贯表 *\n");
printf("* 5.保存信息到文件 *\n");
printf("* 6.查看学生学籍变化 *\n");
printf("* 7.删除学生信息 *\n");
printf("* 8.退出程序 *\n");
printf("——————————————————————————\n");
printf("请选择菜单编号:");
scanf("%d", &num);
switch (num)
{
case 0:
help();
break;
case 1:
printf("Input student number(M<=50):\n");
scanf("%d", &M);
insert();
break;
case 2:
modify();
break;
case 3:
search();
break;
case 4:
jiguanbiao();
break;
case 5:
save();
break;
case 6:
xueji();
break;
case 7:
delet();
break;
case 8:
printf("退出程序成功!\n");
exit(0);
default:
printf("请在0-8之间选择\n");
system("pause");//提示完成之后显示按任意键继续
}
}
void help()
{
printf("\n");
printf("--------------------------\n");
printf("*****************欢迎使用系统帮助*******************\n");
printf("--------------------------\n");
printf("----1.每次使用前请先从文件读入数据! ------\n");
printf("----2.初次进入系统后,请先选择增加学生信息!---\n");
printf("----3.按照菜单提示键入数字代号! --------\n");
printf("----4.在进行插入,修改和删除操作后,切记保存!--\n");
printf("********************感谢您的使用********************\n");
printf("--------------------------\n");
system("pause");
}
void insert()//添加学生信息
{int i;
for(i=1;i<=M;i++)
{
printf("请输入第%d个学生的学号:",i);
scanf("%ld",&stu[i].Id);
printf("请输入第%d个学生的姓名:",i);
scanf("%s",&stu[i].Name);
printf("请输入第%d个学生的性别:",i);
scanf("%s",&stu[i].Sex);
printf("请输入第%d个学生的年龄:",i);
scanf("%d",&stu[i].Age);
printf("请输入第%d个学生的籍贯:",i);
scanf("%s",&stu[i].BirthPlace);
printf("请输入第%d个学生的学院:",i);
scanf("%s",&stu[i].YuanXi);
printf("请输入第%d个学生的专业:",i);
scanf("%s",&stu[i].ZhuanYe);
printf("请输入第%d个学生的班级:",i);
scanf("%d",&stu[i].BanJi);
printf("请输入第%d个学生的学籍(如入学、转专业、退学、降级、休学、毕业):",i);
scanf("%s",&stu[i].xueji);
}
printf("学生信息添加完毕!请立即保存数据信息到文件!");
}
void modify()//修改学生信息
{
int i, item;
long int a;
printf("请输入要修改学生的学号:\n");
scanf("%ld",&a);
for (i=1; i<=M; i++)
{
if (stu[i].Id==a)
{
printf("1.修改名字:\n");
printf("2.修改性别:\n");
printf("3.修改年龄:\n");
printf("4.修改籍贯:\n");
printf("5.修改学院:\n");
printf("6.修改专业:\n");
printf("7.修改班级:\n");
printf("8.修改学籍\n");
printf("0.End of program!\n");
while (1)
{
printf("please choose:");
scanf("%d", &item);
switch (item)
{
case 1:
printf("Please input new name:\n");
scanf("%s", &stu[i].Name);
break;
case 2:
printf("Please input sex:\n ");
scanf("%s", &stu[i].Sex);
break;
case 3:
printf("Please input new age:\n");
scanf("%d", &stu[i].Age);
break;
case 4:
printf("Please input BirthPlace:\n");
scanf("%s", &stu[i].BirthPlace);
break;
case 5:
printf("Please input new yuanxi:\n");
scanf("%s", &stu[i].YuanXi);
break;
case 6:
printf("Please input new zhuanye:\n");
scanf("%s", &stu[i].ZhuanYe);
break;
case 7:
printf("Please input new banji:\n ");
scanf("%d", &stu[i].BanJi);
break;
case 8:
printf("Please input new xueji:\n");
scanf("%s", &stu[i].xueji);
break;
default: printf("Input error!\n");
}
if (item == 0)
system("pause");
break;
}
}
}
}
void search() //查找已知学号的学生信息
{
long int b,term=-1;
int i;
printf("请输入要查找学生的学号:");
scanf("%ld",&b);
for (i=1; i<=M; i++)
{
if (stu[i].Id==b)
{
printf("学号:%ld 姓名:%s 性别:%s 年龄:%d 籍贯:%s 学院:%s 专业:%s 班级:%d 学籍:%s \n",stu[i].Id,stu[i].Name,stu[i].Sex,stu[i].Age,stu[i].BirthPlace,stu[i].YuanXi,stu[i].ZhuanYe,stu[i].BanJi,stu[i].xueji);
term=-2;
}
}
if(term!=-2)
{
printf("Not found!\n");
}
}
void jiguanbiao()//按学号和专业输出学生籍贯表
{
int i;
FILE *fp;
fp=fopen("student.txt","r");
printf("********************学生籍贯表*********************\n");
printf("学号 姓名 籍贯\n");
for(i=1;i<=M;i++)
{
printf("%ld %s %s\n",stu[i].Id,stu[i].Name,stu[i].BirthPlace);
}
fclose(fp);
}
void save()//保存学生信息到文件
{
int i;
FILE *fp;
fp=fopen("student.txt","w");//创建名为“student.txt”的记事本
for(i=1;i<=M;i++)
{
fprintf(fp,"%ld \t%s\t%s\t%d\t%s\t%s\t%s\t%d\t%s \n",stu[i].Id,stu[i].Name,stu[i].Sex,stu[i].Age,stu[i].BirthPlace,stu[i].YuanXi,stu[i].ZhuanYe,stu[i].BanJi,stu[i].xueji);
}
fclose(fp);
printf("学生信息保存成功!");
}
//删除学生信息函数
void delet()
{
int i, j, flag = 0;
long int id;
printf("请输入要删除学生的学号:\n");
scanf("%ld", &id);
for (i = 0; i <M; i++){
if(stu[i].Id==id)
{
flag = 1;
//要删除学生后面的学生往前移一位
for (j = i; j < M - 1; j++)
{
stu[j] = stu[j + 1];//结构体数组操作
}
M--;
break;
}
}
//查找失败
if (flag == 0){
printf("学号不存在,没有该学生信息!!!\n");
}
if (flag == 1){
printf("请及时保存信息到文件!!!\n");
printf("删除成功!!!\n");
M--; //删除成功,学生人数减1
}
}
//查询学生学籍变化信息
void xueji()
{
long int c,t=-1;
int i;
printf("请输入要查询学生的学号:");
scanf("%ld",&c);
for (i=1; i<=M; i++)
{
if (c==stu[i].Id)
{
printf("学号:%ld 姓名:%s 学籍:%s \n",stu[i].Id,stu[i].Name,stu[i].xueji);
t=-2;
}
}
if(t!=-2)
printf("Not found!\n");
}
删除学生信息那没有办法进行,输入学号后直接没有办法再运行下去