《c语言程序设计报告 .doc》由会员分享,可在线阅读,更多相关《c语言程序设计报告 .doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、宿舍管理查询软件程序设计报告书 专 业:计算机科学与技术(软件外包) 题 目:宿舍管理查询软件 班 级:2013 03 参 与 人 员:张钊顺 指 导 老 师:解庆元 完 成 时 间:2014年02月26日前言在校学生的信息管理是校园管理中的一个重要内容,随着国家扩招政策的继续实施,学生数量也不断增加、信息的不断细化、各个行业间联系的不断密切,对人事管理的要求也不断提高。如何记录和管理好学生的信息,对学生实施高效的宏观管理,对学生出入宿舍以及学生注入和迁出的信息的灵活的记录及更新,是一项繁重而艰巨的任务。 关键词:C+;数据库表;宿舍信息查询;宿舍信息管理 目 录目录1第一章 开发环境和开发工
2、具.11.1 C#语言简介.11.2 开发背景.11.3 开发环境.1第二章 算法思想 2.1系统需求分析42.2系统总体设计4 2.2.1 系统设计目标.4 2.2.2 开发设计思想.4 2.2.3 系统功能模块设计.52.3 算法思想描述5第三章 算法实现 3.1 数据结构.6 3.2 程序模块.6 3.3 各模块之间调用关系.7 3.4 源程序代码.7第四章 测试与分析 4.1 测试数据选择16 4.2 测试结果分析16用户手册19总结19心得体会.20第一章 开发环境和开发工具1.1 C/ C +语言简介C+标准可分为两部分, C+语言本身和C+标准库。C+标准库对于Visual C+
3、是相当新的,实际上微软只是在发布Visual C+ 5.0时去除了一些“bug”。标准库提供了标准的输入/输出、字符串、容器(如矢量、列表和映射等)、非数值运算(如排序、搜索和合并等)和对数值计算的支持。应该说, C/C+包含了相对少的关键字,而且很多最有用的函数都来源于库,C+标准库实现容器和算法的部分就是STL。 STL是数据结构和算法的一个框架,数据结构包括矢量、列表和映射等,算法包括这些数据结构的查找、拷贝和排序等。1994年7月,ANSI/ISO C+标准委员会投票决定接受STL为C+标准库的一部分,这个建议是根据Alex Stepanov、Meng Lee和David Musser
4、这三人的编程和软件库研究提出的。STL的产生是为了满足通用性的设计目标,而不是为了提高性能。 1.2 开发背景 随着科学技术的不断发展,计算机科学日渐成熟,其强大的功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量企业管理科学化和现代化的重要标志,而人事管理的全面自动化、信息化则是其中重要的组成部分。人事管理的好坏对于企业的决策者和管理者来说都至关重要,在很大程度上影响着企业的经济效益和社会效益。因此,本文所研究的人事管理信息系统具有一定的使用价值和现实意义。1.3 开发环境本文所采用的开发环境主要是在一般的PC硬件环境和Windou
5、ws Vista/2003/XP系统由Visual+6.0编写而成,在用到Microsoft Visual C+6.0中c语言的情况下,对于查询采用了逐个查询法,程序通过调试运行实现了设计目标,并且经过适当完善后,将可以应用在实际中解决问题。第二章 算法思想2.1 系统需求分析从总体分析可知,该宿舍管理系统必须满足用户以下基本需求: 可对入住学生可进行信息录入;可对新入学生的信息进行插入可按学号,姓名,房间号等任意一种方式查询学生的信息可按学号,房间号来进行排序2.2 系统总体设计2.2.1 系统设计目标1 本文研究:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:1.1.1 采用交互
6、工作方式1.1.2 建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(分别用冒泡、选择、插入排序实现)2 查询菜单: (用二分查找实现以下操作)2.1.1 按姓名查询2.1.2 按学号查询2.1.3 按房号查询3 打印任一查询结果并可以连续操作。2.2.2 开发设计思想 基于以上系统设计目标,本文在开发人事管理信息系统时遵循了以下开发设计思想: 采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维
7、护人员补充、维护。系统应具备数据库维护功能,及时根据用户需求进行数据的添加、查找、显示、排序等操作。2.2.3 系统功能模块设计 本系统分为四个模块:查找子菜单、信息录入、信息显示、查找功能子菜单。得到如图3-1所示的系统功能模块图学生宿舍管理录入后显示学生信息显示学生信息录入学生信息插入学生信息查询按姓名查询按学号查询按房间号查询查询时显示插入后显示图3-1系统功能模块2.3 算法思想描述 该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,学生信息录入函数,显示函数,排序函数,插入函数以及查找函数。在每个区域中会调用不同的函数来实现主要
8、的功能。比如,在学生显示这个功能里调用显示函数;在插入功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信心进行排序,然后再输出;在查找功能里会调用查找函数来进行查找,包括按照性别,学号,姓名,房间号等查询。 而最主要的函数有 插入函数,它用尾插法来实现; 排序函数,用快速排序函数来实现; 查找函数,用逐个查找法;第三章 算法实现3.1 数据结构宿舍管理查询系统是一个数据库应用系统,学生的学号姓名房间号和性别等信息都保存在数据库中。然后可以通过程序来查找学生的各种信息。该程序所用的数学模型为线型结构。 3.2 程序模块 根据用户需求不同,将系统划分了不同的功能模块,而依据不同的功能模
9、块编写不同的程序模块,具体如下:信息录入模块(即为程序中的shuru()函数)信息插入模块(即为charu()函数)信息查询模块(即为程序中的chazhao()函数,包括chazaho1(),chazaho2(),chazaho3()三个子函数)信息显示模块(即为程序中的sort()函数)而各个函数之间由一个switch结构联系起来,而学生信息的连续输入或者连续查找则由相应的do-while结构来实现,从而实现各个模块之间的紧密衔接。3.3 各模块之间的调用关系显示“宿舍管理查询系统主菜单” “信息录入”输入“学号,姓名,性别,房间号”是否继续“信息显示”输出已录入的学生信息查找功能子菜单插入
10、功能子菜单插入学生信息分别进行查询输入“4”返回上一级菜单输入“5”退出输入“3”返回上一级菜单Y N结束 3.4 源程序代码 #include #include #include # include #include# define N 20 /*自定义函数声明部分*/ void showheader(); /声明显示表头部分 int menu(); /声明主菜单函数 int menu3(); /声明插入功能子菜单函数 int menu5(); /声明查找功能子菜单函数 /int quanxian(); /声明用户权限管理函数 /void SavePass(); /密码显示为*的函数stru
11、ct student shuru(); /声明学生信息录入函数 void display(struct student); /声明显示函数 void sort(struct student stuN,int,int); /声明排序函数 void charu(struct student stuN,int); /声明插入函数 void chazhao1(struct student stuN,int i); /声明按照学号查找函数 void chazhao2(struct student stuN,int i); /声明按照姓名查找函数 void chazhao3(struct student
12、stuN,int i); /声明按照房间号查找/*定义结构体*/ struct student /* 构造结构成员 */int ID; char name15; char sex; int roomnum; float score3; char *getSex() if(sex=g) return 女; else return 男; ; /*主函数开始*/ void main() struct student stuN; int count=0,m=0,j; char ch,ch1; int choice,choice3,choice4; /菜单选项及子菜单选项 do /此循环体控制返回主菜单
13、 ch1=n; /如果用户将主菜单选择错误,可用此变量控制是否重输 choice=menu(); switch(choice) /此条件结构控制选择菜单功能后的操作 case1: /输入学生信息 do /此循环体控制是否继续输入 cout* 学员信息录入 *n; cout请输入第count+1个学员的信息nn; stucount=shuru(); /调用输入函数 /cout是否继续(y/n); fflush(stdin); / 刷新标准输入缓冲区,把输入缓冲区里的东西丢弃 ch=getchar(); count+; while(ch=y); break; case2: /显示排序好的学生信息
14、cout* 学员信息显示 *n; coutn排序后的信息如下:n; sort(stu,0,count-1); /调用排序函数 showheader(); for(j=0;jcount;j+) display(stuj); /调用显示函数 break; case3: /插入功能 if(choice3!=3) /此循环体控制是否退出子菜单 choice3=menu3(); /调用子菜单函数 if(choice3=1) /此条件结构控制子菜单选项 do /此循环体判断是否继续插入 cout* 学员信息插入 *n; charu(stu,count); /调用插入函数 count+; cout是否继续插
15、入?(y/n); fflush(stdin); ch=getchar(); while(ch=y); if(choice3=2) /此条件结构控制子菜单选项 coutnn插入学生信息后如下:n; sort(stu,0,count-1); /调用排序函数 showheader(); for(j=0;jcount;j+) display(stuj); /调用显示函数 else menu(); break; case4: /查找功能 if(choice4!=4) /控制是否继续查找 choice4=menu5(); /调用查找子菜单函数 if(choice4=1) /控制按照学号查找 chazhao
16、1(stu,count); /调用按照学号查找的函数 if(choice4=2) /控制按照姓名查找 chazhao2(stu,count); /调用按照姓名查找的函数 if(choice4=3) /控制按照房间查找 chazhao3(stu,count); /调用按照房间查找的函数 else menu(); break; case 5: /退出 cout确认退出?(y/n); /让用户确认是否退出 fflush(stdin); ch=getchar(); break; default: coutaa警告:您输入错误,是否重输!(y/n); fflush(stdin); ch1=getchar
17、(); break; while(ch=n|ch1=y); /控制是否要退出系统 /*主函数结束*/ /*自定义输入函数*/ struct student shuru() struct student stu; coutstu.ID;coutstu.name;coutstu.sex;coutstu.roomnum;cout是否继续?(Y/N)endl;return stu; /*自定义显示函数*/ void display(struct student stu) couttstu.IDt; coutstu.namet;coutstu.getSex()t;coutstu.roomnumtendl
18、; /*自定义排序函数*/ void sort(struct student stuN,int i,int l) int key; struct student temp;key=stui.ID;while(il)while(i=key)-l; temp=stul; stul=stui; stui=temp;while(il&stui.ID=key)+i; temp=stul; stul=stui; stui=temp; /*自定义插入函数*/ void charu(struct student stuN,int k) int i,l; struct student in ; in=shuru
19、(); /调用输入函数 for(i=0;ii;l-) stul=stul-1; stui=in; /*自定义主菜单函数*/ int menu() int choice; couttt*nnttt 欢迎进入学生宿舍管理查询系统 nntt*nn; coutttt*主菜单*nn; cout 学生信息录入nn; cout 学生信息显示nn; cout 插入学生信息nn; cout 查找学生信息nn; cout 退出n; coutchoice;return choice; /*自定义插入功能子菜单函数*/ int menu3() coutt*这里显示的是插入功能子菜单*nn; couttttt1、插入学
20、生信息nn; couttttt2、显示插入后的学生信息nn; couttttt3、退出子菜单,返回上一级菜单nn; coutchoice3;return choice3; /*自定义按照学号查找函数*/ void chazhao1(struct student stuN,int i) int select,j; char ch; coutt*您选择的是按照学号查找:*nn; do coutselect;for(j=0;ji;j+) if(select=stuj.ID) break; if(ji) showheader(); display(stuj); else cout你查找的信息不存在n;
21、 fflush(stdin); ch=getchar(); while(ch=y); /*自定义按照姓名查找函数*/ void chazhao2(struct student stuN,int i) int j; char name15; char ch; coutt*您选择的是按照姓名查找:*nn; do coutname;for(j=0;ji;j+) if(strcmp(name,stuj.name)=0) break; if(ji) showheader(); display(stuj); else cout你查找的信息不存在n; fflush(stdin); ch=getchar();
22、 while(ch=y); /按照房间号查找void chazhao3(struct student stuN,int i)int j,room;char ch;coutt*您选择的是按照房间号查找:*nn; do coutroom;for(j=0;ji;j+) if(room=stuj.roomnum) break; if(ji) showheader(); display(stuj); else cout你查找的信息不存在n; cout是否继续查找?(y/n); fflush(stdin); ch=getchar(); while(ch=y); /*自定义查找功能子菜单函数*/ int m
23、enu5() coutt*这里显示的是查找功能子菜单*nn; couttttt1、按照学号查找nn; couttttt2、按照姓名查找nn; couttttt3、按照房间号查找nn;couttttt4、退出子菜单,返回上一级菜单nn; coutchoice4;return choice4; void showheader() coutnnt*n; coutt学号t姓名t性别t房间号tn; coutt*n; 第四章 测试与分析4.1 测试数据选择学号姓名性别房间号18李东洋男22822李照耀男22728邵光光男23245曾广海男2284.2 测试结果分析主菜单显示:信息录入界面:信息显示界面:查
24、找学生信息界面:由源程序及测试结果分析可知:该程序主要功能有以下几个函数来实现:插入函数,其时间复杂度为o(n);查找函数,其时间复杂度为o(n);排序函数,其时间复杂度为knln(n);6 用户手册 1)本系统执行文件为:宿舍管理查询.exe。2)进入系统界面后,在主菜单的中,选择相应的操作前的数字,出现提示界面。根据提示输入相关信息或得到预期结果。3)在输入信息时:编号为字符型, 姓名:英文字母。 学号:1-4位数字 性别:男(或女) 房间号:1-3位数字总 结经过一个假期的放松,以前对许多知识都有点陌生,通过这次的课程设计使我明白了许多东西,翻阅了大量的书籍以及上网查了很多的相关资料,也
25、从中学会了不少东西,它使我知识更加的系统化、全面化。在实验的过程中也让我体会到了做任何事情都是要付出一定的努力的。一份努力一分收获,每当自己单独的成功解决某些问题时,都会感觉很兴奋,也很有成就感。虽然设计完成了,但是我觉得其中还是由一些不足之处:1. 警告句。程序中缺少一些警告句,例如:“是否真的退出(y/n)?”。2. 重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。3. 选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。心得体会经过这次课程设计,我感到以后若要做比较
26、复杂的程序,一定不能够急于下手,而首先赢冷静下来,从总体上把握题目的要求,现根据题目的要求将流程图画出来,然后仔细想想程序的大致构架是什么,用哪个结构更能迅速准确的将题目的要求表达出来,对于我们这一学期实际学到的内容的检验,在课程设计的同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上没有学到的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正的掌握,从而提高自己的实际动手能力和独立思考的能力。要学好数据结构这门课程,不仅要认真的阅读课本知识,更重要的是通过上机实验才能增强和巩固对课本知识
27、的理解。首先通过实践我发现了自己的许多的不足,尤其是露出了对C语言知识基础的掌握不好,许多简单的东西都不知道。在课本上看到的各种算法感觉都很简单,但是真正的让自己去写一个算法感觉很困难,。即使是课本上的源程序算法,自己写起来都感觉有点生疏。在调试过程中经常出现的错误也不是很熟悉。通过实践,使我在这几个方面的认识有所提高,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是数据结构,在其他的课程中都会注重实践。所以在今后的学习过程中,我会更加注视实践操作,使自己更好的学好计算机。回顾起此次数据机构课程设计,至今我仍然感慨颇多,的确,从选题到定稿,从理论到实践,遇到了许多问题,但是我也学到了许多东西虽然程序中不是很完美,但是对我而言已经是很辛苦得来的成绩,我以后还需要继续努力!主抓枝干,捕捉细节,树立科学的学习态度,认真努力!参考文献 1王子恢,戴建鹏.c+语言大全(第四版).电子工业出版社 2003.42谭浩强.c程序设计(第三版).清华大学出版社.