东华理工大学长江学院C语言课程设计报告学院:机械与电子工程系专业:电子信息工程题目:客房管理系统设计班级:1430401姓名:陈芳影学号:201430040115指导教师:胡文龙2015年12月15日1报告目录报告摘要——————————————2题目要求——————————————3需求分析——————————————3总体分析——————————————3详细设计——————————————4主函数部分——————————————4~7各功能模块函数部分—————————7输入模块——————————————7~8统计模块——————————————8~10查询模块——————————————11~13修改模块——————————————13~16公共函数部分—————————————16~19上机操作——————————————19~21总结——————————————222报告摘要此次C语言课程设计我选择的是客房管理系统设计,系统设计采用c语言在microsoftvisualc++6.0下编译而成。客房管理系统包括客户基本信息的录入、统计、查询、修改功能。系统开发由分析、设计、实施、调试和测试等阶段组成,其中信息管理为开发的重点。在程序设计中结构体的调用与文件的读写为编译的重点部分。报告正文一、题目要求客户信息包括身份证号、姓名、性别、年龄、房间号。试设计一客房管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)客户信息录入功能(客户信息用文件保存)(3)客户信息统计功能(4)客户信息查询功能,查询方式(5)客户信息修改功能(可选项)[提示]建立客户信息结构体,结构体成员包括身份证号、姓名、性别、年龄、房间号二、需求分析根据题目要求,要求对客户信息进行输入、输出等操作;在程序中需要浏览客户的信息,应提供显示、统计、查询、修改等操作;另外还应提供键盘式选择菜单实现功能选择。三、总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:3客户信息管理系统数据输入数据统计数据查询数据修改数据删除系统功能模块图四、详细设计1、主函数部分:主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。[流程图]:根据n的值调用各功能模块函数NY输入n,判断n是否是0-5主函数流程图显示各功能选项4main()/**主函数**/{printf(\n\n\n\t\t~~~~~~~~~~~~~~~~酒店管理系统~~~~~~~~~~~~~~~~~);printf(\n\n\n\t\t\tPressanykeytocontinue.....);printf(\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t---By唐丹阳\n);getch();menu();}voidregist()/**注册函数**/{intn,m,i,j;printf(\tHowmanynewcustoms?\t);scanf(%d,&n);printf(\tHowmanyroomstheywant?);scanf(%d,&m);for(i=r;ir+m;i++){{puts(\n\tRoom_ID:\t);scanf(%d,&room[i].room_ID);puts(\n\tTel:\t);scanf(%s,room[i].tel);puts(\n\tPrice:\t);scanf(%d,&room[i].price);room[i].sign=1;}for(j=p;jp+n;j++){puts(\n\tName:\t);scanf(%s,room[i].client_list[j].name);puts(\n\tSex(1formen||0forwomen):\t);scanf(%d,&room[i].client_list[j].sex);puts(\n\tAge:\t);scanf(%d,&room[i].client_list[j].age);puts(\n\tID_card:\t);scanf(%s,room[i].client_list[j].ID_card);puts(\n\tYear:\t);scanf(%d,&room[i].client_list[j].year);puts(\n\tMonth:\t);scanf(%d,&room[i].client_list[j].month);puts(\n\tDate:\t);scanf(%d,&room[i].client_list[j].date);}}r=r+m;p=p+n;save();menu();}5voidmenu()/*****菜单函数*****/{intn,w;do{puts(\n\n\n\t***************************MENU*****************************\n\n);puts(\t\t\t||(1).Regist||\n);puts(\t\t\t||(2).Statistics||\n);puts(\t\t\t||(3).Search||\n);puts(\t\t\t||(4).Modify||\n);puts(\t\t\t||(5).Exit||\n);puts(\n\t***********************************************************\n);printf(\t\tPleasechoiceyounumber(1-5));scanf(%d,&n);if(n1||n5)w=1,getchar();elsew=0;}while(w==1);switch(n){case1:regist();break;case2:stat();break;case3:search();break;case4:modify();break;case5:exit(0);}}注:menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。并用结构体来存放客户信息:structclient{charname[20];intsex;intage;charID_card[20];/*居民身份证*/intyear;6intmonth;intdate;/*住店时间*/};structhotel{introom_ID;/*房间号*/chartel[15];intprice;/*住房单价*/intsign;structclientclient_list[M];/*实现两个结构体的嵌套*/}room[N];intr=0;p=0;/*r,p为全局变量*/voidmenu();voidsearch_one();voidsearch_day();voidmodify();voidmodify_one();voidload_room();voidmodify_day();voidmodify_s(intj,inti);voidsave();voidsearch();voidstat_u();voidstat_o();voidregist();voidstat();2、各功能模块函数部分:(1)输入模块[需求分析]对信息进行输入。[流程图]:7输入用户要输入客户记录的个数ni从0到n-1调用输入函数input(i)i!=0保存调用函数save(n)Y输入模块流程图程序voidregist()/**注册函数**/{intn,m,i,j;printf(\tHowmanynewcustoms?\t);scanf(%d,&n);printf(\tHowmanyroomstheywant?);scanf(%d,&m);for(i=r;ir+m;i++){{puts(\n\tRoom_ID:\t);scanf(%d,&room[i].room_ID);puts(\n\tTel:\t);scanf(%s,room[i].tel);puts(\n\tPrice:\t);scanf(%d,&room[i].price);room[i].sign=1;}for(j=p;jp+n;j++){puts(\n\tName:\t);scanf(%s,room[i].client_list[j].name);puts(\n\tSex(1formen||0forwomen):\t);scanf(%d,&room[i].client_list[j].sex);puts(\n\tAge:\t);scanf(%d,&room[i].client_list[j].age);puts(\n\tID_card:\t);scanf(%s,room[i].client_list[j].ID_card);puts(\n\tYear:\t);scanf(%d,&room[i].client_list[j].year);puts(\n\tMonth:\t);scanf(%d,&room[i].client_list[j].month);puts(\n\tDate:\t);scanf(%d,&room[i].client_list[j].date);8}}r=r+m;p=p+n;save();menu();}(2)统计模块[需求分析]该模块的功能是显示所有客户记录信息。[流程图]:统计模块流程图程序voidstat()/***统计函数***/{intn,m;do{puts(\t\t*********************MENU************************\n);puts(\t\t\t\t1).Statisticsonemonth\n);puts(\t\t\t\t2).Statisticsusingroom\n);puts(\t\t\t\t3).MENU());puts(\t\t**************************************************\n);按任意键显示下一屏按任意键返回主菜单显示客户记录(10个一屏)9printf(\t\tPleasechoiceyournumber(1-3):[]\b\b);scanf(%d,&n);if(n1&&n3){m=1;getchar();}elsem=0;}while(m==1);switch(n){case1:stat_o();break;case2:stat_u();break;case3:menu();}}voidstat_o()/*******统计人数******/{intj,i,n,l;ints=0;puts(Pleaseinputthemonthyouwanttostatistics:);scanf(%d,&n);load_room();for(i=0;ir;i++)for(j=0;jp;j++)if(room[i].client_list[j].month==n)s=s+1;printf(Thereare%dcustomerthismonth,s);puts(\n\nWhatyouwanttodo?\n);puts(1).Statisticsagain\t2).back\n);scanf(%d,&l);switch(l){case1:stat_o();break;case2:stat();}}voidstat_u()/******统计使用中的房间*****/{intj,l,s=0;load_room();for(j=0;jp;j++){if(room[j].sign==1)s+=1;}printf(Thereare%droomsinuse,s);10puts(\n\nWhatyouwanttodo?\n);puts(1).Statisticsagain\t2).back\n);scanf(%d,&l);switch(l){case1:stat_u();break;case2: