C++宿舍管理系统课程设计_第1页
C++宿舍管理系统课程设计_第2页
C++宿舍管理系统课程设计_第3页
C++宿舍管理系统课程设计_第4页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、河南城建学院课程设计报告书专业: 信息管理与信息系统课程设计名称:数据结构课程设计题目:宿舍管理查询软件班级:信管 2 班设 计 者 学 号: 083215217设计者姓名:张凯迪同组人员: 姚飒飒指导老师:张延红 崔雪冰 杨斌完成时间:2016年 6 月 12 日摘要在校学生的信息管理是校园管理中的一个重要内容,随着国家扩招政策的继续实施,学生数量也不断增加、 信息的不断细化、 各个行业间联系的不断密切, 对人事管理的要求也不断提高。 如何记录和管理好学生的信息, 对学生实施高效的宏观管理, 对学生出入宿舍以及学生注入和迁出的信息的灵活的记录及更新, 是一项繁重而艰巨的任务。关键词: C+;

2、数据库表;宿舍信息查询;宿舍信息管理目 录目 录 .1第一章开发环境和开发工具 .11.1C+简介.11.2开发背景 .11.3开发环境 .1第二章算法思想 .22.1系统需求分析 .22.2系统总体设计 .22.2.1系统设计目标 .22.2.2开发设计思想 .32.2.3系统功能模块设计 .32.3算法思想描述 .5第三章算法实现 .63.1数据结构 .63.2程序模块 .63.2.1数据结构设计 .63.3各模块之间的调用关系 .73.3.1模块划分 .73.3.2操作实现 .103.4源程序代码 .18第四章测试与分析 .324.1使用方法 .324.2测试数据选择 .324.3测试结

3、果分析 .32总结 .38心得体会 .39参考文献 . 40第一章开发环境和开发工具1.1C+简介C+标准可分为两部分,C+语言本身和 C+标准库。 C+标准库对于 Visual C+是相当新的,实际上微软只是在发布 Visual C+ 5.0 时去除了一些“ bug”。标准库提供了标准的输入 / 输出、字符串、容器 ( 如矢量、列表和映射等 ) 、非数值运算 ( 如排序、搜索和合并等 ) 和对数值计算的支持。应该说, C/C+包含了相对少的关键字,而且很多最有用的函数都来源于库,C+标准库实现容器和算法的部分就是STL。STL是数据结构和算法的一个框架,数据结构包括矢量、列表和映射等,算法包

4、括这些数据结构的查找、拷贝和排序等。1994 年 7 月, ANSI/ISO C+标准委员会投票决定接受 STL为 C+标准库的一部分,这个建议是根据Alex Stepanov、MengLee 和 DavidMusser 这三人的编程和软件库研究提出的。STL 的产生是为了满足通用性的设计目标,而不是为了提高性能。1.2开发背景随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量企业管理科学化和现代化的重要标志,而人事管理的全面自动化、信息化则是其中重要的组成部分。人事管理的好坏对于企

5、业的决策者和管理者来说都至关重要, 在很大程度上影响着企业的经济效益和社会效益。因此,本文所研究的人事管理信息系统具有一定的使用价值和现实意义。1.3开发环境本文所采用的开发环境主要是在一般的PC硬件环境和 WindouwsVista/2003/XP系统由 Visual+6.0编写而成,在用到 MicrosoftVisual C+6.0 中 c 语言的情况下,对于查询采用了逐个查询法,程序通过调试运行实现了设计目标,并且经过适当完善后,将可以应用在实际中解决问题。1第二章算法思想2.1系统需求分析为了实现提高高校宿舍管理部门的工作效率, 充分利用资源, 减少少不必要的人力,物力,和财力的支出,

6、 方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的,为宿舍管理部门开发设计专用系统软件宿舍管理软件来进行管理学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。该程序应该具有以下功能:( 1)学生的入住信息录入;( 2)输出学生入住信息(分别按姓名,学号,房间号有序) ;( 3)按给定学号,姓名,房间号查询;( 4)插入新增的学生信息;( 5)按学号删除学生信息。该程序执行的全过程大致为:( 1)按照提示输入所需要的条件;( 2)选择要实现的功能;( 3)显示执行后的结果2.2系统总体设计2.2.1系统设计目标任务:为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求

7、:(1)采用交互工作方式(2)建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序 ( 冒泡、选择、插入排序等任选一种 )查询菜单 : ( 用二分查找实现以下操作)(3)按姓名查询2(4)按学号查询(5)按房号查询(6)打印任一查询结果(可以连续操作)2.2.2开发设计思想基于以上系统设计目标,本文在开发人事管理信息系统时遵循了以下开发设计思想 :采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护

8、人员补充、维护。系统应具备数据库维护功能,及时根据用户需求进行数据的添加、查找、显示、 排序等操作。2.2.3系统功能模块设计本系统分为八个模块:如图2-1 所示的系统功能模块图。如图2-2 系统功能模块图。2-1 系统模块图如下请按选择操作1 按姓名排序2 按学号排序3 按房号排序4 按姓名查找5 按学号查找6 按房号查找7 按学号插入8 按学号删除3输入信息输出界面选择操作n选择 1n选择 2n选择 3n选择 4n选择 5n选择 6n选择 7n选择 82-2 系统功能图如下y按姓名排序显示y按学号排序显示y按房号排序并显示y按姓名查找并显示y按学号查找并显示y按房号排序并显示y按学号插入结

9、束y按学号删除系统退出ny选择 042.3算法思想描述该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。在每个区域中会调用不同的函数来实现主要的功能。比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序, 然后再输出; 在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。而最主要的函数有 :<1>插入函数,它用尾插法来实现;<2>排序函数,用快速排序函数来实现;&l

10、t;3>查找函数,用逐个查找法;5第三章算法实现3.1数据结构选择的数据结构为:#include<stdio.h>#include<stdlib.h>#include<string.h>数据结构采用链式存储,所有程序从主函数void main ()开始,首先调用menu()主菜单函数,在menu()函数中依次增加各种功能,然后通过switchcase 语句分别选择录入,显示,插入,查找,退出功能1,选择录入功能时调用shuru() 函数录入信息; 2 选择显示功能时,首先用linklist l()表头显示函数,然后分别调用 sort1(linklist

11、 &l) sort2(linklist &l), sort3(linklist &l),函数根据学生学号,学生宿舍号,学生姓名关键字进行冒泡排序,然后显示 3 选择查询功能时首先调用 insert(linklist&l) 函数进行信息插入,然后调用linklistl() 表头显示函数,最后调用 print1(l)函数显示信息并对其进行排序4 选择查询功能时,首先调用menu5()显示查询的菜单,然后分别调用 chazhao1(linklist&l) ,chazhao2(linklist&l) ,chazhao3(linklist &l)

12、,以学生学号,姓名,宿舍号为关键字进行查找,最后调用 system()显示函数退出功能。3.2程序模块3.2.1数据结构设计数据结构:线性存储结构:链式#include<stdio.h> /-线性表的静态单链表表示存储结构 -#include<string.h> /定义一个存储学生相关信息的结构体# define N 10 ; /链表的最大长度void main()/主函数l inklist l;/定义线性表 l6i nit(l);/调用初始化函数char ch;system("color a");printf("n");prin

13、tf("*欢 迎 进 入 宿 舍 管 理 查 询 系 统*n");printf("n");printf("请按任意键开始操作 :");scanf("%c",&ch);system("cls");/将屏幕先前显示的内容清理掉create(l);/调用线性表创建函数system("cls");/显示t =1;menu();/调用主菜单函数void init(linklist &l)/线性表初始化void menu()/操作菜单void disp()/返回主界面vo

14、id panduan3() /如果已无学生记录则返回主界面3.3各模块之间的调用关系3.3.1模块划分void shuru(linklist l)/输入学生的信息void create(linklist &l)/创建学生信息表shuru(l); /调用输入函数void sort3(linklist &l)/按房号排序(采用冒泡排序)void sort2(linklist &l)/按学号排序(采用冒泡排序)void sort1(linklist &l)/按姓名排序(采用冒泡排序)void print1(linklist &l)/打印学生信息void pri

15、nt2(linklist &l,int mid)/打印查找到的学生信息intpanduan1(char ch) /判断是否继续查找int panduan2(char ch) /如果学生不存在 , 判断是否继续查找void chazhao3(linklist &l)/按房号从小到大查找(采用二分查找)7void chazhao2(linklist &l)/按学号从小到大查找(采用二分查找)void chazhao1(linklist &l)/按姓名从小到大查找(采用二分查找)void insert(linklist &l)/按学号从小到大插入该学生void

16、 Delete(linklist &l)/按学号删除该学生调用函数的实现:switch(f)case 1: sort1(l);/调用按姓名排序函数printf("n");if(l.length=0)printf("已无学生记录 n");printf("n");disp();menu();elseprintf("按姓名排序 :n");print1(l);disp();/调用返回主界面menu();break;case 2: sort2(l);/调用按学号排序函数printf("n");if

17、(l.length=0)printf("已无学生记录 n");printf("n");disp();menu();8elseprintf("按学号排序 :n");print1(l);disp();menu();break;case 3: sort3(l);/调用按房号排序函数printf("n");if(l.length=0)printf("已无学生记录 n");printf("n");disp();menu();elseprintf("按房号排序 :n"

18、);print1(l);disp();menu();break;case 4:sort1(l);/先调用按姓名排序函数进行排序chazhao1(l);/再调用按姓名查找函数进行(二分)查找break;case 5: sort2(l);/先调用按学号排序函数进行排序chazhao2(l);/再调用按学号查找函数进行(二分)查找break;case 6: sort3(l);/先调用按房号排序函数进行排序chazhao3(l);/再调用按房号查找函数进行(二分)查找break;case 7: sort2(l);/调用插入函数9insert(l);system("cls");pri

19、ntf("显示插入后的学生信息 :n");print1(l);disp();menu();break;case 8: Delete(l);/调用删除函数if(l.length=0)printf("n");printf("学生记录已被删除完 n");printf("n");disp();menu();elseprintf("显示删除后的学生信息 :n");print1(l);disp();menu();break;3.3.2操作实现录入学生信息void shuru(linklist l)/输入学生

20、的信息printf("请输入姓名 :");10fflush(stdin);/清空输入缓冲区,得到正确的输入数据gets();/输入一行字符串(姓名)printf("请输入性别 :");/hnnnfflush(stdin);/清空输入缓冲区,得到正确的输入数据、gets(stud.sex);/输入一行字符串(性别) 、printf("请输入学号 :");scanf("%d",&stud.num);printf("请输入房号 :");scanf("%d"

21、,&stud.room);void create(linklist &l)/创建学生信息表if(l.length>=l.listsize) /判断学生的人数是否超过初值,如果超过,则重新分配stu *newbase;newbase=(stu*)realloc(l.elem,(N+increase)*sizeof(stu );l.elem=newbase;l.listsize+=increase;int i=2;char ch;printf("n");printf("*开始创建线性表*n");printf("n")

22、;printf("请输入第 1 个学生的信息 n");shuru(l);/调用输入函数ch=getchar();strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;printf("n");printf("是否继续输入 ?<y/n>:");scanf("%c",&ch);printf("n");printf("

23、n");while(ch='y')printf("请输入第 %d个学生的信息 n",i);shuru(l);strcpy(,);l.eleml.length.num=stud.num;11l.eleml.length.room=stud.room;l.length+;i+;ch=getchar(); printf("n");printf("是否继续输入 ?<y/n>:");scanf("%c",&ch);print

24、f("n");printf("n");if(ch='n')system("cls");显示学生信息void print1(linklist &l)/显示并打印学生信息int i;printf("n");printf("姓名学号房号 n");printf("n");for(i=0;i<l.length;i+)printf("%-15s%-3d %5dn",,l.elemi.num,l.elemi.room

25、);学生信息插入void insert(linklist &l)/按学号从小到大插入该学生int i,j,k;char ch;printf("n");printf("插入的学生信息为 :n");printf("姓名 :");fflush(stdin);/清空输入缓冲区,得到正确的输入数据gets();printf("学号 :");scanf("%d",&stud.num);printf("房号 :");scanf("%d"

26、,&stud.room);if(l.length=0)strcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;for(i=0;i<l.length;i+)12if(stud.num<l.elemi.num)k=i;for(j=l.length;j>k;j-)l.elemj=l.elemj-1;strcpy(,);l.elemk.num=stud.num;l.elemk.room=stud.ro

27、om;break;elsestrcpy(,);l.eleml.length.num=stud.num;l.eleml.length.room=stud.room;l.length+;fflush(stdin);printf("n");printf("是否继续插入 ?<y/n>:");scanf("%c",&ch);if(ch='y') insert(l);else system("cls");学生信息排序void sort3

28、(linklist &l)/按房号排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(l.elemi.room>l.elemj.room)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;13void sort2(linklist &l)/按学号排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(l.elemi

29、.num>l.elemj.num)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;void sort1(linklist &l)/按姓名排序(采用冒泡排序)int i,j;stu temp;for(i=0;i<l.length-1;i+)for(j=i+1;j<l.length;j+)if(strcmp(,)>0)temp=l.elemi;l.elemi=l.elemj;l.elemj=temp;学生信息查找void chazhao3(linklist &l)/按房号从小

30、到大查找(采用二分查找)if(l.length=0) panduan3();/此函数功能为:返回主界面elseint low=0,high=l.length,mid,flag=0;/flag作为标志符,为1 则表示查找成功,否则没有所要查找的学生int m;char ch;printf("n");printf("n");printf("按房号查找 ->请输入要查找的房号 :");scanf("%d",&m);printf("n");14while(low<=high)mid=

31、(low+high)/2;if(m=l.elemmid.room)flag=1;break;else if(m>l.elemmid.room)low=mid+1;elsehigh=mid-1;if(flag=1)print2(l,mid);if(panduan1(ch)/调用判断函数 1chazhao3(l);elsesystem("cls");menu();elseif(panduan2(ch) /调用判断函数 2chazhao3(l);elsesystem("cls");menu();void chazhao2(linklist &l)

32、/按学号从小到大查找(采用二分查找)if(l.length=0) panduan3();else15int low=0,high=l.length,mid,flag=0;int n;char ch;printf("n");printf("n");printf("按学号查找 ->请输入要查找的学号 :");scanf("%d",&n);printf("n");while(low<=high)mid=(low+high)/2;if(n=l.elemmid.num)flag=1;b

33、reak;else if(n>l.elemmid.num)low=mid+1;elsehigh=mid-1;if(flag=1)print2(l,mid);if(panduan1(ch)chazhao2(l);elsesystem("cls");menu();elseif(panduan2(ch) chazhao2(l);elsesystem("cls");menu();16void chazhao1(linklist &l)/按姓名从小到大查找(采用二分查找)if(l.length=0) panduan3();elseint low=0,

34、high=l.length,mid,flag=0;printf("n");printf("n");printf("按姓名查找 ->请输入要查找的姓名 :");char a15,ch;scanf("%s",a);printf("n");while(low<=high)mid=(low+high)/2;if(strcmp(a,)=0)flag=1;break;else if(strcmp(a,)>0)low=mid+1;els

35、ehigh=mid-1;删除操作void Delete(linklist &l)/按学号删除该学生int i,j,k=-1;char ch;printf("n");printf("n");printf("请输入要删除学生的学号:");scanf("%d",&stud.num);for(i=0;i<l.length;i+)if(stud.num=l.elemi.num)printf("该学生的信息为 :n");printf("n");printf(&quo

36、t;%-15s%-3d %7dn",,l.elemi.num,l.elemi.room);k=i;17for(j=k;j<l.length-1;j+)l.elemj=l.elemj+1;printf("n");break;if(i>=l.length) printf("该学生不存在 n");if(k>=0)l.length-;fflush(stdin);printf("n");printf("是否继续删除 ?<y/n>:");scanf("%

37、c",&ch);system("cls");if(ch='y') Delete(l);else system("cls");3.4源程序代码#include<stdio.h>/c语言头文件,包含一些函数,如scanf,printfK可直接调用#include<stdlib.h>/定义五种类型、一些宏和通用工具函数。类型例如 size_ 等#include<string.h>/包含字符串处理函数的头文件#define N 40 /线性表存储空间的初始分配量#define increase

38、 10 /线性表存储空间的分配量增量int f,t=0; /定义全局变量typedef struct /定义新结构char name20;char sex20;int num;/学号和房号都为整型int room;stu;stu stud;typedef struct/二叉树的二叉链表存储表示int length; /当前长度stu *elem;/存储空间基址int listsize; /当前分配的存储容量linklist;void init(linklist &l)/线性表初始化18l.length=0;l.elem=(stu *)malloc(N*sizeof(stu );/将 m

39、alloc 返回的内存空间地址转成大小为结构体 stu 的大小的空间,再赋给L.elem.l.listsize=N;void menu()/操作菜单printf("n");printf("*请 按 键 选 择 操 作*n");printf("n");printf("n");printf("1按姓名排序2按学号排序 n");printf("n");printf("3按房号排序4按姓名查找 n");printf("n");printf("5按学号查找6按房号查找 n");printf("n");printf("7按学号插入

温馨提示

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

评论

0/150

提交评论