中北大学课程设计说明书学院、系:软件学院专业:软件工程学生姓名:学号:设计题目:学生学籍管理系统起迄日期: 2013年10月11日~2013年11月16日指导教师:日期: 2013年11月16日一,设计目的编写学生学籍管理系统是为了学校更加高效,快捷,方便的管理学生信息,以及查询学生学籍信息。
二,任务概述1.学生学籍管理系统:用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
功能要求:(1)系统以菜单方式工作。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息。
(3)删除已知学号的学生信息。
(4)查找已知学号的学生信息。
(5)按学号,专业输出学生籍贯表。
(6)查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。
2.用一个结构体来表示学生学籍的各种信息,结构体如下:struct stu_info /* 学生信息结构体 */{char school[30]; /* 记录学校名称 */char classes[12]; /* 记录班级名称 */int num; /* 记录学号 */char name[10]; /* 记录姓名 */char sex[4]; /* 记录性别 */int age[4]; /*记录年龄*/char address[30]; /* 记录家庭籍贯 */char major[50]; /* 记录专业*/char apartment[50]; /*记录院系*/char state[4]; /*记录学生当前状态,比如入学,降级等*/ }stu[SIZE];3.学籍变化用1表示入学,2表示退学,3表示降级,4表示休学,5表示毕业。
4.用数据文件存储信息,用函数fwrite()和fread()作为写入和读出文件信息。
5.信息的输入都从键盘输入,以菜单形式展开以实现其功能。
7.程序执行命令:(1)写入学生信息。
(2)保存学生信息。
(3)实现其他功能。
三,模块划分四, 主要函数说明及N-S 图1.主要函数说明:(1)主函数详细说明:void main() /* 主函数 */ {int menu_select; char exit_select; load(stu);if(strlen(S_name)==0||strlen(C_name)==0) /* 判断是否为第一次使用 */ {first(S_name,C_name); }while(1) {menu_select=-1; do {printf("/n");printf("\n\t\t*******************************************\n");主函数增加学生信息 删除学生信息 查询学生信息 修改学生信息 显示学生籍贯 更改学校名称 查看使用帮助 保存学生信息按学号删除按学号查询全部删除输出所有信息按学号显示 按专业显示printf("\n\t\t*******************************************\n");printf("\t\t\t\t欢迎使用\n");printf("\t\t功能列表:");printf("\n\n\t\t1)录入新的学生资料");printf("\n\n\t\t2)修改学生资料");printf("\n\n\t\t3)查找学生");printf("\n\n\t\t4)删除学生资料ps:学生学习状态有(1):入学");printf("\n\n\t\t5)显示学生籍贯信息(2):退学");printf("\n\n\t\t6.更改当前学校默认(3):降级");printf("\n\n\t\t7.查看使用帮助(4):休学");printf("\n\n\t\t0.退出学生学籍管理系统(5):毕业");printf("\n\n\t\t当前学校默认名为:%s\n",S_name);printf("\n\n\t\t请从0-7中选择:");scanf("%d",&menu_select);switch(menu_select){case 1:add(stu);break;case 2:change(stu);break;case 3:search(stu);break;case 4:del(stu);break;case 5:show(stu);break;case 6:cschool(S_name);break;case 7:help();break;case 0:break;default:printf("输入错误!\n");break;}}while(menu_select!=0);if(menu_select==0)/* 判断是否要退出*/{printf("----------确定要退出本系统?(Y/N):");scanf("%s",&exit_select);if(exit_select=='y'||exit_select=='Y'){exit(0);}else{continue;}}}(2)录入学生信息详细说明:void add(struct stu_info stu[]) /* 录入学生信息模块*/{FILE *fp;int i;char k;for(i=R;i<SIZE;i++){printf("\n----------您现在要录入第%d个学生信息\n",R+1);strcpy(stu[i].school,S_name);strcpy(stu[i].classes,C_name);printf("\n 请输入学号:");scanf("%d",&stu[i].num);printf("\n 请输入姓名:");scanf("%s",&stu[i].name);printf("\n 请输入性别:");scanf("%s",&stu[i].sex);printf("\n 请输入年龄:");scanf("%s",&stu[i].age);printf("\n请输入专业:");scanf("%s",&stu[i].major);printf("\n请输入籍贯:");scanf("%s",&stu[i].address);printf("\n请输入班级:");scanf("%s",&stu[i].classes);printf("\n请输入院系:");scanf("%s",&stu[i].apartment);printf("\n请输入学生状态:");scanf("%s",&stu[i].state);R=R+1;printf("----------是否继续??(y/n):");scanf("%s",&k);if(k=='y'||k=='Y'){continue;printf("\n-----------------------------");}else{save(stu);}return;}}(3):删除学生信息详细说明:void del(struct stu_info stu[]) /* 删除学生信息模块*/{int y=0,i,x,k,j;char ms;printf("\n\t\t1.选择删除");printf("\n\t\t2.全部删除");printf("\n请选择您要删除的方式(1-2):");scanf("%d",&x);switch(x){case 1: /* 选择删除*/ printf("\n请输入您要删除的学生的学号:");scanf("%d",&k);for(i=0;i<SIZE;i++){if(stu[i].num==k){for(j=i;j<R;j++)stu[j]=stu[j+1];R=R-1;printf("----------删除成功!\n\n");y=1;}}system("pause");if(y==0){printf("/n----------找不到您要搜索的内容/n");system("pause");}save(stu);break;case 2: /* 全部删除*/ printf("\n确定要清除全部数据(Y/N):");scanf("%s",&ms);if(ms=='y'||ms=='Y'){printf("\n----------正在清除全部数据...");for(i=0;i<SIZE;i++){strcpy(stu[i].school,"");strcpy(stu[i].classes,"");stu[i].num=0;strcpy(stu[i].name,"");strcpy(stu[i].sex,"");strcpy(stu[i].age,"");strcpy(stu[i].major,"");strcpy(stu[i].address,"");strcpy(stu[i].apartment,"");strcpy(stu[i].state,"");}printf("\n----------清除成功");R=0;save(stu);}else{return;}break;}}(4)查找学生信息详细说明:void search(struct stu_info stu[]) /* 查找学生信息模块*/{int y=0,i,x,k;printf("\n\n\t\t1.选择查找");printf("\n\n\t\t2.显示全部");printf("\n请选择您要查询的方式(1-2):");scanf("%d",&x);switch(x){case 1: /* 选择查找*/ printf("\n请输入您要查找的学生的学号:");scanf("%d",&k);for(i=0;i<SIZE;i++){if(stu[i].num==k&&stu[i].num!=0){y=1;printf("\n-----------------------------");printf("\n您要查询的是第%d个学生的信息,学号是:%d\n",i+1,stu[i].num);printf("\n学校名称:%s",stu[i].school);printf("\n学号:%d",stu[i].num);printf("\n班级:%s",stu[i].classes);printf("\n姓名:%s",stu[i].name);printf("\n性别:%s",stu[i].sex);printf("\n年龄:%s",stu[i].age);printf("\n专业:%s",stu[i].major);printf("\n籍贯:%s",stu[i].address);printf("\n院系:%s",stu[i].apartment);printf("\n状态:%s",stu[i].state);}}printf("\n-----------------------------");if(y==0){printf("\n----------找不到您要搜索的内容/n");}system("pause");break;case 2: /* 显示全部*/ printf("\n以下是已录入的全部学生信息:/n");for(i=0;i<R;i++){printf("\n-----------------------------");printf("\n学校名称:%s",stu[i].school);printf("\n学号:%d",stu[i].num);printf("\n班级:%s",stu[i].classes);printf("\n姓名:%s",stu[i].name);printf("\n性别:%s",stu[i].sex);printf("\n年龄:%s",stu[i].age);printf("\n专业:%s",stu[i].major);printf("\n籍贯:%s",stu[i].address);printf("\n院系:%s",stu[i].apartment);printf("\n状态:%s",stu[i].state);}printf("\n-----------------------------");system("pause");break;}}(5):修改学生信息详细说明:void change(struct stu_info stu[]) /* 修改学生信息模块*/{int y=0;int x;int i;printf("请输入要修改的学生的学号:");scanf("%d",&x);for(i=0;i<SIZE;i++){if(stu[i].num==x){printf("/n您要修改的是第%d个学生的信息,学号是:%d\n",i+1,stu[i].num);strcpy(stu[i].school,S_name);strcpy(stu[i].classes,C_name);printf("\n 请输入新学号:");scanf("%d",&stu[i].num);printf("\n 请输入新姓名:");scanf("%s",&stu[i].name);printf("\n 请输入新性别:");scanf("%s",&stu[i].sex);printf("\n 请输入年龄:");scanf("%s",&stu[i].age);printf("\n请输入新专业:");scanf("%s",&stu[i].major);printf("\n请输入新籍贯:");scanf("%s",&stu[i].address);printf("\n请输入新班级:");scanf("%s",&stu[i].classes);printf("\n请输入新院系:");scanf("%s",&stu[i].apartment);printf("\n请输入学生状态:");scanf("%s",&stu[i].state);printf("\n----------修改成功!\n\n");y=1;save(stu);}}printf("\n-----------------------------");if(y==0){printf("\n----------找不到您要搜索的内容\n");system("pause");return;}}(6);显示学生籍贯信息详细说明:void show(struct stu_info stu[]){int y=0,i,x,k;char m;printf("\n\n\t\t1.按学号输出");printf("\n\n\t\t2.按专业输出");printf("\n请选择您要查询的方式(1-2):");scanf("%d",&x);switch(x){case 1: /* 选择查找*/ printf("\n请输入您要查找的学号:");scanf("%d",&k);for(i=0;i<SIZE;i++){if(stu[i].num==k&&stu[i].num!=0){y=1;printf("\n-----------------------------");printf("\n学号:%d",stu[i].num);printf("\n姓名:%s",stu[i].name);printf("\n籍贯:%s",stu[i].address);}}printf("\n-----------------------------");if(y==0){printf("\n----------找不到您要搜索的内容/n");}system("pause");break;case 2:printf("\n请输入您要查找的专业:");scanf("%s",&m);for(i=0;i<SIZE;i++){if(stu[i].major==m&&stu[i].major!=0){y=1;printf("\n-----------------------------");printf("\n学号:%d",stu[i].num);printf("\n姓名:%s",stu[i].name);printf("\n籍贯:%s",stu[i].address);}}printf("\n-----------------------------");system("pause");break;system("pause");break;}}2.主要函数的N-S图说明:(1);录入学生信息:(2):删除学生信息:(3)查找学生信息:(4)修改学生信息:(5)显示学生籍贯信息:五.程序运行结数据与结果第一次运行界面:主界面:录入学生信息:修改学生信息:查找学生信息:删除学生信息:显示学生籍贯信息:查看使用帮助:六,课程设计心得:这是我的第一次做课程设计,通过这次实践我更加了解了自己的知识缺陷,,也锻炼自己,记得刚接触第一次接到课程设计的通知时,脑子里一片空白,一点眉目也没有,一度试着去逃避,也去试着去百度文库去找,可是找到的都是错误程序。