ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:271.55KB ,
资源ID:24390321      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24390321.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生学籍管理说明书.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生学籍管理说明书.docx

1、学生学籍管理说明书目 录摘 要 1前 言 2正 文 31. 采用类c语言定义相关的数据类型 32. 各模块的伪码算法 33. 程序流程图 54. 调试分析 65. 测试结果 76. 源程序(带注释) 9总 结 26参考文献 27致 谢 28摘 要本设计-学生学籍信息管理系统是一项繁琐的业务,用计算机实现自动化管理既可以减轻人员的劳动强度,又可以提高学校管理效率。此程序可以输入新的学生信息,输出所有学生的学号,姓名、性别、年龄、院系,专业,出生日期,籍贯等信息;修改学生信息内容;按号查找学生信息;增加新生的信息;退出学生信息管理系统。通过此设计过程,可以加深理解线性表、查找表的逻辑结构、存储结构

2、,掌握查找、排序等基本运算的实现。 关键词: 数据结构;线性表;学籍管理前 言数据结构是一门专业技术基础课,它对学习者的的要求很明确:学会分析、研究计算机加工的数据结构的特性,以便为应用设计所需的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。其次,该课程的学习过程也是复杂程序设计的训练过程,要求学习者编写的程序结构或设计的程序结构体清楚、正确、易读,符合软件工程的规范。其过程使用链表或顺序表实现数据的录入、浏览(对于学生记录的整体浏览和逐一浏览)、添加(可以添加任何符合记录格式的学生档案记录)、删除(可以删除数据库中任一条学生记录)、修改(可以修改其

3、中的任一条学生数据内容)、查找(可以根据学生学号,查找某学生信息,也可以查找具有相同特征的学生的集合等功能;本设计在Windows XP操作系统环境下使用Visual C+ 6.0软件开发工具,采用目前最通用的程序设计语言之一C语言作为数据结构和算法的描述语言。通过该题目的设计过程,可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现。正 文1. 采用类c语言定义相关的数据类型学生学籍的记录项用结构体struct student表示,包括10个属性,stunum、name、zhuanye、classes、sex、birth、age、nation、add、depar 分

4、别代表学生的学号、姓名、院系、专业、年级、性别、出生日期、年龄、民族和籍贯。 #includestdio.h#includeconio.h#includestdlib.h#includestring.h#define N 1000 /N为可输入的学生总人数,可根据需要更改 struct student /定义学生信息结构体数组struct student /定义学生信息结构体数组 char num9; /学号 char name20; /姓名 char depar15; /院系 char zhuanye15; /专业 char classes5; /班级 char sex4; /性别 char

5、 age3; /年龄 char nation5; /民族 char birth9; /出生日期 char add10; /籍贯; 2. 各模块的伪码算法1) 程序包含9个模块(1) 主程序模块void menu(struct student stuN)函数功能: 在屏幕上显示主菜单,接收用户选择并响应用户相应操作。(2) 创建并录入信息木模块 found(struct student stu) printf(请输入要录入的学生的信息:n);scanf(%s,stui.信息);getch(); 此部分创建学生(学号,姓名,性别,民族,出生日期,入学日期,院系,班级)等信息。(3)修改学生信息模块

6、 void modify(struct student stu,int sum)用来修改学生的姓名,学号,性别,名族,入学日期,院系,班级,籍贯等信息.(4) 查询学生信息模块void seek(struct student stu,int sum) 可通过学号和姓名来查看学生的个人信息。(5) 删除某学生信息模块del(struct student stu,int sum) 通过学生学号来删除学生信息。(6) 显示打印已有学生信息模块 void show(struct student stu,int sum) 显示学生已有信息(学号,姓名,性别,民族,出生日期,入学日期,院系,班级)。(7)

7、 添加学生信息模块insert(struct student stu,int sum)先输入要添加的个数,然后依次添加学生学号,姓名,性别,民族,出生日期,入学日期,院系,班级信息。(8) 对学生信息排序模块void rank(struct student stu,int sum) (9) 对班级的学生人数进行统计模块void count(struct student stu,int sum)此模块通过统计学生人数的学院,专业,班级信息,输出符合相应信息的学生人数。3. 函数的调用关系图 4. 调试分析a、 调试中遇到的问题及对问题的解决方法此次课程设计所研究的问题不是很难,只有一个核心算法,

8、即进行学生学籍查询,所以总的高度比较顺利。但在最初的设计过程中犯了一个致命的错误,即没有很好的进行整体布局,也没有定义统一的函数接口,以致程序的结构与函数的混乱。当各模块组合在一起的时候更是无没进行调试。故只有一切从头开始,重新分配任务,以及统一定义各函数的接口。在调试的过程中发现当输入错误的时会发生想不到的错误,为了避免这样意外的发生,写了一个判断函数judge()以及输入函数input()对其进行改进。当一段相同的代码在程序中多次使用并且功能相对单一时,有必要将其写成一个函数,以减少工作量,并且使程序具有更好的可读性。在编写程序的过程中,及时对重要和难懂的程序段写注释是一个很好的习惯,无论

9、是以后的测试还是以后的维护都能够节省相当多的时间。调试时最先进行各函数的调试,确保无误时再进行各模块的调试,最后才是将各模块组合在一起测试完整的程序。在调试的过程中不断地进行改进、完善。在序能够正确运行的基础上,再对各函数进行格式的优化,加强程序的结构性,并增强程序的可读性,包括给运行界面增加相应的操作提示等,使操作界面简单而又美观。b、算法的时间复杂度和空间复杂度。本次课设采用使用链表或顺序表实现数据的录入,浏览,添加,修改,删除,查找。 建立一个测试的数据表,至少要有20个测试数据,算法对于这些合法的输入数据都能产生满足规格说明要求。若假设学生的人数为N,则:空间复杂度为:O(N)时间复杂

10、度最大为:O(N)5. 测试结果该程序运行结果如下 图3 功能选择 图4 查询学生信息查询学生信息可以按照学生的姓名和学号分别查询图5 修改学生信息图5可以看出修改学生信息可以从姓名、年龄、出生日期、籍贯、院系、专业、班级、民族几个方面来分别进行修改,从而能够更好的来管理学生学籍变化情况。 图6 显示学生信息图6可以看出,该同学(dzf)男,19891213出生,汉族,来自甘肃省,所在院系为据算计,专业为信计2班。 6. 源程序(带注释)#includestdio.h#includeconio.h#includestdlib.h#includestring.h#define N 1000 /N

11、为可输入的学生总人数,可根据需要更改 struct student /定义学生信息结构体数组 char num9; /学号 char name20; /姓名 char depar15; /院系 char zhuanye15; /专业 char classes5; /班级 char age3; /年龄 char sex4; /性别 char nation5; /民族 char birth9; /出生日期 char add10; /籍贯; /从文件读入数据int read_file(struct student stu) FILE *sp; int i=0; system(cls); if(sp=

12、fopen(学生学籍管理系统_学生信息.txt,rt)=NULL)/读文件,若文件不存在,则需要创建一个新的文件(文件创建在save_file函数中完成) printf(n学生学籍管理系统_学生信息文件不存在,请创建!n); getch(); system(cls); return 0; while(fread(&stui,sizeof(struct student),1,sp)=1)/判断文件是否处在结束位置 if(stui.num=0) /若文件内容为空,则跳出循环 break; else /若文件内容不为空,i自加1。 i+; /i为文件内结构体数组的数量 fclose(sp); ret

13、urn i; /返回i值,代表文件中学生的人数/保存学生信息(保存在文件中)void save_file(struct student stu,int sum) FILE *sp; int i; if(sp=fopen(学生学籍管理系统_学生信息.txt,wb)=NULL)/若不存在此TXT文档,则创建; printf(读文件错误!n); /创建不成功,返回menu函数; return; for(i=0;isum;i+) if(fwrite(&stui,sizeof(struct student),1,sp)!=1) /保存文件,sum为现有总学生人数,若未保存成功,提示写文件错误!; pri

14、ntf(写文件错误!n); fclose(sp); return;/创建并录入信息int found(struct student stu) int i=0,x; system(cls); printf(请输入要录入的学生的个数:n); scanf(%d,&x); if(x=0) return 0; do /输入信息 printf(n请录入第%d个学生的信息:n,i+1); printf(请录入学号:); scanf(%s,stui.num); printf(n请录入姓名:); scanf(%s,stui.name); printf(n请录入院系:); scanf(%s,stui.depar)

15、; printf(n请录入专业:); scanf(%s,stui.zhuanye); printf(n请录入班级:); scanf(%s,stui.classes); printf(n请录入性别:); scanf(%s,stui.sex); printf(n请录入年龄:); scanf(%s,stui.age); printf(n请录入出生日期(yyyymmdd):); scanf(%s,stui.birth); printf(n请录入民族:); scanf(%s,stui.nation); printf(n请录入籍贯:); scanf(%s,stui.add); i+; system(cls

16、); while(i=x(用户要求创建学生的人数)时,跳出输入信息的for循环; save_file(stu,x); /保存学生信息致文件 printf(录入完毕,请按任意键返回); getch(); return i; /返回创建学生的人数/修改学生信息void modify(struct student stu,int sum) int i,item,a=1; /i控制数组下标,item控制子菜单的选择 char s18; FILE *sp; system(cls); do printf(nnn请输入你要修改的学号:n); scanf(%s,s1); /要修改的学生学号 for(i=0;i

17、sum;i+) /查找此学生 if(strcmp(stui.num,s1)=0) /若找到该生,输出该生的信息 printf(该学生学号:%sn,stui.num); printf(该学生姓名:%sn,stui.name); printf(该学生院系:%sn,stui.depar); printf(该学生专业:%sn,stui.zhuanye); printf(该学生班级:%sn,stui.classes); printf(该学生性别:%sn,stui.sex); printf(该学生年龄:%sn,stui.age); printf(该学生出生日期:%sn,stui.birth); print

18、f(该学生民族:%sn,stui.nation); printf(该学生籍贯:%sn,stui.add); a=0; /找到该生,a=0; break; /出for循环 if(a=1) /若没有找到该生,a=1,输出提示语句 printf(nn该学号不存在!请重新输入学号:n); while(a); /当a=0,即没有找到该生,则继续循环重新输入学生学号 printf(t*n); printf(t你选择你要修改的选项:n); printf(t1.*修改姓名n); printf(t2.*修改年龄n); printf(t3.*修改性别n); printf(t4.*修改出生日期n); printf(

19、t5.*修改籍贯n); printf(t6.*修改院系名称n); printf(t7.*修改专业名称n); printf(t8.*修改班级n); printf(t9.*修改民族n); printf(t0.*退出菜单n); printf(t*n); while(1) printf(nt请选择你要进行的操作:); scanf(%d,&item); /item控制子菜单的选择 switch(item) case 1: /修改姓名 printf(t请输入新的姓名:); scanf(%s,stui.name); printf(nnn修改成功!n); save_file(stu,sum); break;

20、case 2: /修改年龄 printf(t请输入新的年龄:); scanf(%s,stui.age); printf(nnn修改成功!n); save_file(stu,sum); break; case 3: /修改性别 printf(t请输入新的性别:); scanf(%s,stui.sex); printf(nnn修改成功!n); save_file(stu,sum); break; case 4: /修改出生日期 printf(t请输入新的出生年月(yyyy.mm):); scanf(%s,stui.birth); printf(nnn修改成功!n); save_file(stu,s

21、um); break; case 5: /修改籍贯 printf(t请输入新的籍贯:); scanf(%s,stui.add); printf(nnn修改成功!n); save_file(stu,sum); break; case 6: /修改院系 printf(t请输入新的院系:); scanf(%s,stui.depar); printf(nnn修改成功!n); save_file(stu,sum); break; case 7: /修改专业 printf(t请输入新的专业名称:); scanf(%s,stui.zhuanye); printf(nnn修改成功!n); save_file(

22、stu,sum); break; case 8: /修改班级 printf(t请输入新的班级:); scanf(%s,stui.classes); printf(nnn修改成功!n); save_file(stu,sum); break; case 9: /修改民族 printf(t请输入新的民族名称:); scanf(%s,stui.nation); printf(nnn修改成功!n); save_file(stu,sum); break; case 0: return; /不修改,退出 default:printf(t请在0到9之间选择:); /若输入的值不在09,则提示 /查询学生信息v

23、oid seek(struct student stu,int sum) int i,item,flag; /i控制数组下标,item控制子菜单的选择,flag为判断条件 char s111; system(cls); while(1) system(cls); printf(nntt-n); printf(tt 1.按学号查询n); printf(tt 2.按姓名查询n); printf(tt 3.退出本菜单n); printf(tt-n); printf(tt 请选择子菜单编号:); scanf(%d,&item); /选择子菜单 flag=0; switch(item) case 1:

24、/按学号进行查找 printf(tt请输入要查询的学生的学号:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(stui.num,s1)=0) /判断学号是否存在 /输出 flag=1; printf(该学生学号:%sn,stui.num); printf(该学生姓名:%sn,stui.name); printf(该学生院系:%sn,stui.depar); printf(该学生专业:%sn,stui.zhuanye); printf(该学生班级:%sn,stui.classes); printf(该学生性别:%sn,stui.sex); printf(该

25、学生年龄:%sn,stui.age); printf(该学生出生日期:%sn,stui.birth); printf(该学生民族:%sn,stui.nation); printf(该学生籍贯:%sn,stui.add); getch(); if(flag=0) /当上一个if条件不成立,flag=0,学生学号不存在,输出提示; printf(nnntt该学号不存在!n); getch(); break; case 2: /按姓名进行查找 printf(nntt请输入要查询的学生的姓名:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(stui.name,s

26、1)=0) /判断姓名是否存在 /输出 flag=1; printf(该学生学号:%sn,stui.num); printf(该学生姓名:%sn,stui.name); printf(该学生院系:%sn,stui.depar); printf(该学生专业:%sn,stui.zhuanye); printf(该学生班级:%sn,stui.classes); printf(该学生性别:%sn,stui.sex); printf(该学生年龄:%sn,stui.age); printf(该学生出生日期:%sn,stui.birth); printf(该学生民族:%sn,stui.nation); printf(该学生籍贯:%sn,stui.add); getch(); if(flag=0) /当上一个if条件不成立,flag

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1