因为这是很早的,忘记是自己写的还是抄的,里面存储有点问题,大家改一下就可以直接用
#include<stdio.h>
#include<stdlib.h>
#include<string.h> //头文件
#include<windows.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 del(); //删除学生信息
//结构体保存学生信息
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("* 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 1:
printf("Input student number(M<=50):\n");
scanf("%d", &M);
insert();
break;
case 2:
modify();
break;
case 3:
search();
break;
case 4:
del();
break;
case 5:
jiguanbiao();
break;
case 6:
save();
break;
case 7:
xueji();
break;
case 8:
printf("退出程序成功!\n");
exit(0);
default:
printf("请在1-8之间选择\n");
system("pause");//提示完成之后显示按任意键继续
}
system("cls");
}
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("学生信息添加完毕!请立即保存数据信息到文件!");
system("pause");
system("cls");
}
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)
break;
}
}
}
system("pause");
system("cls");
}
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;
}
}
system("pause");
system("cls");
if (term != -2) {
printf("Not found!\n");
}
}
void jiguanbiao() { //按学号和专业输出学生籍贯表
int i;
printf("********************学生籍贯表*********************\n");
printf("学号 姓名 籍贯\n");
for (i = 1; i <= M; i++) {
printf("%ld %s %s\n", stu[i].Id, stu[i].Name, stu[i].BirthPlace);
}
system("pause");
system("cls");
}
void save() { //保存学生信息到文件
int i;
FILE *fp;
fp = fopen("student.txt", "a+"); //在工程路径下创建名为“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 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");
}
void del() { //删除学生信息
long int d;
int i, j;
printf("请输入要删除学生的学号:");
scanf("%ld", &d);
for (i = 1; i <= M; i++) {
if (stu[i].Id == d) {
for (j = i + 1; j <= M; j++) {
stu[j - 1] = stu[j];
}
M--;
printf("已成功删除学生信息!\n");
system("pause");
system("cls");
return;
}
}
printf("没有找到要删除的学生信息!\n");
}