版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、攀枝花学院学生课程设计(论文)题 目宿舍管理查询软件的设计与实现学生姓名: 学号:所在院(系):计算机学院专业:班级:指导教师:职称:2011年6月4日教务处制攀枝花学院本科学生课程设计任务书题目宿舍管理查询软件的设计与实现1课程设计的目的培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和 科学作风方面受到比较系统和严格的训练。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)1)任务:为宿舍管
2、理人员编写一个宿舍管理查询软件,程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2)查询菜单:(用二分查找实现以下操作 )A. 按姓名查询B. 按学号查询C. 按房号查询3)打印任一查询结果(可以连续操作)3、主要参考文献:1:数据结构(C语言版),严蔚敏,清华大学出版社,2003.:2 :数据结构题集,严蔚敏,清华大学出版社,2005.:3:数据结构(C语言版),刘大有,高等教育出版社,2004.4Data Structure with C+,William Ford . William Topp,清华大学
3、出版社,2003.4、课程设计工作进度计划第1天完成方案设计与程序框图第2、3天 编写程序代码第4天程序调试分析和结果第5天课程设计报告和总结指导教师(签字)日期年月日教研室意见:年月日学生(签字): 接受任务时间:年月日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称宿舍管理查询软件的设计与实现评分项目分 值得 分评价内涵工 作 表 现20%01学习态度6遵守各坝纪律,丄作刻苦努力,具有艮好的科学 工作态度。02科学实践、调研7通过实验、试验、查阅文献、深人生产实践等渠 道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能 力 水 平35%0
4、4综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题, 能正确处理实验数据,能对课题进行理论分析, 得岀有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提岀并 较好地论述课题的实施方案;有收集、加工各种 信息及获取新知识的能力。06设计(实验)能力,方案 的设计能力5能正确设计实验方案,独立进行装置安装、调试、 操作等实验工作,数据正确、可靠;研究思路清 晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机 进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析 能力(综合分析能力、技 术经济分析能力)10具有较强的数据收集
5、、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇 幅、设计(论文)规范化 程度5符合本专业相关规范或规定要求;规范化符合本 文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分, 结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指 导 教 师 评 语指导教师签名:年 月曰本宿舍管理查询软件是为方便宿舍管理人员实现宿舍管理查询而开发的,具有信息录入、显示、查询、排序、插入和删除功能,能实现信息修改和通过别的 途径导入大量数据,可连续打印任一查询结果,但不能实现信息存盘,使用简单 方便,点击程序即可运行
6、。关键词:管理,查询,结构体,函数IV攀枝花学院本科学生课程设计任务书 I课程设计(论文)指导教师成绩评定表 II摘要Ill1方案设计-1-1.1 任务:-1 -1.1.1程序设计要求: -1 -1.1.2查询菜单:(用二分查找实现以下操作 )-1 -1.1.3打印任一查询结果(可以连续操作) -1 -1.2 功能:-1 -2算法设计-2-2.1线性表的顺序存储 -2 -2.1.1存储结构-2 -2.1.2程序结构图为:-2 -3详细设计-3-4调试分析-9-4.1使用方法-9 -4.2测试数据:-9 -4.2.1开始录入的数据: -9 -4.2.2插入的数据: -9 -4.2.3查找的数据:
7、 -9 -4.2.4删除的数据: -9 -4.3测试输出结果(以运行结果图表示): -10 -4.3.1欢迎界面:-10 -4.3.2按任意键进入线性表的创建界面: -10 -4.3.3输入数据,开始创建: -10 -4.3.4请按键选择操作: -11 -4.3.5按姓名排序: -11 -4.3.6 按学号排序: -11 -4.3.7按房号排序: -12 -4.3.8 插入后显示: -12 -4.3.9按姓名查找: -12 -4.3.10按学号查找: -12 -4.3.11按房号查找:-13 -4.3.12进入删除功能,删除数据后显示剩余的学生信息:-13 -4.3.13退出(数字为零时退出)
8、: -13 -4.4分析结果 -14 -5 总结-15 -参考文献-16 -1方案设计1.1任务:为宿舍管理人员编写一个宿舍管理查询软件1.1.1程序设计要求: 采用交互工作方式 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、 选择、插入排序等任选一种)1.1.2查询菜单:(用二分查找实现以下操作) 按姓名查询 按学号查询 按房号查询1.1.3打印任一查询结果(可以连续操作)1.2功能:根据上述要求,我们开始考虑系统应具备的功能: 要实现交互工作方式,各项操作结束后均应返回主菜单; 系统本无任何信息数据,要建立数据文件,需开发一个信息录入功能,即 首先创建一个学员线性表,同
9、时我们可以将数据暂时保存在内存中, 所以我们未 开发信息存盘功能; 信息录入后都保存在内存中,用户看不到,需要设计一个信息显示功能, 信息的显示应该便于查阅,所以需具备按各种关键字显示的功能; 本系统按关键字(姓名、学号、房号)进行冒泡排序,采用二分查找方式 分别实现按关键字(姓名、学号、房号)查询功能; 由于有些同学因为不同原因而离校,所以设计了删除功能; 由于有新同学入校,所以设计了插入功能; 当用户操作完毕需要退出时,我们提供了退出选项,便于使用者退出交互 式工作系统。2算法设计2.1线性表的顺序存储2.1.1存储结构本系统定义的存储结构采用结构体数组,结构体为:typedef stru
10、ct/定义结构体成员char n ame20;int num;/学号和房号都为整型int room;stu;stu stud;typedef structint len gth;当前长度stu *elem;/存储空间基址int listsize;/当前分配的存储容量li nklist;在此说明每个部分的算法设计说明(可以是描述算法的流程图)2.1.2程序结构图为:-18 -3详细设计*n");采用顺序线性表解决宿舍管理问题(C语言)#in clude<stdio.h>#in clude<stdlib.h>#in clude<stri ng.h>#d
11、efi ne N 40 /线性表存储空间的初始分配量#defi ne in crease 10 /线性表存储空间的分配量增量int f,t=O;定义全局变量typedef structchar n ame20;int num;/学号和房号都为整型int room;stu;stu stud;typedef structint length; /当前长度stu *elem; /存储空间基址int listsize;/当前分配的存储容量 li nklist;void in it(li nklist &l)线性表初始化l.le ngth=O;l.elem=(stu *)malloc(N*siz
12、eof(stu ); l.listsize=N;void menu()操作菜单prin tf("n"); printf("请按键选择操作prin tf("n");pri ntf("n");prin tf("1按姓名排序2按学号排序n");prin tf("n");printf("3按房号排序4按姓名查找n");prin tf("n");printf("5按学号查找6按房号查找n");prin tf("n")
13、;printf(”7按学号插入8按学号删除n");prin tf("n");prin tf("n");prin tf("n");prin tf("n");printf("提示:当输入的数字键为0时,退 出操作n");if(t=1)printf("请输入数字键(18为操作 键):");/18为有效数字操作键scan f("%d", &f);if(f<0|f>9) system("cls"); prin tf(
14、"n");printf("输入数字不对,请在原处重输!n");printf("n");menu();void disp()返回主界面char c;fflush(stdi n);prin tf("n");printf("请按任意键进入主界面:”); sca nf("%c",&c);system("cls");void pan dua n3()如果已无学生记录则返回主界面prin tf("n");printf("已无学生记录n&qu
15、ot;);prin tf("n");disp();men u();void shuru(li nklist l)/ 输入学生的信息printf("请输入姓名:");_fflush(stdin);/清空输入缓冲区,得到正确的输入数据gets(stud. name);/ 输入一行字符串(姓名)printf("请输入学号:");sca nf("%d", &stud. nu m);printf("请输入房号:");sca nf("%d", &stud.room);vo
16、id create(linklist &l) 创建学生信息表if(l.le ngth>=l.listsize)/ 判断学生的人数是否超过初值,如果超过,则重新分配stu *n ewbase;n ewbase=(stu*)realloc(l.elem,(N+i ncreas e)*sizeof(stu );l.elem=n ewbase;l.listsize+=in crease;int i=2;char ch;prin tf("n");printf(” *开始创建线性表n");printf("请输入第1个学生的信息n"); shu
17、ru(l);调用输入函数ch=getchar();strcpy(l.elemlen gth. name,stud .n ame); l.eleml .len gth. num=stud. num; l.eleml.le ngth.room=stud.room; l.len gth+;prin tf("n");printf("是否继续输入?<y/n>:");scan f("%c",&ch);prin tf("n");pri ntf("n");while(ch='y
18、9;)printf("请输入第%d个学生的信息 n",i);shuru(l);strcpy(l.eleml .len gth. name,stud .n ame); l.eleml .len gth. num=stud. num; l.eleml.le ngth.room=stud.room; l.len gth+;i+;ch=getchar(); prin tf("n");printf("是否继续输入?<y/n>:");scan f("%c",&ch);prin tf("n"
19、;);pri ntf("n");if(ch=' n') system("cls");void sort3(linklist &)/按房号排序(采用冒 泡排序)int i,j;stu temp;for(i=0;i<l.le ngth-1;i+) for(j=i+1;j<l.le ngth;j+)if(l.elemi.room>l.elemj.room)temp=l.elemi; l.elemi=l.elemj; l.elemj=temp;void sort2(li nklist &l) 按学号排序(采用冒
20、泡排序)int i,j;stu temp;for(i=0;i<l.le ngth-1;i+) for(j=i+1;j<l.le ngth;j+) if(l.elemi. nu m>l.elemj. num) temp=l.elemi; l.elemi=l.elemj; l.elemj=temp;void sort1(li nklist &)/ 按姓名排序(采用冒 泡排序)int i,j;stu temp;for(i=0;i<l.le ngth-1;i+) for(j=i+1;j<l.le ngth;j+)if(strcmp(l.elemi. name,l.
21、elemj. name) >0)temp=l.elemi; l.elemi=l.elemj; l.elemj=temp;void prin t1(li nklist &l)打印学生信息int i;prin tf("n");printf("姓名学号 房号n ");pri ntf("n");for(i=0;i<l.le ngth;i+)prin tf("%-15s %-3d %5dn",l.elemi. name,l.elemi. nu m,l.elemi.room);void prin t2(li
22、 nklist & l,i nt mid)/ 打印查找到的学生信息printf("查找成功> 该学生信息 为:n");printf("姓名学号房号 n");pri ntf("n");prin tf("%-15s %-5d %-5dn" ,l.elemmid. n ame,l.elemmid. nu m,l.elemmid.room); int pan dua n1(char ch)判断是否继续查找scan f("%c",&ch);printf("是否继续查找?&l
23、t;y/n>:"); fflush(stdi n);scan f("%c",&ch);if(ch='y') system("cls"); return(1);elsereturn 0;int pan dua n2(char ch)如果学生不存在判断是否继续查找scan f("%c",&ch);printf("该学生不存在,是否继续查找?<y/n>:");fflush(stdi n);scan f("%c",&ch);if(ch=
24、'y') system("cls"); return(1);elsereturn 0;void chazhao3(linklist &l) 按房号从小到大查找(采用二分查找)if(l.le ngth=O) pa ndua n3();此函数功能为:返回主界面elseintlow=0,high=l.le ngth,mid,flag=O;/flag 作为标 志符,为1则表示查找成功,否则没有所要 查找的学生int m;char ch;prin tf("n");pri ntf("n");printf("按房号
25、查找-> 请输入要查找的房号:");scan f("%d",&m);prin tf("n"); while(low<=high) mid=(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)prin t2(l,mid);if(pa ndua n1(ch)/ 调用判断函数1chazhao3(l);elsesystem("cls"); me
26、n u();elseif(pa ndua n2(ch)/ 调用判断函数2chazhao3(l); elsesystem("cls"); men u();void chazhao2(linklist &l) 按学号从小到大 查找(采用二分查找)if(l.len gth=0) pan dua n3();elseint low=0,high=l.le ngth,mid,flag=O; int n;char ch;prin tf("n");pri ntf("n");printf("按学号查找-> 请输入要 查找的学号:
27、");scan f("%d",&n); prin tf("n"); while(low<=high)mid=(low+high)/2;if(n=l.elemmid. num) flag=1;break;else if(n >l.elemmid. num) low=mid+1;elsehigh=mid-1;if(flag=1)prin t2(l,mid);if(pan dua n1(ch)chazhao2(l);else system("cls"); menu(); elseif(pa ndua n2(ch
28、)chazhao2(l);elsesystem("cls");menu();void chazhao1(linklist &l) 按姓名从小到大查找(采用二分查找)if(l.len gth=0) pan dua n3();elseint low=0,high=l.le ngth,mid,flag=O; prin tf("n");pri ntf("n");printf("按姓名查找-> 请输入要 查找的姓名:");char a15,ch;scan f("%s",a); prin tf
29、("n"); while(low<=high) mid=(low+high)/2;if(strcmp(a,l.elemmid. name)=0)flag=1;break; else if(strcmp(a,l.elemmid. name)>0) low=mid+1;elsehigh=mid-1; if(flag=1)prin t2(l,mid); / 打印查找 到的学生的信息if(pa ndua n1(ch) chazhao1(l); else system("cls"); men u();elseif(pa ndua n2(ch) chaz
30、hao1(l);else system("cls"); men u();void insert(linklist &l)按学号从小到大插入 该学生int i,j,k;char ch;prin tf("n");printf("插入的学生信息为:n"); printf("姓名:");fflush(stdi n);清空输入缓冲区,得到 正确的输入数据gets(stud. name); printf("学号:"); sca nf("%d", &stud. nu m);
31、 printf("房号:");sca nf("%d", &stud.room);if(l.le ngth=O)strcpy(l.eleml .len gth. name,stud. name);l.eleml .len gth. num=stud. num;l.eleml.le ngth.room=stud.room;for(i=0;i<l.le ngth;i+)if(stud. nu m<l.elemi. num)k=i;for(j=l.le ngth;j>k;j_)l.elemj=l.elemj-1;strcpy(l.ele
32、mk. name,stud. name); l.elemk. num=stud. num; l.elemk.room=stud.room; break;elsestrcpy(l.eleml .len gth. name,stud .n ame); l.eleml .len gth. num=stud .num;l.eleml.le ngth.room=stud.room; fflush(stdi n);prin tf("n");printf(”是否继续删除?<y/n>:"); scan f("%c", &ch);system
33、("cls"); if(ch='y') Delete(l); else system("cls");void ma in ()/ 主函数lin klist l;/定义线性表 Iin it(l);/调用初始化函数char ch;system("color a");prin tf("n");printf(" * 欢迎进入宿舍管理查询系统if(k>=0)l.le ngth-;break;l.len gth+; fflush(stdi n); prin tf("n");p
34、rintf("是否继续插入?<y/n>:"); scan f("%c",&ch);if(ch='y') in sert(l);else system("cls"); void Delete(linklist &l)按学号删除该学生 int i,j,k=-1;char ch;prin tf("n");pri ntf("n");printf("请输入要删除学生的学 号:”);scan f("%d", &stud. nu
35、 m); for(i=0;i<l.le ngth;i+) if(stud. num=l.elemi. num) printf("该学生的信息 为:n");pri ntf("n");prin tf("%-15s %-3d %7dn",l.elemi. na me,l.elemi. nu m,l.elemi.room);k=i;for(j=k;j<l.le ngth_1;j+)l.elemj=l.elemj+1;prin tf("n"); break;if(i>=l.length) printf(&q
36、uot;该学生不存 在 n");*n")prin tf("n");printf("请按任意键开始操作:”); sca nf("%c",&ch);system("cls");/将屏幕先前显示的内容 清理掉create(l);/调用线性表创建函数system("cls");t=1;men u();/调用主菜单函数while(f!=0)system("cls");switch(f)case 1: sort1(l);/ 调用按姓名排序函数prin tf("
37、n");if(l.le ngth=O)printf("已无学生记录 n");prin tf("n");disp(); menu();elseprintf("按姓名排序:n"); prin t1(l);disp(); /调用返回主界面men u();case 2: sort2(l);/调用按学号排序函数prin tf("n");if(l.le ngth=O)printf(”已无学生记 录 n");prin tf("n"); disp(); men u();elseprintf(
38、"按学号排序:n"); prin t1(l);disp();menu();break;case 3: sort3(l);/调用按房号排序函数prin tf("n");if(l.le ngth=O)printf("已无学生记录 n");prin tf("n");disp(); menu(); else printf("按房号排序:n"); prin t1(l); disp();menu();break;case 4:sort1(l);/ 先调用按姓名排序函数进行排序chazhao1(l);再调用按
39、姓名查找函数进行(二分)查找break;case 5: sort2(l);/ 先调用按学号排序函数进行排序chazhao2(l);/ 再调用按学号查找函数进行(二分)查找break;case 6: sort3(l);/ 先调用按房号排序函数进行排序chazhao3(l);/再调用按房号查找函数进行(二分)查找break;case 7: sort2(l);/ 调用插入函数in sert(l); system("cls");printf("显示插入后的学生信 息:n");pri nt1(l);disp();menu(); break;case 8: Dele
40、te(l); / 调用删除 函数除完n");息:n");if(l.le ngth=O)prin tf("n");printf("学生记录已被删prin tf("n");disp();menu();elseprintf(”显示删除后的学生信prin t1(l); disp(); menu();break;4调试分析4.1使用方法首先,运行程序进入“欢迎进入宿舍管理查询系统”界面,然后进入线性表 创建界面中,输入学生的信息,创建好学生信息以后单击“n”键则进入操作界面(主界面),然后可按键进行操作。单击数字键“ 2”,则为按学号
41、排序单击数字键“ 4”,则为按姓名查找单击数字键“ 6”,则为按学号查找单击数字键“ 8”,则为按学号删除退出操作;单击数字键“ 1”,则为按姓名排序单击数字键“ 3”,则为按房号排序单击数字键“ 5”,则为按学号查找单击数字键“ 7”,则为按学号插入 系统中有如下关键词:提示:当输入的数字键为0时, 请输入数字键(18为操作键); 请按任意键进入主界面。4.2测试数据:421开始录入的数据:房间号房间号(按学号)114(按房间号)姓名学号田浩然 200910803050105朱栖才 200910803079108丁强 2009108030081044.2.2插入的数据:姓名学号殷林 2009
42、108030651144.2.3查找的数据:丁强(按姓名)2009108030504.2.4删除的数据:200910803079 (按学号)4.3测试输出结果(以运行结果图表示)431欢迎界面:曲 C: DocuBents and SettinEsAd»inist rator面'课程谡计'宿舍管理亘询垂统-eme貝()(貝貝()(貝貝()( yZim井人宿舍管理查询系统貝貝員良貝貝員良貝貝員良貝貝貝良貝貝貝良貝貝貝貝貝猜按任意键开始操作:432按任意键进入线性表的创建界面:433输入数据,开始创建:1个学生的信息 名:田浩然t=F: 200910803 050n:10
43、5展否继续输入?y/n:侣土it左半Docu>ente and SettingsAd>inistrato iA桌面、课程设计l宿舍管理查询系统.ezei赣W1输输主冃主冃圭冃壬冃 I'rllvll8r 1ll>1434请按键选择操作:二已列* C: Docu>ents and SettingsAd>inistrator桌面'课程设计'宿舍管理查询系统.昶耳TAjJTTApp 曹if 40" T, .二-,«E1_D ” rh*i TI 1 l i I I li Ij '' h I I iPR J入十、爪1
44、按姓名排序3按房号排序5捺学号查找?按学号插入2技学号排序4按姓名查找E按房号查找8按学号删除S 0 JU-退出操作435按姓名排序:-952&59904 104 -952659B62 105 -952659833 108学号.6按学号排序:_ xIwfi时入主極437按房号排序:438插入后显示:439按姓名查找:4.3.10按学号查找:4311按房号查找:C:D«cu>ants and Set tings Adsinif t r at o r 面 g程设计 l 宿舍营理查询系 %, sxe 日回”房号查找-请输入墓查找的房号灯“ b找成功该嘗生信息为: 梓名承寻 房号股林-952&59847 114展否继续查找?<y/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乐山师范学院《人类与医学遗传学实验》2023-2024学年第一学期期末试卷
- 江汉大学《工程经济与管理》2023-2024学年第一学期期末试卷
- 华北电力大学《航空材料双语》2023-2024学年第一学期期末试卷
- 湖南环境生物职业技术学院《碳纤维材料》2023-2024学年第一学期期末试卷
- 湖北财税职业学院《应用随机过程》2023-2024学年第一学期期末试卷
- 自贡职业技术学院《化工原理(2)》2023-2024学年第一学期期末试卷
- 周口师范学院《行政伦理学》2023-2024学年第一学期期末试卷
- 浙江师范大学行知学院《口译实训》2023-2024学年第一学期期末试卷
- 郑州卫生健康职业学院《数控车床实训》2023-2024学年第一学期期末试卷
- 玉溪职业技术学院《云南少数民族题材电影赏析》2023-2024学年第一学期期末试卷
- 牙科门诊病历
- 2023年小学科学教研组教研工作总结(5篇)
- 三年级上册递等式计算练习300题及答案
- 政治画像品德操守自我评价3篇
- 奶茶督导述职报告
- 山东莱阳核电项目一期工程水土保持方案
- 白熊效应(修订版)
- 视频监控维保项目投标方案(技术标)
- 社会组织能力建设培训
- 立项报告盖章要求
- 被执行人给法院执行局写申请范本
评论
0/150
提交评论