学生学籍管理系统
更新时间:2024-04-23 17:35:01 阅读量: 综合文库 文档下载
中北大学
课程设计说明书
学院、系: 专
业
:
软件学院 软件工程 学号: 学生学籍管理系统
学生姓名: 设计题目:
起迄日期: 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(\
printf(\
printf(\
printf(\欢迎使用\\n\ printf(\功能列表:\
printf(\录入新的学生资料\ printf(\修改学生资料\ printf(\查找学生\
printf(\删除学生资料 ps:学生学习状态有(1):入学\ printf(\显示学生籍贯信息 (2):退学\ printf(\更改当前学校默认 printf(\查看使用帮助 printf(\退出学生学籍管理系统
printf(\当前学校默认名为:%s\\n\
printf(\请从0-7中选择:\ scanf(\ 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\ }
}while(menu_select!=0);
if(menu_select==0) /* 判断是否要退出 */
{
printf(\确定要退出本系统?(Y/N):\ scanf(\
if(exit_select=='y'||exit_select=='Y') {
exit(0); } else {
continue; }
(3):降级\(4):休学\(5):毕业\ } }
}
(2)录入学生信息详细说明:
void add(struct stu_info stu[]) /* 录入学生信息模块 */ {
FILE *fp; int i; char k;
for(i=R;i printf(\您现在要录入第%d个学生信息\\n\ strcpy(stu[i].school,S_name); strcpy(stu[i].classes,C_name); printf(\请输入学号:\ scanf(\ printf(\请输入姓名:\ scanf(\ printf(\请输入性别:\ scanf(\ printf(\请输入年龄:\ scanf(\ printf(\请输入专业:\ scanf(\ printf(\请输入籍贯:\ scanf(\ printf(\请输入班级:\ scanf(\ printf(\请输入院系:\ scanf(\ printf(\请输入学生状态:\ scanf(\ R=R+1; printf(\是否继续??(y/n):\ scanf(\ if(k=='y'||k=='Y') { continue; printf(\ } else { save(stu); } return; } } (3):删除学生信息详细说明: void del(struct stu_info stu[]) /* 删除学生信息模块 */ { int y=0,i,x,k,j; char ms; printf(\选择删除\ printf(\全部删除\ printf(\请选择您要删除的方式(1-2):\ scanf(\ switch(x) { case 1: printf(\请输入您要删除的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==k) { for(j=i;j printf(\删除成功!\\n\\n\ y=1; } } system(\ if(y==0) { printf(\找不到您要搜索的内容/n\ system(\ } save(stu); break; case 2: printf(\确定要清除全部数据(Y/N):\ scanf(\ if(ms=='y'||ms=='Y') { printf(\正在清除全部数据...\ /* 选择删除 */ /* 全部删除 */ for(i=0;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(\清除成功\ R=0; save(stu); } else { return; } break; } } (4)查找学生信息详细说明: void search(struct stu_info stu[]) /* 查找学生信息模块 */ { int y=0,i,x,k; printf(\选择查找\ printf(\显示全部\ printf(\请选择您要查询的方式(1-2):\ scanf(\ switch(x) { case 1: printf(\请输入您要查找的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==k&&stu[i].num!=0) { y=1; printf(\ printf(\您要查询的是第%d个学生的信息,学号 /* 选择查找 */ 是:%d\\n\ printf(\学校名称:%s\ printf(\学号:%d\ printf(\班级:%s\ printf(\姓名:%s\ printf(\性别:%s\ printf(\年龄:%s\ printf(\专业:%s\ printf(\籍贯:%s\ printf(\院系:%s\ printf(\状态:%s\ } } printf(\ if(y==0) { printf(\找不到您要搜索的内容/n\ } system(\ break; case 2: printf(\以下是已录入的全部学生信息:/n\ for(i=0;i printf(\ printf(\学校名称:%s\ printf(\学号:%d\ printf(\班级:%s\ printf(\姓名:%s\ printf(\性别:%s\ printf(\年龄:%s\ printf(\专业:%s\ printf(\籍贯:%s\ printf(\院系:%s\ printf(\状态:%s\ } printf(\ system(\ break; } } (5):修改学生信息详细说明: void change(struct stu_info stu[]) /* 修改学生信息模块 */ /* 显示全部 */ { int y=0; int x; int i; printf(\请输入要修改的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==x) { printf(\您要修改的是第%d个学生的信息,学号是:%d\\n\ strcpy(stu[i].school,S_name); strcpy(stu[i].classes,C_name); printf(\请输入新学号:\ scanf(\ printf(\请输入新姓名:\ scanf(\ printf(\请输入新性别:\ scanf(\ printf(\请输入年龄:\ scanf(\ printf(\请输入新专业:\ scanf(\ printf(\请输入新籍贯:\ scanf(\ printf(\请输入新班级:\ scanf(\ printf(\请输入新院系:\ scanf(\ printf(\请输入学生状态:\ scanf(\ printf(\修改成功!\\n\\n\ y=1; save(stu); } } printf(\ if(y==0) { printf(\找不到您要搜索的内容\\n\ system(\ return; } } (6);显示学生籍贯信息详细说明: void show(struct stu_info stu[]) { int y=0,i,x,k; char m; printf(\按学号输出\ printf(\按专业输出\ printf(\请选择您要查询的方式(1-2):\ scanf(\ switch(x) { case 1: printf(\请输入您要查找的学号:\ scanf(\ for(i=0;i if(stu[i].num==k&&stu[i].num!=0) { y=1; printf(\ printf(\学号:%d\ printf(\姓名:%s\ printf(\籍贯:%s\ } } printf(\ if(y==0) { printf(\找不到您要搜索的内容/n\ } system(\ break; case 2: printf(\请输入您要查找的专业:\ scanf(\ for(i=0;i if(stu[i].major==m&&stu[i].major!=0) { y=1; printf(\ printf(\学号:%d\ printf(\姓名:%s\ printf(\籍贯:%s\ /* 选择查找 */ } } printf(\ system(\ break; system(\ break;} } 2.主要函数的N-S图说明: (1);录入学生信息: (2):删除学生信息: (3)查找学生信息: (4)修改学生信息: (5)显示学生籍贯信息: 五.程序运行结数据与结果 第一次运行界面: 主界面: 录入学生信息: 修改学生信息: 查找学生信息: 删除学生信息: 显示学生籍贯信息: 查看使用帮助: 六, 课程设计心得: 这是我的第一次做课程设计,通过这次实践我更加了解了自己的知识缺陷,,也锻 炼自己,记得刚接触第一次接到课程设计的通知时,脑子里一片空白,一点眉目也没有,一度试着去逃避,也去试着去百度文库去找,可是找到的都是错误程序。于是去图书馆找资料,慢慢的有了自信心,于是自己开始慢慢写程序,先从小模块做起,最后把程序拼接了起来,通过一次一次的调试,功夫不负有心人,程序终于运行成功了,实现了所有的要求! 在编程的过程中,因为粗心,经常会在语句结束时少“;”或者把中文输入的引号输入文件,很难发现错误所在。在编程题时也出现了一些编译中的问题。例如,在开始未加头文件#include 在这次课程设计中我充分体会到C语言作为一门编程的基本语言它的精妙。通过这次课程设计使我了解到我有很多的不足,在程序调试的时候常常会因为几个错误而弄得心烦,这说明我对知识的掌握还不够牢,在程序设计的过程中也暴露出了我的诸多弊端,借这次课程设计的机会我会认真的加以改正,多多看书多去图书馆学习,同时应该增强自己的实践能力,耐心对待每一件事,为以后的学习打下坚实的基础。 附录: #include #define SIZE 99 /* 可以录入的最大学生人数 */ char S_name[30]; /* 记录当前学校名称 */ int R=0; /* 记录已有的学生信息数量 */ 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[31]; /* 记录专业*/ char apartment[50]; /*记录院系*/ char state[4]; /*记录学生当前状态*/ }stu[SIZE]; void first(char S_name[30]); /* 检测是否为第一次使用 */ void load(struct stu_info stu[]); /* 数据初始化 */ void add(struct stu_info stu[]); /* 录入学生信息 */ void change(struct stu_info stu[]); /* 修改学生信息 */ void search(struct stu_info stu[]); /* 查找学生信息 */ void del(struct stu_info stu[]); /* 删除学生信息 */ void cschool(char S_name[30]); /* 更改当前学校默认名 */ void help(); /* 查看使用帮助 */ void save(struct stu_info stu[]); /* 保存数据 */ void show(struct stu_info stu[]); /*显示学生信息*/ void main() /* 主函数 */ { int menu_select; char exit_select; load(stu); if(strlen(S_name)==0) /* 判断是否为第一次使用 */ { first(S_name); } while(1) { menu_select=-1; do { printf(\ printf(\ 欢迎使用学生学籍管理系统\ printf(\ printf(\ 制作人:刘星李昕睿\ printf(\ 2013.11.12\ printf(\按回车键进入主菜单:\ getchar(); loop: system(\ printf(\ printf(\ printf(\ printf(\欢迎使用\\n\ printf(\功能列表:\ printf(\录入新的学生资料\ printf(\修改学生资料\ printf(\查找学生\ printf(\删除学生资料 ps:学生学习状态有(1): 入学\ printf(\显示学生籍贯信息 (2): 退学\ printf(\更改当前学校默认名 (3): 降级\ printf(\查看使用帮助 (4): 休学\ printf(\退出学生学籍管理系统 (5): 毕业\ printf(\当前学校默认名为:%s\\n\ printf(\请从0-7中选择:\ scanf(\ 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\ } }while(menu_select!=0); if(menu_select==0) /* 判断是 否要退出 */ { printf(\确定要退出本系统?(Y/N):\ scanf(\ if(exit_select=='y'||exit_select=='Y') { exit(0); } else { continue; } } } } void first(char S_name[30]) /* 检测是否为第一次使用 */ { FILE *fp; if(strlen(S_name)==0) { printf(\当前学校名称为空,请输入一个学校名称:\ scanf(\ printf(\您设置的学校名称为:%s\\n\ if((fp=fopen(\ 录到save_school.rec中 */ { printf(\记录学校名称文件打开错误。\\n\ return; } printf(\开始记录学校名称...\\n\ rewind(fp); fwrite(S_name,30,1,fp); printf(\学校名称记录成功\\n\ fclose(fp); /* 把当前学校名称记 } system(\} void load(struct stu_info stu[]) /* 数据初始化模块 */ { int i; FILE *fp; /* 指向文件指针 */ if((fp=fopen(\ /* 读取save_school.rec里存 储的学校名称 */ { printf(\记录学校名称文件打开错误。\\n\ return; } printf(\开始读取学校名称文件...\\n\ rewind(fp); fread(S_name,sizeof(S_name),1,fp); printf(\学校名称读取成功,当前学校名称为%s\\n\ fclose(fp); if((fp=fopen(\ /* 读取save_stu.rec里存储 的学生信息 */ { printf(\记录学生信息文件打开错误。\\n\ return; } printf(\开始读取学生信息文件...\\n\ rewind(fp); for(i=0;i fread(&stu[i],sizeof(struct stu_info),1,fp); } printf(\学生信息读取成功。\\n\ for(i=0;i 个学生信息 */ { if(strlen(stu[i].name)==0) { R=i; system(\ return; } } } void add(struct stu_info stu[]) /* 录入学生信息模块 */ { FILE *fp; int i; char k; for(i=R;i printf(\您现在要录入第%d个学生信息\\n\ strcpy(stu[i].school,S_name); strcpy(stu[i].classes,C_name); printf(\请输入学号:\ scanf(\ printf(\请输入姓名:\ scanf(\ printf(\请输入性别:\ scanf(\ printf(\请输入年龄:\ scanf(\ printf(\请输入专业:\ scanf(\ printf(\请输入籍贯:\ scanf(\ printf(\请输入班级:\ scanf(\ printf(\请输入院系:\ scanf(\ printf(\请输入学生状态:\ scanf(\ R=R+1; printf(\是否继续??(y/n):\ scanf(\ if(k=='y'||k=='Y') { continue; printf(\ } else { save(stu); } return; } } void change(struct stu_info stu[]) /* 修改学生信息模块 */ { int y=0; int x; int i; printf(\请输入要修改的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==x) { printf(\您要修改的是第%d个学生的信息,学号是:%d\\n\ strcpy(stu[i].school,S_name); strcpy(stu[i].classes,C_name); printf(\请输入新学号:\ scanf(\ printf(\请输入新姓名:\ scanf(\ printf(\请输入新性别:\ scanf(\ printf(\请输入年龄:\ scanf(\ printf(\请输入新专业:\ scanf(\ printf(\请输入新籍贯:\ scanf(\ printf(\请输入新班级:\ scanf(\ printf(\请输入新院系:\ scanf(\ printf(\请输入学生状态:\ scanf(\ printf(\修改成功!\\n\\n\ y=1; save(stu); } } printf(\ if(y==0) { printf(\找不到您要搜索的内容\\n\ system(\ return; } } void search(struct stu_info stu[]) /* 查找学生信息模块 */ { int y=0,i,x,k; printf(\选择查找\ printf(\显示全部\ printf(\请选择您要查询的方式(1-2):\ scanf(\ switch(x) { case 1: /* 选择查找 */ printf(\请输入您要查找的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==k&&stu[i].num!=0) { y=1; printf(\ printf(\您要查询的是第%d个学生的信息,学号是:%d\\n\ printf(\学校名称:%s\ printf(\学号:%d\ printf(\班级:%s\ printf(\姓名:%s\ printf(\性别:%s\ printf(\年龄:%s\ printf(\专业:%s\ printf(\籍贯:%s\ printf(\院系:%s\ printf(\状态:%s\ } } printf(\ if(y==0) { printf(\找不到您要搜索的内容/n\ } system(\ break; case 2: /* 显示全部 */ printf(\以下是已录入的全部学生信息:/n\ for(i=0;i printf(\ printf(\学校名称:%s\ printf(\学号:%d\ printf(\班级:%s\ printf(\姓名:%s\ printf(\性别:%s\ printf(\年龄:%s\ printf(\专业:%s\ printf(\籍贯:%s\ printf(\院系:%s\ printf(\状态:%s\ } printf(\ system(\ break; } } void show(struct stu_info stu[]) { int y=0,i,x,k; char m; printf(\按学号输出\ printf(\按专业输出\ printf(\请选择您要查询的方式(1-2):\ scanf(\ switch(x) { case 1: printf(\请输入您要查找的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==k&&stu[i].num!=0) { y=1; printf(\ printf(\学号:%d\ printf(\姓名:%s\ printf(\籍贯:%s\ } } printf(\ if(y==0) { printf(\找不到您要搜索的内容/n\ } system(\ /* 选择查找 */ break; case 2: printf(\请输入您要查找的专业:\ scanf(\ for(i=0;i if(stu[i].major==m&&stu[i].major!='\\0') { y=1; printf(\ printf(\学号:%d\ printf(\姓名:%s\ printf(\籍贯:%s\ } } printf(\ system(\ break; system(\ break;} } void del(struct stu_info stu[]) /* 删除学生信息模块 */ { int y=0,i,x,k,j; char ms; printf(\选择删除\ printf(\全部删除\ printf(\请选择您要删除的方式(1-2):\ scanf(\ switch(x) { case 1: printf(\请输入您要删除的学生的学号:\ scanf(\ for(i=0;i if(stu[i].num==k) { for(j=i;j /* 选择删除 */ stu[j]=stu[j+1]; R=R-1; printf(\删除成功!\\n\\n\ y=1; } } system(\ if(y==0) { printf(\找不到您要搜索的内容/n\ system(\ } save(stu); break; case 2: printf(\确定要清除全部数据(Y/N):\ scanf(\ if(ms=='y'||ms=='Y') { printf(\正在清除全部数据...\ for(i=0;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(\清除成功\ R=0; save(stu); } else { return; } break; } /* 全部删除 */ } void cschool(char S_name[30]) /* 更改当前学校默认名模块 */ { FILE *fp; printf(\请输入您要更改的学校默认名:\ scanf(\ if((fp=fopen(\ /* 把当前学校名称记录到 save_school.rec中 */ { printf(\记录学校名称文件打开错误。\\n\ return; } printf(\开始记录学校名称...\\n\ rewind(fp); fwrite(S_name,30,1,fp); printf(\学校名称记录成功\\n\ fclose(fp); printf(\更改成功,当前学校默认名为:%s\\n\ system(\} void help() /* 查看使用帮助模块 */ { printf(\★本系统为即时保存,当您录入完后不需要再保存。\ printf(\★录入学生信息时,请按提示输入信息\ printf(\★修改学生信息时,请您输入您要修改的学生的学号,即可修改。\ printf(\★查询学生信息时,有两种查询方法,选择查询和全部显示,选择查询需要您 输入您要查找的学生的学号,全部显示则会把全部录入的学生信息显示出来。\ printf(\★删除学生信息时,可以选择按学号删除和清除全部学生信息。注意:清除全 部学生信息则会把全部信息都清除,且不能还原。\ printf(\★当您第一次使用时,请输入学校的默认名,已方便以后录入。\ printf(\★输入学生状态时,输入文本就好,简单明了\ printf(\★如要退出本系统,选择(0)即可。\ printf(\★由于系统编写仓促,可能会在运行中出现错误,希望能多多包涵,感谢您 的使用。\ printf(\ system(\} void save(struct stu_info stu[]) /* 保存数据模块 */ { FILE *fp; int i; if((fp=fopen(\ /* 存储输入的学生信 息 */ { printf(\记录学生信息文件打开错误。/n\ return; } for(i=0;i fwrite(&stu[i],sizeof(struct stu_info),1,fp); } printf(\保存成功/n\ system(\}
正在阅读:
学生学籍管理系统04-23
浅谈低年级如何培养学生的阅读能力01-24
中国资本存量测量10-09
Ch04 最优选择09-16
2015年黑龙江省齐齐哈尔市中考地理试卷(word版,含解析).doc08-24
(部编版)二年级语文下册期末测试卷-有答案-3c5845ee51e2524de504-20
掘进队职业病危害防治责任制12-20
2011年交通运输工程试题new11-06
诗词如歌作文600字06-27
初中数学四边形提高练习(辅助线)04-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 学籍
- 管理系统
- 学生
- 结对共建协议书
- 智慧城市发展的市场思维--信息消费驱动地方经济转型升级 课程的
- 软件项目管理--6个重要案例
- 全国高等学校计算机等级考试CCT情况介绍
- 江苏省2015年度普通高校研究生科研创新计划项目名单省助
- 高三政治试题及答案
- 成本会计实训教案
- 2017年人教版上学期七年级语文第一次月考试题
- 大学物理热学习题附答案
- 湖南省住房和城乡建设厅文件(318号文)
- 污水管顶管施工方案
- 农民工工资清欠工作汇报材料 推荐
- 幼儿园开园庆典上的致辞
- P303站全面检测方案终 - 图文
- VSC-HVDC技术简介 - 图文
- 中国电影出路
- 东莞理工学院热水系统采购项目
- silcas—sil定级、验算分析软件
- 数据库2012-2013第二学期期末试卷B卷
- 泵与风机单选题