宿舍管理系统_第1页
宿舍管理系统_第2页
宿舍管理系统_第3页
宿舍管理系统_第4页
宿舍管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计 课程设计报告 课设题目:宿舍管理系统 系 部:电气与信息工程学院 专业:电子信息科学与技术(车联网工程) 姓名:李鑫 完成日期:2014 年6月25日一2014年7月5日 C语言程序设计 0 课程设计报告 0 1课程设计目的1 2需求分析2 2.1要求2 2.2任务描述2 2.3运行环境3 2.4开发工具3 3. 总体设计3 3.1系统模块设计3 4. 详细设计4 4.1数据结构设计 4 4.2模块接口设计5 4.3以下是几个主要模块的流程图: 6 5. 运行结果12 5.1欢迎界面及文件信息导

2、入: 12 5.2主菜单界面: 12 5.3新建学生住宿信息: 13 5.4查询指定学号的学生住宿信息: 14 5.5修改指定宿舍号及床位号的学生住宿信息 15 5.6删除指定宿舍号及床位号的学生住宿信息: 15 5.7显示指定宿舍号的学生住宿信息: 16 5.8统计空床位数:16 5.9保存学生住宿信息 17 5.10退出界面17 6. 程序前后文本18 7. 编程体会18 8. 程序源代码19 9. 参考文献28 1. 课程设计目的 1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析, 并设计合理的模块化结构。 2)通过课程设计,进一步掌握 C语言中重要的数据结构。掌握

3、并熟练运用指针、 链表、结构体、文件等数据结构。 3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。 4)通过课程设计,培养 C语言知识运用和自学能力,真正的把课堂上获得的知识 运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。 5)通过课程设计,加强了自己的程序分析能力。 2. 需求分析 2.1要求 1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问 题的能力。 2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据 结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。 3)学会利用数组、结构体、链

4、表进行相关信息表示。 4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述 5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功 能、出口等关系正确。 6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。 7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并 对输入信息有较完善的值域分析。 8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。 9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。 10)掌握编写、调试和测试 C语言程序的基本技巧,充分理解结构化程序设计的基 本方法。

5、11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。 2.2任务描述 现学校要管理宿舍入住的学生,请设计一宿舍管理程序,以方便学校宿舍管理 员对学生进行管理,该程序应该具有以下功能: 1)能从键盘录入床位信息。 2) 指定学号,显示该学生的住宿的信息 3) 指定宿舍号,显示住宿信息。 4) 给定宿舍号、床位号,修改住宿信息 5) 给定宿舍号、床位号,删除住宿信息 2.3运行环境 1) WindowsXP/7 系统 2) VC+6.0编译环境 2.4开发工具 C语言 3. 总体设计 3.1系统模块设计 1) 欢迎及信息导入界面:构造函数int main(),显示欢迎及制作

6、信息。构造函 数void loadRec(),从磁盘文件导入住宿信息到内存。 2) 主菜单界面: 3) 住宿信息新建 构造函数 int menu_select(), :构造函数 实现系统主菜单的显示。 4) 住宿信息查询 :构造函数 5) 住宿信息修改 :构造函数 void createRec() void searchRec() void modifyRec() ,新建或录入学生住宿信息。 查询指定学号的学生住宿信息。 修改指定宿舍号及床位号的学生 住宿信息。 6) 住宿信息删除 :构造函数 void deleteRec() 生住宿信息记录的删除。并通过函数free() 实现对指定宿舍号及床

7、位号的学 ,释放内存空间。 7) 住宿信息浏览:构造函数void listRec(),实现对指定宿舍住宿信息浏览界 面的显示。 8) 住宿信息统计:构造函数void countRec(),实现对床位信息中空床位数的 统计。 9) 住宿信息保存:构造函数void writeInfo(),保存学生住宿信息。 10)退出界面:构造函数void exit0()退出程序 系统功能模块图 4. 详细设计 4.1数据结构设计 根据系统要求,系统中需要保存的数据信息,其结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 姓名 p1- n ame 字符串 20 学号 p1-id 字符串 20 班级

8、 p1-classs 字符串 10 入住时间 p1- in take.year p1-i ntake.m on th p1- in take.day 整形 床位信息 p1-bed.dorm, p1-bed.bedid p1-bed.k 字符型 字符型 整形 10 5 根据系统要求,系统中需要保存的类别信息,其结构如下: 类别代号 char n ame20 char id20 char classs10 DATE in take 类别名称 姓名 学号 :班级 入住时间 类别代号 INFO bed 类别名称 住宿情况 基本信息结构体 Typedef struct int year; int mon

9、 th; int day; DATE; Typedef struct char dorm10; char bedid5; int k; INFO; struct stude nt char n ame20; char id20; char classs20; DATE in take; INFO bed; struct stude nt *n ext; ; 4.2模块接口设计 1) 所有函数模块声明如下: /*新建住宿信息记录*/ /*从磁盘文件导入住宿信息到内存 /*查询住宿记录*/ /*修改住宿记录*/ /*统计空床位记录*/ /*统计空床位记录*/ void createRec(); v

10、oid loadRec(); void searchRec(); void modifyRec(); void coun tRec(); void deleteRec(); void listRec(); void writel nfo(); void exit0(); int menu _select(); /*删除住宿记录*/ /*显示住宿信息*/ /*保存住宿记录*/ /*退出*/ /*主菜单*/ 2) 定义一个全局变量以及结构体指针: struct student *head=NULL,*p1,*p2,*p3;定义结构体指针 head 为头指针,p1 为输入数据缓存空间指针,p2为尾指

11、针,p3为中间指针 in twrite in fo_flag=0; 保存住宿信息标志的全局变量标志 3) 主要模块的实现 系统以主函数int main()为入口 调用void loadRec()函数导入住宿信息,然后调用int menu_select();函数,进入主菜 单界面。系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。 4.3以下是几个主要模块的流程图: 1) 主菜单函数: 图1 主函数流程图 2)查询指定学号学生住宿信息函数: 输入选项 显示该学生住宿信息 按任意键返回主菜单 图2显示指定宿舍学生住宿信息结构框图 3)新建或添加学生住宿信息函数: 图3新建若干组

12、学生住宿信息结构框图 4)修改(删除)指定宿舍号及床位号的学生住宿信息函数: 图4修改(删除)指定宿舍号及床位号的学生住宿信息结构框图 5)显示指定宿舍号学生住宿信息函数: 数据库中学 生住宿信息 无法保存 图6保存学生住宿信息函数结构框图 5.运行结果 5.1欢迎界面及文件信息导入: 图1欢迎界面及文件信息导入 5.2主菜单界面: -C:yU5ersVipDwkto 叭诸 司Debu g惦吿言富.eie oocuuou *欢迎使用简鬲宿舍管理泵统 丄 245670 ?- -CJ-CA丄-一 陵 息冲英JFt ills 号号 dh(=17 宿旦呈舍諏 建询改除一小计一茁 暫修删显结集 s w_

13、d 位庄 自亠自亠 =M_R 蔔ml trl*C退出程序、 诂坤人佢应先揮0刃; 图2主菜单界面 5.3新建学生住宿信息: C:Uersh pDekto pCWDe bug VW舍套理亡灼 性宿信息数据库已存机新建住宿信息将揍绫在原信息库的后面,捋柱意键继失 图3新建学生住宿信息 5.4查询指定学号的学生住宿信息: 图4查询指定学号的学生住宿信息: 5.5修改指定宿舍号及床位号的学生住宿信息 图5修改指定宿舍号及床位号的学生住宿信息 5.6删除指定宿舍号及床位号的学生住宿信息: 图6删除指定宿舍号及床位号的学生住宿信息 5.7显示指定宿舍号的学生住宿信息: 图7显示指定宿舍号的学生住宿信息 5

14、.8统计空床位数: 图8统计空床位数 5.9保存学生住宿信息 图9保存学生住宿信息 5.10退出界面 图10退出界面 6. 程序前后文本 1导入的文本 路径:1.txt 张强 1 11 2012-08-06 125 1 1 王阳明 2 11 2012-08-06 125 2 0 陈超 3 11 2012-08-06 125 3 0 李可 4 11 2012-08-06 128 4 1 2保存后的文本 路径:1.txt 王阳明 2 11 2012-8-6 125 2 0 陈超 3 11 2012-8-6 125 3 0 李可 4 11 2012-8-6 128 4 1 陈东 5 11 2012-

15、8-6 128 1 0 7. 编程体会 本次课程设计总体感觉要较之去年的简单了不少。但由于C语言初学较差, 基础薄弱,感觉还是存在较大的问题。所以这次的编程实现主要是对教师模板进行 的在修改,使得其满足课设中所提众多要求。编程中大体要满足的一般都是新建、 修改、删除、保存、查询、文件读入等功能,其中的删除和文件读入较为复杂。个 人认为这次课设的一个难点是要求运用链表实现编程。不得不说链表的运用会提高 程序的清晰度和可读性。但由于链表理解起来较难,这会在应用上存在极大的难度。 课设中信息较为复杂,如床位信息、入住时间,都是作为一个信息存在,但本省包 含多个信息量。所以在定义结构体时,对结构体进行

16、了另命名和结构体嵌套。在创 建、删除等链表等功能的实现中,经常需要找到当前结点之前的结点,也就是前驱 结点。随着程序的进展,也需要更新前驱结点指针。在真正的程序应用中,总是会 有许多出错的地方,比如各函数对输入数据格式的限制。文件读入时,文件不存在, 文件读取错误等。还有指针应用中,申请空间及对废弃指针存储内容的释放等。细 节决定成败,程序编写中一个微小的错误就会引发一系列的错误, 造成修改难度大, 程序无法运行的诸多麻烦。所以在程序编写之初,便应保持良好的心态,认真对待, 有条不紊。通过这次课程设计,我可以说是获益匪浅,不仅使得我回顾了大量的C 语言知识,巩固了已知,在此基础之上,我还了解理

17、解了虚度哦故去不是很理解或 根本不知道的东西。而且从另一侧面锻炼了我的心性,让我在对待事物上可以统筹, 又可以对每一个部分进行充分的认识。以及耐心,认真,反复检查,精益求精等良 好的品行等。总之,本次课设于我意义重大,受益良多。 8. 程序源代码 /*已知一个宿舍的信息为:床位信息(宿舍号、床位号、是否入住)、学号、姓名、 班级、入住时间,从键盘输入n个宿舍的信息,并 将其保存在()文件中。*/ /*所使用的有头文件*/ #i nclude #i nclude #i nclude #include #in clude #defi ne LEN sizeof(struct stude nt) /

18、*结构体定义*/ typedef struct int year;/* 年 */ int mon th;/* 月*/ int day;/* 日*/ DATE; typedef struct char dorm10; char bedid5; int k; INFO; struct stude nt char n ame20; char id20; char classs10; DATE in take; INFO bed; struct stude nt *n ext; ; /*函数声明*/ void createRec(); void loadRec(); void searchRec();

19、 void modifyRec(); /*宿舍号*/ /*床位号*/ /*入住情况k=( 0/1)*/ /*姓名*/ /*学号*/ /*班级*/ /*入住时间*/ /*床位信息*/ /*新建住宿信息记录*/ /*从磁盘文件导入住宿信息到内存*/ /*查询住宿记录*/ /*修改住宿记录*/ /*统计空床位记录*/ /*删除住宿记录*/ /*显示住宿信息*/ /*保存住宿记录*/ /*退出*/ /*主菜单*/ void coun tRec(); void deleteRec(); void listRec(); void writel nfo(); void exit0(); int menu _

20、select(); /*链表操作所用结构体指针*/ struct student *head=NULL,*p1,*p2,*p3;/* 定义结构体指针 head 为头指针 pl 为输入 数据缓存空间指针p2为尾指针*/ /*宿舍记录保存标志全局变量*/ int write in fo_flag=0; /*主函数*/ int mai n() prin tf(ntt n); prin tf(ntt n); prin tf(ntt C语言课程设计-宿舍管理 nn); prin tf(ntt n); prin tf(ntt n); prin tf(ntt 指导老师:张吴波 n); prin tf(ntt

21、 制作人:李鑫班级:T1223-11 n); prin tf(ntt QQ:1726160202 n); prin tf(ntt 电话n); printf(nntt*n); getchar(); system(cls); loadRec(); for(;) switch(me nu _select() case 1: system(cls); createRec();break; case 2: system(cls); searchRec();break; case 3: system(cls); modifyRec();break; case 4: system(

22、cls); deleteRec();break; case 5: system(cls); listRec(); break; case 6: system(cls); coun tRec(); break; case 7: system(cls); writel nfo();break; case 0: system(cls); exit0();return 0; default : getchar(); system(cls); printf(n选择错误,请正确输入你的选择(07),:n); printf(n按任意键返回 n); getchar(); system(cls);/* 清屏 *

23、/ return 0; /*主菜单*/ int menu _select() int c; printf(nttn); printf(ntt 欢迎使用简易宿舍管理系统 n); prin tf(ntt* * *nn); printf(tt* 1.新建学生住宿信息n); printf(tt* 2.查询指定学号的学生住宿信息n); prin tf(tt* 3修改指定宿舍号及床位号的学生住宿信息n); printf(tt* 4.删除指定宿舍号及床位号的学生住宿信息n); printf(tt* 5.显示指定宿舍号学生住宿信息n); printf(tt* 6.统计空床位数 n); printf(tt* 7

24、.保存学生住宿信息n); printf(tt* 0.退出(任何情况下按 Ctrl+C退出程序)nn); prin tf(tt* * *n); printf(n请输入相应选择(07):n); sca nf(%d, return c; /*从磁盘文件导入学生住宿信息到内存*/ void loadRec() FILE *fp; int n=0; if(fp=fopen(1.txt,r)=NULL)/*打开文件 */ printf(文件不存在或无法打开!n); return; head=p1=(struct student *)malloc(LEN);/* 开辟一个新单元 */ p1- next =N

25、ULL; while(!feof(fp) n+; fscan f(fp,%s%s%s%d-%d-%d%s%s%d, p1- n ame,p1-id,p1-classs, if(p1-id0v0|p1-id09) n-;break; p2=(struct student *)malloc(LEN);/*开辟一个新单元 */ p1- n ext =p2; p3=p1; P仁 p2; p1- next =NULL; free(p2); p3- next=NULL; printf(ntt %d项信息输入完毕,按任意键返回n,n); getchar(); system(cls);/* 清屏 */ wri

26、teinfo_flag=0;/*设置保存记录标志*/ if( fclose(fp) )/* 关闭文件 */ printf( Can not close the file!n); exit(0); /*新建宿舍信息记录*/ void createRec() int n ,i; if(head!=0) p3=head; while( p3- next!=NULL) p3=p3-n ext; getchar(); printf(n住宿信息数据库已存在,新建住宿信息将接续在原信 息库的后面,按任意键继续 :n); getchar(); system(cls);/* 清屏 */ p3-next=p仁(s

27、truct student *)malloc(LEN); /* 开辟一个新 单元*/ elsehead=p1=(struct student *)malloc(LEN);/*开辟一个新单元 */ p1- next =NULL; printf(nn请输入希望建立的住宿基本信息条数n(n1 do sca nf(%d, if(n10) printf(nn输入范围有误,请重新输入希望建立的宿舍基本信 息条数 n(n1 while( n 10); /*开始建立n条学生住宿基本信息记录*/ printf(nn请输入学生的住宿信息如:n姓名 学号 班级 入住时 间 宿舍号 床位号入住情况(0/1) n);

28、for(i=0;i name,p1-id,p1-classs, p2=(struct student *)malloc(LEN);/*开辟一个新单元 */ p1- n ext =p2; p3=p1; P仁 p2; p1- next =NULL; free(p2); p3- next=NULL; printf(n %d项信息输入完毕,按任意键返回 n,n); getchar(); system(cls);/* 清屏 */ writeinfo_flag=1;/*清除保存记录标志*/ /*查询指定学号的学生住宿信息记录*/ void searchRec() char id20; p仁head; if

29、(p1=NULL) printf(nn住宿信息数据库为空!n); printf(n按任意键返回n); getch(); system(cls);/* 清屏 */ return ; printf(nn请输入学生学号以便查证:n); sca nf(%s,id); while(p1!=NULL) if(strcmp(p1-id,id )=0) printf(t该学生住宿信息如下:nt姓名:); printf(%sn,p1-name); printf(t 学号:); prin tf(%sn,p1-id ); printf(t 班级:); prin tf(%sn,p1-classs ); printf(

30、t 入住时间:); prin tf(%d-%d-%dn,p1- in take.year,p1- in take.m on th,p1- in take.day); printf(t 床位信息:); prin tf(%s %s %dn,p1-bed.dorm,p1-bed.bedid,p1-bed.k); break; else p1=p1- n ext ; if(p1=NULL) pri ntf(nn找不到该学生的相应住宿信息!n); printf(n按任意键返回n); getch(); system(cls);/* 清屏 */ /*修改指定宿舍号及床位号的学生住宿记录*/ void mod

31、ifyRec() char dorm10,bedid5; if(head=NULL) getchar(); printf(n学生住宿信息数据库为空,不能修改,按任意键将返回:n); getchar(); system(cls);/* 清屏 */ return; p仁head; printf(nn请输入要修改记录的宿舍号及床位号:n); sca nf(%s%s,dorm,bedid); while(strcmp(dorm,p1-bed.dorm )!=NULL if(strcmp(dorm,p1-bed.dorm )=NULL strcpy(p1-bed.bedid,bedid); printf

32、(nn请输入该学生的姓名:); scan f(%s,p1- n ame); printf(nn请输入该学生的学号:); scan f(%s,p1-id); printf(nn请输入该学生的班级:); scan f(%s,p1-classs); printf(nn请输入该学生的入住时间:); scan f(%d-%d-%d, printf(nn请输入该学生的床位信息:); scan f(%s%s%d,p1-bed.dorm,p1-bed.bedid, printf(n该项信息修改完毕,); else printf(nn找不到相应信息!); getchar(); printf(按任意键将返回:n)

33、; getchar(); system(cls);/* 清屏 */ writeinfo_flag=1;/*清除保存记录标志*/ return; /*删除指定宿舍号及床位号的学生住宿记录*/ void deleteRec() char dorm10,bedid5; if(head=NULL) getchar(); printf(n学生住宿信息数据库为空,不能删除,按任意键将返回:n); getchar(); system(cls);/* 清屏 */ return; p仁head; printf(nn请输入要删除记录的宿舍号及床位号:n); sca nf(%s%s,dorm,bedid); whi

34、le(strcmp(dorm,p1-bed.dorm )!=NULL p1=p1- n ext ; if(strcmp(dorm,p1-bed.dorm )=NULL head=NULL; else if(head=p1) head=p1- n ext; free(p1); elsep2-n ext=p1- n ext; free(p1); printf(n 删除完毕;); else printf(nn找不到相应信息!); getchar(); printf(按任意键返回:n); getchar(); system(cls);/* 清屏 */ writeinfo_flag=1;/*清除保存记录

35、标志*/ return; /*显示指定宿舍号学生住宿信息*/ void listRec() char dorm10; if(head=NULL) printf(n数据库中没有该宿舍信息,按任意键返回。n); getch(); system(cls); return; printf(nn请输入要显示的宿舍号以便查证:n); sca nf(%s,dorm); p仁head; printf(n该宿舍住宿信息如下:n); printf(n姓名t学号t班级t入住时间t宿舍号t床位号t入住情况(0/1) n); while(p1!=NULL) if(strcmp(p1-bed.dorm,dorm)=0) printf(%s t%st%st%d-%d-%dt%st%st%dn,p1- name,p1-id,p1-classs,p1-i ntake.year,p1-i n take.m on th,p1- in take.day,p1-bed.dorm,p1-bed.bedid,p1-bed.k); p1=p1- n ext; else p1=p1- n ext; printf(n按任意键返回!n); getch(); system(cls);/* 清屏 */ /*保存学生住宿记录

温馨提示

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

最新文档

评论

0/150

提交评论