1、题目:学生学籍管理系统
用数据文件存放学生的学籍,可对学生学籍进行注册、修改、查找、统计、学籍变化等操作。(用文件保存)
2、功能要求:
(1)系统以菜单方式工作;
(2)登记学生的学号,姓名,性别,年龄,籍贯,学院,专业,班级;
(3)修改已知学号的学生信息;
(4)查找已知学号的学生信息;
(5)按学号和专业输出学生籍贯表;
(6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
Visual C++ 6.0
1、初步完成总体结构设计,主要运用结构体及函数调用的知识设计程序框架,根据功能确定函数个数及储备每个功能所需的知识;
2、创建工程,同时在工程路径下创建记事本保存文件数据,写出程序的主要框架;
3、写主函数以及被调用函数,完成上述登记、修改、查找、输出学生信息等功能;
4、调试代码,不断修改以达到运行成功和取得最佳效果。
(1)系统以菜单方式工作
(2)登记学生的学号、姓名、性别、年龄、籍贯、学院、专业、班级,并用文件保存
(3)修改已知学号的学生信息
(4)查找已知学号的学生信息
(5)按学号和专业输出学生籍贯表
(6)查询学生学籍变化,比如入学、转专业、退学、降级、休学、毕业
(7)退出系统
#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(); //查询学生学籍变化信息 //结构体保存学生信息 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("——————————————————————————\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: jiguanbiao(); break; case 5: save(); break; case 6: xueji(); break; case 7: printf("退出程序成功!\n"); exit(0); default: printf("请在1-8之间选择\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) 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 %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); } 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"); }