数据结构课程设计_第1页
数据结构课程设计_第2页
数据结构课程设计_第3页
数据结构课程设计_第4页
数据结构课程设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生信息管理系统数据结构课程设计项目名称: 学生信息管理系统 学生姓名: 欧莹 学 号: 14406005 班 级: 14届物联网一班 指导教师: 张树 2015年6月28日 目录1 需求分析11.1 任务综述11.2测试数据:12 概要设计12.1学生信息抽象数据类型的定义(包括每个基本操作的说明)12.2主要模块划分22.3主要模块之间的调用关系图33 详细设计33.1 数据的存储结构33.2 每个操作的伪码算法33.3 函数的调用关系图44 实验结果55 体会106 参考文献10附录:源程序清单11 1 需求分析1.1 任务综述随着计算机技术的进步和人们对系统需求进一步提高,学校对于学生

2、信息管理也相应提升。学校对于学生信息管理主要侧重于数据的更新快捷、准确、占用较少的人力资源,而达到的最大的办公效率。 该系统为学生信息管理系统,是鉴于目前学校快速发展,学校规模越来越大,学校与时俱进,课程不断改革,学生数量与课程数量都在迅速的增长,学生信息呈爆炸性增长的前提下,原始的手工管理耗费学生与工作人员大量的时间和精力,而效率与准确性却很低,学校对学生信息管理的自动化与准确化得要求日益强烈,为满足学校管理学生信息的需要,设计并完成该系统。系统完成后可用于学校学生信息管理,能够实现对学生信息进行存储、录入、查询、删除、修改等功能。(1) 输入的形式和输入值的范围首先进入的是菜单界

3、面,输入用户名,以及正确的密码。输入数字1或2选择需求的功能,1是进入学生信息管理系统,2是退出程序。(2)输出的形式进入该系统之后,会出现子菜单,可任意输入1-7这几个数字进行不同的选择。1是录入学生信息,系统将会提示输入学生人数的量是多少。2是显示学生信息,该选项可显示录入学生的各种信息。3是根据学生的学号进行由大到小的排序,4是插入学生信息,5是输入要删除学生的学号,即可删除该学生的信息。6输入学号,查找任意一个学生的信息。7返回到上级菜单。1.2测试数据:姓名性别出生年月地址电话Em李明男19950608武汉13477058541123456张三男19960205北京187027496

4、65234567李敏女19970207上海13349974486345678 正确输入数据系统将会正确的保存信息,若不准确的输入数据会导致程序出现乱码或无法正常执行程序。2 概要设计2.1学生信息抽象数据类型的定义(包括每个基本操作的说明)ADT sqlist 数据对象:D=ai|aiCharSet,i=1,2,3,n,n>=0 数据关系:R1=<ai-1,ai>|ai-1,aiD,i=2, n 操作:void password();操作结果:启动密码函数。int menu();操作结果:建立菜单。int submenu();操作结果:建立子菜单。void submain()

5、;初始条件:正确输入密码 。 操作结果:启动程序函数。void load();初始条件:save函数中保存学生信息。 操作结果:读取到录入的学生信息。void save();初始条件:对学生信息进行多样化操作(录入,删除,排序,插入等)。 操作结果:将学生信息保存至“job.dat”文件中。void save1();初始条件:对学生信息进行多样化操作。 操作结果:将学生信息保存至“job.dat”文件中。void inputinfor();初始条件:程序已启动。 操作结果:录入学生信息。void display();初始条件:文件中存入录入的学生信息。 操作结果:显示学生信息。void tax

6、is();初始条件:文件中存入录入的学生信息。 操作结果:按照学号大到小排序。void insert();初始条件:程序已启动。 操作结果:插入学生信息。void delinfor();初始条件:文件中存入录入的学生信息。 操作结果:输入学号删除学生信息。void query();初始条件:文件中存入录入的学生信息。 操作结果:输入学号查找学生信息。 ADT sqlist2.2主要模块划分 学生信息管理系统主要有录入、显示、排列、删除、插入、查询六个功能模块,一个主程序模块。 1)主程序模块 void main() Switch选择结果:用户可经过选择16的选项来选择所需要的一个模块 2)录入

7、模块 void inputinfor() /*录入学生信息*/ 3)显示模块 void display () /*显示学生信息*/ 4)排列模块 void taxis() /*按学号进行排序*/ 5)插入模块 void insert() /*插入学生信息*/ 6)删除模块 void delinfor() /*删除学生信息*/ 7)查询模块 void query() /*查找学生信息*/ 2.3主要模块之间的调用关系图,如图2-1所示:输出模块删除模块查询模块插入模块排序模块主程序模块输入学生信息模块图2-1 模块调用关系图主程序模块3 详细设计3.1 数据的存储结构头文件#include &q

8、uot;stdio.h"#include "string.h"#include "windows.h"#define SIZE 10000 /宏定义结构体定义struct student /定义一个学生类型的结构体long num;/定义学号为长整型char name15;/定义姓名为字符型,以及字符串长度为15char sex5;/ 定义性别为字符型,以及字符串长度为5char date20;/ 定义姓名为字符型,以及字符串长度为20char adress20;/ 定义地址为字符型,以及字符串长度为20long telephone;/定义电话

9、号码为长整型 char Em20;/定义Em为字符型,以及字符串长度为20stuSIZE; 存储函数save()以及读取函数load(),运用指针FILE * fpl;指向文件job.dat,在整个程序中录入的所有学生信息都保存在job.dat文件中。3.2 每个操作的伪码算法(1) 用户设置:用户密码的设置。 采用void password()加密函数,初始设置的的密码为“123456”,用户进入登录界面后,输入用户名,然后正确输入密码,界面会显示"欢迎登陆学生成绩管理系统 !",若输入错误,界面会显示"密码错误,请重新输入",即可重复多次输入指定密码

10、进入到子菜单界面,进行用户选择。(2) 学生信息的输入:输入学生的姓名,性别,出生年月,电话号码,地址,邮箱(Em)。采用void inputinfor() 录入函数,首先定义录入学生的人数为整型变量i,学生人数最大值为m,学号随机生成,依次输入学生的信息,每输入一个学生的信息,i+且i<m,运用for循环结构。录完后,采用save函数将录入的所有信息保存在job.dat文件中。(3) 按学号排序:让用户对学生进行学号排序等操作。采用void taxis() 排序函数按学号大小进行排序,该部分程序段采用for循环嵌套的模式将学员学号由大到小进行排序,然后用save函数保存排序后的学生信息

11、,供用户使用。 (4)插入学生信息:当新增学生后,可以录入新学生的信息。采用void insert() 插入函数,重复执行第(2)部分的操作过程,定义录入学生的人数为整型变量i,录入学生的人数最大值为整型变量k,,运用输入函数printf和scanf函数来表明信息格式转换说明,运用for循环结构,实现插入的操作功能。(5) 删除学生信息:毕业学生信息可以进行删除。首先采用void delinfor() 函数,定义要删除的人数为整型变量q,q=0,系统中存在的学号为字符型a,在if条件语句中判断输入的学号是否存在, 如果存在,那么执行q+,否则界面会显示“查无此人”,然后继续下一个学生的学号输入

12、,如此循环往复,输入完成后系统会弹出“是否继续删除(y or no!)”。(6)查找学生信息:通过输入学号用户可以查找到某学生的相关信息。 运用void query() 查找函数,定义学生人数为i,查找到的学生人数为z,在for循环语句以及if的条件语句中判断输入的学号是否存在,如果存在执行z+,如果不存在,显示“查无此人”,现实的学生信息需用到void load() 读取文件函数。3.3 函数的调用关系图,如图3-1所示:inputinfordisplaytaxisinsertdelinforquery 开始请输入选择Save图3-1 函数调用关系图return4 实验结果1)进入菜单界面,

13、如图4-1所示:图4-1 菜单界面2)进入子菜单界面,如图4-2所示:图4-2 子菜单界面3)录入学生信息录入学生人数为2,如图4-3所示:图4-3 录入学生信息内容3)显示学生信息,如图4-4所示:图4-4 显示学生信息4)将学号由大到小进行排序,排序结果如图4-5所示。图4-5学号排序5)插入学生信息以及插入后学生信息结果如图4-6,4-7所示。图4-6 插入学生信息图4-7 显示学生信息6)删除学生信息(输入要删除的学号:2014334)删除后结果如图4-8所示。图4-8显示删除后的学生信息7)查找学生信息(要查找的学号:2014467),如图4-9所示。图4-9查找学生信息5 体会经过

14、三个多星期来的课程设计,增加了我对学习数据结构的兴趣,虽然还不明确数据结构中更深奥的内容,但是从数据结构这门课程开始,我已发现程序设计的乐趣,在学习数据结构过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。在具体操作中对这学期所学的数据结构的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到数据结构具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,通过实际操作,学会 数据结构程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。在设计过程中通过解决问题和在老师以及同学的帮助

15、下一步一步慢慢的正确运行程序,终于完成了这次课程设计, 虽然这次课程设计结束了但是总觉得自已懂得的知识还是不足,因为完成这次课程设计我主要还是运用了c语言中的知识,这次设计让我深刻地体会到学无止境,只有不断的充实自己的大脑汲取更加丰富的知识,才能使自己适应更加不断发展的社会。我以后还会更加的努力深入的学习,来丰富自己的大学生活。6 参考文献1谭浩强.c语言程序设计M.北京:清华大学出版社,20102杨路明.c语言程序设计M.北京:北京邮电大学出版社,20073严蔚敏,吴伟民数据结构北京:清华大学出版社,19974李云清,杨庆红,揭安全数据结构北京:人民邮电出版社,2014.9附录:源程序清单#

16、include "stdio.h"#include "string.h"#include "windows.h"FILE * fpl;int k,m,n;int count=0;#define SIZE 10000struct studentlong num;char name15;char sex5;char date20;char adress20;char telephone50; char Em20;stuSIZE;void password();int menu();int submenu();void submain();

17、void load();void save();void save1();void inputinfor();void display();void taxis();void insert();void delinfor();void query();void main() int a; password(); do system("cls"); a=menu(); switch(a) case 1: submain(); break; case 2:system("cls"); exit(1); break;default: printf("

18、没有此选项,请按任意键返回重新选择!"); while(a!=2);void password()/加密函数 char pod15;char pwd15; printf("nnnnnttt 学生成绩管理系统n");printf("nttt 用户名: ");gets(pod);printf("nttt 密码: ");gets(pwd);if(strcmp(pwd,"123456")=0)system("cls");printf("nnnnnnnnnttt");prin

19、tf("欢迎登陆学生成绩管理系统 !n");elsesystem("cls");printf("nnnnnnnnnttt");printf("密码错误,请重新输入");system("cls");password();int menu()/菜单int in=0;printf("nntt*");printf("ntt*");printf("nnnnttt 1.学生成绩管理n");printf("nnttt 2.退出系统n&quo

20、t;);printf("nntt*");printf("ntt*n");printf("t 请正确选择:");scanf("%d",&in);return in;int submenu()/子菜单int in;printf("nnt *");printf("nt *");printf("nnttt1.单个学员信息录入n");printf("nttt2.显示学员信息n");printf("nttt3.根据学员学号排序n&

21、quot;);printf("nttt4.插入学员信息n");printf("nttt5.删除学员信息n");printf("nttt6.查询学员信息n");printf("nttt7.返回上级菜单n");printf("nnt *n");printf("nt *n");printf("t 请正确选择:");scanf("%d",&in);return in;void submain() /启动函数 int in; do sys

22、tem("pause"); system("cls");in=submenu(); switch(in) case 1 : inputinfor(); break; case 2 :display(); break; case 3 : taxis(); break; case 4 : insert(); break; case 5 : delinfor(); break; case 6 :query();break;case 7 : system("cls"); in=menu(); switch(in)case 1: submain

23、(); break; case 2: break;default: printf("没有此选项,请按任意键返回重新选择!"); default: printf("没有此选项,请按任意键返回重新选择!"); getchar(); system("cls"); break; while(in!=7); system("cls"); void display () /显示函数 int i;system("cls");load(); printf("nt姓名t学号t性别t出生年月t地址t电话t

24、E-mailn"); for(i=0;i<n;i+) printf(" t%st%ldt%st%st%st%st%stn", ,stui.num,stui.sex,stui.date,stui.adress,stui.telephone,stui.Em); void taxis() /*按学号进行排序*/ struct student s;int j,k; system("cls");printf("排序前所有信息如下:n"); display();for(j=0;j<n;j+) for(k=0

25、;k<n-1-j;k+) if(stuk.num<stuk+1.num) s=stuk;stuk=stuk+1;stuk+1=s; save();printf("排序后所有信息如下:n");display(); void insert() /插入函数 int i;printf("请输入需要添加的学生人数:");scanf("%d",&k);for(i=m;i<m+k;i+)stui.num=long(rand()%1000)+2014000;/*学号随机生成*/printf("请第%d个输入学生姓名

26、:",i+1);scanf("%s",);printf("请第%d个输入学生性别:",i+1);scanf("%s",stui.sex);printf("请第%d个输入出生年月:",i+1);scanf("%s",stui.date); printf("请输入第%d个学生地址:",i+1);scanf("%s",stui.adress);printf("请第%d个输入学生电话:",i+1);scanf(&qu

27、ot;%s",stui.telephone); printf("请第%d个输入学生Em:",i+1);scanf("%s",stui.Em);save1();n=m+k;printf("添加后的信息为:n");display();void delinfor() char c;int i,j,v,q=0;long a;system("cls");do display();printf("n请输入要删除的学生学号:n"); scanf("%ld",&a);for

28、(i=0;i<n;i+) if(stui.num=a)q+;v=i; break;if(q=0)printf("n查无此人:n");if(q!=0) for(j=v;j<m;j+) stuj=stuj+1; n-; save(); display(); printf("n是否继续删除另一个学生信息?(y/n)"); fflush(stdin); c=getchar(); /*for(i=0;i<3;i+) printf("%ld",a); if(stui.num=a)break; */ while(c='y&

29、#39;); void query() /查找函数int i,z=0;long number;system("cls");load(); printf("请输入要查询的学生学号:n");scanf("%ld",&number);printf("n该信息如下:n"); printf("t姓名t学号t性别t出生年月t地址t电话tEmn");for(i=0;i<m;i+)if(stui.num=number)z=1; printf(" t%st%ldt%st%st%st%st%

30、stn", ,stui.num,stui.sex,stui.date,stui.adress,stui.telephone,stui.Em); printf("n");if(z=0)printf("tttt查无此人n"); getchar();void load() /读取文件int i;if(fpl=fopen("D:job.dat","rb")=NULL)printf("打开文件失败n");exit(0);for(i=0;!feof(fpl);i+)fread(&stui,s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论