宿舍管理系统

上传人:仙*** 文档编号:45540502 上传时间:2021-12-07 格式:DOC 页数:29 大小:666.52KB
返回 下载 相关 举报
宿舍管理系统_第1页
第1页 / 共29页
宿舍管理系统_第2页
第2页 / 共29页
宿舍管理系统_第3页
第3页 / 共29页
点击查看更多>>
资源描述
HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告 课设题目: 宿舍管理系统 系 部: 电气与信息工程学院 专 业: 电子信息科学与技术(车联网工程) 姓 名: 李鑫 完成日期: 2014年6月25日2014年7月5日 目 录C语言程序设计0课程设计报告01.课程设计目的22.需求分析22.1要求22.2任务描述32.3运行环境32.4开发工具33.总体设计33.1系统模块设计34.详细设计44.1数据结构设计44.2模块接口设计54.3 以下是几个主要模块的流程图:65.运行结果125.1欢迎界面及文件信息导入:125.2主菜单界面:125.3 新建学生住宿信息:135.4查询指定学号的学生住宿信息:145.5修改指定宿舍号及床位号的学生住宿信息155.6删除指定宿舍号及床位号的学生住宿信息:155.7显示指定宿舍号的学生住宿信息:165.8统计空床位数:165.9保存学生住宿信息175.10退出界面176.程序前后文本187.编程体会188.程序源代码189.参考文献28 1.课程设计目的1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2) 通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。3) 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。5) 通过课程设计,加强了自己的程序分析能力。2.需求分析2.1要求1) 遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。3) 学会利用数组、结构体、链表进行相关信息表示。4) 功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述5) 各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。6) 所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。7) 界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。8) 程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。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(),显示欢迎及制作信息。构造函数 void loadRec(), 从磁盘文件导入住宿信息到内存。2) 主菜单界面:构造函数int menu_select(),实现系统主菜单的显示。3) 住宿信息新建:构造函数void createRec(),新建或录入学生住宿信息。4) 住宿信息查询:构造函数void searchRec()查询指定学号的学生住宿信息。5) 住宿信息修改:构造函数void modifyRec()修改指定宿舍号及床位号的学生住宿信息。6) 住宿信息删除:构造函数void deleteRec()实现对指定宿舍号及床位号的学生住宿信息记录的删除。并通过函数free(),释放内存空间。7) 住宿信息浏览:构造函数void listRec(),实现对指定宿舍住宿信息浏览界面的显示。8) 住宿信息统计:构造函数void countRec(),实现对床位信息中空床位数的统计。9) 住宿信息保存:构造函数void writeInfo(),保存学生住宿信息。10) 退出界面:构造函数void exit0()退出程序。系统功能模块图进入主界面 信息添加模块 信息查询模块信息修改模块信息修改模块信息显示模块信息保存模块文件读入住宿信息空床位统计模块系统退出模块4.详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注姓名p1-name 字符串20学号p1-id 字符串20班级p1-classs字符串10入住时间p1-intake.yearp1-intake.monthp1-intake.day整形床位信息p1-bed.dorm,p1-bed.bedidp1-bed.k字符型字符型整形105根据系统要求,系统中需要保存的类别信息,其结构如下:类别代号char name20char id20char classs10DATE intake类别名称姓名学号班级入住时间类别代号INFO bed类别名称住宿情况基本信息结构体Typedef structint year;int month;int day;DATE;Typedef structchar dorm10;char bedid5;int k;INFO;struct studentchar name20;char id20;char classs20;DATE intake;INFO bed;struct student *next;4.2模块接口设计1) 所有函数模块声明如下:void createRec();/*新建住宿信息记录*/void loadRec();/*从磁盘文件导入住宿信息到内存void searchRec();/*查询住宿记录*/void modifyRec();/*修改住宿记录*/void countRec(); /*统计空床位记录*/void deleteRec();/*删除住宿记录*/void listRec();/*显示住宿信息*/void writeInfo();/*保存住宿记录*/void exit0();/*退出*/int menu_select();/*主菜单*/2) 定义一个全局变量以及结构体指针:struct student *head=NULL,*p1,*p2,*p3;定义结构体指针head 为头指针,p1 为输入数据缓存空间指针,p2 为尾指针,p3为中间指针intwriteinfo_flag=0; 保存住宿信息标志的全局变量标志。3) 主要模块的实现系统以主函数int main()为入口调用void loadRec()函数导入住宿信息,然后调用int menu_select();函数,进入主菜单界面。系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。4.3 以下是几个主要模块的流程图:1) 主菜单函数:开始显示主菜单界面接受用户选择是否合法 否 是否为零 是 否 是匹配相应数值退出系统 调用对应函数图1 主函数流程图2) 查询指定学号学生住宿信息函数:输入选项判断是否合法否是显示该学生住宿信息按任意键返回主菜单 图2显示指定宿舍学生住宿信息结构框图3) 新建或添加学生住宿信息函数:输入选项否判断是否合法是输入建立信息条数否判断是否合法是输入学生住宿信息按意键返回主菜单图3 新建若干组学生住宿信息结构框图4) 修改(删除)指定宿舍号及床位号的学生住宿信息函数:对相应学生住宿信息进行修改(删除)按任意键返回主菜单输入选项否是否正确是否是否有对应是宿舍号床位号图4修改(删除)指定宿舍号及床位号的学生住宿信息结构框图5) 显示指定宿舍号学生住宿信息函数:显示相应宿舍所有学生住宿信息按任意键返回主菜单输入选项否是否正确是否是否有对应是输入宿舍号图5 显示指定宿舍号学生住宿信息函数结构框图 6) 保存学生住宿信息函数:0判断全局变量writenflag的值1否判断数据库中是否有住宿信息是按任意键返回主菜单将学生住宿信息保存到文件信息保存完毕关闭文件判断文件路径是否正确是否数据库中是否有图书信息数据库中学生住宿信息无法保存图6保存学生住宿信息函数结构框图5.运行结果5.1欢迎界面及文件信息导入:图1 欢迎界面及文件信息导入5.2主菜单界面:图2主菜单界面5.3 新建学生住宿信息:图3 新建学生住宿信息5.4查询指定学号的学生住宿信息: 图4查询指定学号的学生住宿信息:5.5修改指定宿舍号及床位号的学生住宿信息图5 修改指定宿舍号及床位号的学生住宿信息5.6删除指定宿舍号及床位号的学生住宿信息:图6 删除指定宿舍号及床位号的学生住宿信息5.7显示指定宿舍号的学生住宿信息: 图7 显示指定宿舍号的学生住宿信息5.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 12 保存后的文本路径: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-8-6 128 1 07.编程体会 本次课程设计总体感觉要较之去年的简单了不少。但由于C语言初学较差,基础薄弱,感觉还是存在较大的问题。所以这次的编程实现主要是对教师模板进行的在修改,使得其满足课设中所提众多要求。编程中大体要满足的一般都是新建、修改、删除、保存、查询、文件读入等功能,其中的删除和文件读入较为复杂。个人认为这次课设的一个难点是要求运用链表实现编程。不得不说链表的运用会提高程序的清晰度和可读性。但由于链表理解起来较难,这会在应用上存在极大的难度。课设中信息较为复杂,如床位信息、入住时间,都是作为一个信息存在,但本省包含多个信息量。所以在定义结构体时,对结构体进行了另命名和结构体嵌套。在创建、删除等链表等功能的实现中,经常需要找到当前结点之前的结点,也就是前驱结点。随着程序的进展,也需要更新前驱结点指针。在真正的程序应用中,总是会有许多出错的地方,比如各函数对输入数据格式的限制。文件读入时,文件不存在,文件读取错误等。还有指针应用中,申请空间及对废弃指针存储内容的释放等。细节决定成败,程序编写中一个微小的错误就会引发一系列的错误,造成修改难度大,程序无法运行的诸多麻烦。所以在程序编写之初,便应保持良好的心态,认真对待,有条不紊。通过这次课程设计,我可以说是获益匪浅,不仅使得我回顾了大量的C语言知识,巩固了已知,在此基础之上,我还了解理解了虚度哦故去不是很理解或根本不知道的东西。而且从另一侧面锻炼了我的心性,让我在对待事物上可以统筹,又可以对每一个部分进行充分的认识。以及耐心,认真,反复检查,精益求精等良好的品行等。总之,本次课设于我意义重大,受益良多。8.程序源代码/* 已知一个宿舍的信息为:床位信息(宿舍号、床位号、是否入住)、学号、姓名、班级、入住时间,从键盘输入 n 个宿舍的信息,并将其保存在 () 文件中。 */*所使用的有头文件*/#include#include#include#include #include#define LEN sizeof(struct student)/*结构体定义*/typedef structint year; /*年*/int month; /*月*/int day; /*日*/DATE;typedef struct char dorm10; /*宿舍号*/char bedid5; /*床位号*/int k; /*入住情况k=(0/1)*/INFO;struct student char name20; /*姓名*/ char id20; /*学号*/char classs10; /*班级*/ DATE intake; /*入住时间*/INFO bed; /*床位信息*/ struct student *next; ;/*函数声明*/void createRec();/*新建住宿信息记录*/void loadRec();/*从磁盘文件导入住宿信息到内存*/void searchRec();/*查询住宿记录*/void modifyRec();/*修改住宿记录*/void countRec();/*统计空床位记录*/void deleteRec();/*删除住宿记录*/void listRec();/*显示住宿信息*/void writeInfo();/*保存住宿记录*/void exit0();/*退出*/int menu_select();/*主菜单*/*链表操作所用结构体指针*/struct student *head=NULL,*p1,*p2,*p3;/*定义结构体指针head 为头指针p1 为输入数据缓存空间指针p2 为尾指针*/*宿舍记录保存标志全局变量*/intwriteinfo_flag=0;/*主函数*/int main() printf(ntt n); printf(ntt n); printf(ntt C语言课程设计-宿舍管理 nn); printf(ntt n); printf(ntt n); printf(ntt 指导老师:张吴波 n); printf(ntt 制作人:李鑫 班级:T1223-11 n); printf(ntt QQ:1726160202 n); printf(ntt 电话:18772966023 n); printf(nntt*n); getchar(); system(cls); loadRec();for(;)switch(menu_select()case 1: system(cls); createRec();break;case 2: system(cls); searchRec();break;case 3: system(cls); modifyRec();break; case 4: system(cls); deleteRec();break;case 5: system(cls); listRec(); break;case 6: system(cls); countRec(); break;case 7: system(cls); writeInfo();break;case 0: system(cls); exit0();return 0;default :getchar(); system(cls);printf(n 选择错误,请正确输入你的选择(07),:n);printf(n 按任意键返回.n);getchar();system(cls);/*清屏*/ return 0;/*主菜单*/int menu_select()int c; printf(ntt n); printf(ntt 欢迎使用简易宿舍管理系统 n);printf(ntt*nn);printf(tt* 1.新建学生住宿信息n);printf(tt* 2.查询指定学号的学生住宿信息n);printf(tt* 3.修改指定宿舍号及床位号的学生住宿信息n);printf(tt* 4.删除指定宿舍号及床位号的学生住宿信息n);printf(tt* 5.显示指定宿舍号学生住宿信息n);printf(tt* 6.统计空床位数n);printf(tt* 7.保存学生住宿信息n);printf(tt* 0.退出(任何情况下按Ctrl+C 退出程序)nn);printf(tt*n);printf(n 请输入相应选择(07):n);scanf(%d,&c);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 =NULL;while(!feof(fp)n+;fscanf(fp,%s%s%s %d-%d-%d %s%s%d, p1-name,p1-id,p1-classs,&p1-intake.year,&p1-intake.month,&p1-intake.day,p1-bed.dorm,p1-bed.bedid,&p1-bed.k); if(p1-id0id09) n-;break;p2=(struct student *)malloc(LEN);/*开辟一个新单元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(ntt %d项信息输入完毕,按任意键返回.n,n);getchar();system(cls);/*清屏*/writeinfo_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-next;getchar();printf(n 住宿信息数据库已存在,新建住宿信息将接续在原信息库的后面,按任意键继续.:n);getchar();system(cls);/*清屏*/p3-next=p1=(struct student *)malloc(LEN);/*开辟一个新单元*/ else head=p1=(struct student *)malloc(LEN);/*开辟一个新单元*/p1-next =NULL;printf(nn 请输入希望建立的住宿基本信息条数n(n1&n10):n);doscanf(%d,&n);if(n10) printf(nn输入范围有误,请重新输入希望建立的宿舍基本信息条数n(n1&n10):n);while(n10);/*开始建立n条学生住宿基本信息记录*/printf(nn 请输入学生的住宿信息如:n姓名 学号 班级 入住时间 宿舍号 床位号 入住情况(0/1)n);for(i=0;iname,p1-id,p1-classs,&p1-intake.year,&p1-intake.month,&p1-intake.day,p1-bed.dorm,p1-bed.bedid,&p1-bed.k); p2=(struct student *)malloc(LEN);/*开辟一个新单元*/p1-next =p2;p3=p1;p1=p2;p1-next =NULL;free(p2);p3-next=NULL;printf(n %d项信息输入完毕,按任意键返回.n,n);getchar();system(cls);/*清屏*/writeinfo_flag=1;/*清除保存记录标志*/*查询指定学号的学生住宿信息记录*/void searchRec()char id20;p1=head;if(p1=NULL) printf(nn住宿信息数据库为空! n); printf(n 按任意键返回.n);getch();system(cls);/*清屏*/return ;printf(nn 请输入学生学号以便查证:n);scanf(%s,id);while(p1!=NULL)if(strcmp(p1-id,id )=0)printf(t该学生住宿信息如下:nt 姓名:);printf(%sn,p1-name );printf(t 学号:);printf(%sn,p1-id );printf(t 班级:);printf(%sn,p1-classs );printf(t 入住时间:);printf(%d-%d-%dn,p1-intake.year,p1-intake.month,p1-intake.day); printf(t 床位信息:);printf(%s %s %dn,p1-bed.dorm,p1-bed.bedid,p1-bed.k ); break;else p1=p1-next ;if(p1=NULL) printf(nn找不到该学生的相应住宿信息!n); printf(n 按任意键返回.n);getch();system(cls);/*清屏*/*修改指定宿舍号及床位号的学生住宿记录*/ void modifyRec()char dorm10,bedid5;if(head=NULL) getchar();printf(n学生住宿信息数据库为空,不能修改,按任意键将返回:n);getchar();system(cls);/*清屏*/return;p1=head;printf(nn请输入要修改记录的宿舍号及床位号:n);scanf(%s%s,dorm,bedid);while(strcmp(dorm,p1-bed.dorm )!=NULL&strcmp(bedid,p1-bed.bedid )!=NULL&p1-next!=NULL)p1=p1-next ;if(strcmp(dorm,p1-bed.dorm )=NULL&strcmp(bedid,p1-bed.bedid )=NULL)strcpy(p1-bed.dorm,dorm); strcpy(p1-bed.bedid,bedid); printf(nn 请输入该学生的姓名:);scanf(%s,p1-name);printf(nn 请输入该学生的学号:);scanf(%s,p1-id);printf(nn 请输入该学生的班级:);scanf(%s,p1-classs);printf(nn 请输入该学生的入住时间:); scanf(%d-%d-%d,&p1-intake.year,&p1-intake.month,&p1-intake.day);printf(nn 请输入该学生的床位信息:);scanf(%s%s%d,p1-bed.dorm,p1-bed.bedid,&p1-bed.k );printf(n该项信息修改完毕,);else printf(nn找不到相应信息!);getchar();printf(按任意键将返回:n);getchar();system(cls);/*清屏*/writeinfo_flag=1;/*清除保存记录标志*/return;/*删除指定宿舍号及床位号的学生住宿记录*/void deleteRec()char dorm10,bedid5;if(head=NULL) getchar();printf(n 学生住宿信息数据库为空,不能删除,按任意键将返回:n);getchar();system(cls);/*清屏*/return;p1=head;printf(nn请输入要删除记录的宿舍号及床位号:n);scanf(%s%s,dorm,bedid);while(strcmp(dorm,p1-bed.dorm )!=NULL&strcmp(bedid,p1-bed.bedid )!=NULL&p1-next!=NULL)p2=p1;p1=p1-next ;if(strcmp(dorm,p1-bed.dorm )=NULL&strcmp(bedid,p1-bed.bedid )=NULL)if(head-next=NULL)free(head);head=NULL;else if(head=p1)head=p1-next;free(p1);elsep2-next=p1-next;free(p1);printf(n删除完毕;);else printf(nn找不到相应信息!);getchar();printf(按任意键返回:n);getchar();system(cls);/*清屏*/writeinfo_flag=1;/*清除保存记录标志*/return;/*显示指定宿舍号学生住宿信息*/void listRec() char dorm10;if(head=NULL) printf(n数据库中没有该宿舍信息,按任意键返回。n);getch();system(cls);return;printf(nn 请输入要显示的宿舍号以便查证:n);scanf(%s,dorm);p1=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-intake.year,p1-intake.month,p1-intake.day,p1-bed.dorm,p1-bed.bedid,p1-bed.k); p1=p1-next;elsep1=p1-next;printf(n按任意键返回!.n);getch();system(cls); /*清屏*/*保存学生住宿记录*/void writeInfo()FILE *fp;/*定义文件指针*/if(head=NULL) printf(n数据库中没有学生住宿信息,按任意键返回。n);getch();system(cls);return;if(writeinfo_flag=0) printf(n数据库中学生住宿信息已保存过,按任意键返回。n);getch();system(cls);return;if(fp=fopen(1.txt,w)=NULL)/*打开文件*/printf(n数据库中学生住宿信息无法保存,按任意键返回。n);getch();system(cls);return;p1=head;while(p1!=NULL)fprintf(fp,%s %s %s %d-%d-%d %s %s %d, p1-name,p1-id,p1-classs,p1-intake.year,p1-intake.month,p1-intake.day,p1-bed.dorm,p1-bed.bedid,p1-bed.k); p1=p1-next;fclose(fp);printf(n数据库中学生住宿信息保存完毕,按任意键返回。n);getch();system(cls);writeinfo_flag=0;/*设置保存记录标志*/return;/*统计空床位数*/void countRec()int i=0;if(head=NULL) printf(n数据库中没有学生住宿信息,按任意键返回。n);getch();system(cls);return; p1=head;while(p1!=NULL)if(p1-bed.k=0)i+;p1=p1-next;printf(nnt空床位数为:%dn,i); printf(n按任意键返回!.n);getch();system(cls);/*退出*/void exit0()if(writeinfo_flag=1)/*修改过记录时,先保存,再退出*/writeInfo();p1=head;while( p1!=NULL)p2=p1-next;free(p1);p1=p2; system(cls); printf(nnntt * 再见!*n); printf(ntt * 欢迎再次使用!*n); printf(ntt *n); getch(); 9.参考文献1 廖湖声C程序设计案例教程人民邮电出版社,2010.92 何钦铭C语言程序设计高等教育出版社,2009.53 谭浩强C程序设计(第2、3、4版)清华大学出版社,2000.1.4 C语言程序设计教程,杨路明著,北京邮电大学出版社.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!