C语言课程设计客房管理系统.docx
《C语言课程设计客房管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计客房管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C语言课程设计客房管理系统
中国地质大学(武汉)
C语言课程设计论文
学院:
专业:
题目:
客房管理系统设计
班级:
姓名:
学号:
指导教师:
2010年9月6日
报告目录
报告目录1
报告摘要2
一、题目要求3
二、需求分析3
三、总体设计3
四、详细设计4
1、主函数部分:
4
2、各功能模块函数部分:
6
(1)输入模块6
(2)统计模块7
(3)查找模块10
(4)修改模块12
3、公共函数部分:
16
(1)保存函数save()16
(2)加载函数load_room()16
(3)一个任务结束时的选择函数printf_back()17
(4)修改整条数据记录函数modify_data(inti,intn)17
五、上机操作18
总结21
报告摘要
此次C语言课程设计我选择的是客房管理系统设计,系统设计采用c语言在microsoftvisualc++6.0下编译而成。
客房管理系统包括客户基本信息的录入、统计、查询、修改功能。
系统开发由分析、设计、实施、调试和测试等阶段组成,其中信息管理为开发的重点。
在程序设计中结构体的调用与文件的读写为编译的重点部分。
一、题目要求
客户信息包括身份证号、姓名、性别、年龄、房间号。
试设计一客房管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)客户信息录入功能(客户信息用文件保存)
(3)客户信息统计功能
(4)客户信息查询功能,查询方式
(5)客户信息修改功能(可选项)
建立客户信息结构体,结构体成员包括身份证号、姓名、性别、年龄、房间号[提示]
二、需求分析
根据题目要求,要求对客户信息进行输入、输出等操作;在程序中需要浏览客户的信息,应提供显示、统计、查询、修改等操作;另外还应提供键盘式选择菜单实现功能选择。
三、总体设计
根据需求分析,可以对这个系统的设计分为以下几个模块:
系统功能模块图
四、详细设计
1、主函数部分:
主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
并使用蓝色作为背景颜色。
[流程图]:
显示各功能选项
主函数流程图
main()/**主函数**/
{inti;
puts("欢迎进入:
");for(i=0;i<100;i++)system("color1f");
printf("\n\n\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();}
voidmenu()/*****菜单函数*****/
{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(n<1||n>5)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;
intmonth;
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)输入模块
[需求分析]对信息进行输入。
[流程图]:
输入模块流程图
程序
voidregist()/**注册函数**/
{
intn,m,i,j;
printf("\tHowmanynewcustoms?
\t");scanf("%d",&n);
printf("\tHowmanyroomstheywant?
");scanf("%d",&m);
for(i=r;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;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();
}
(2)统计模块
[需求分析]该模块的功能是显示所有客户记录信息。
[流程图]
显示客户记录(10个一屏)
:
按任意键显示下一屏
按任意键返回主菜单
统计模块流程图
程序
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");
printf("\t\tPleasechoiceyournumber(1-3):
[]\b\b");
scanf("%d",&n);
if(n<1&&n>3)
{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;ifor(j=0;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;j
{if(room[j].sign==1)s+=1;}
printf("Thereare%droomsinuse",s);
puts("\n\nWhatyouwanttodo?
\n");
puts("1).Statisticsagain\t2).back\n");
scanf("%d",&l);
switch(l)
{case1:
stat_u();break;
case2:
stat();
}
}
printf_p(inti,intj)/******显示个人信息******/
{
printf("name:
");puts(room[i].client_list[j].name);
printf("\nsex:
%d\n",room[i].client_list[j].sex);
printf("\nage:
%d\n",room[i].client_list[j].age);
puts("\nID_card:
");printf("%s",room[i].client_list[j].ID_card);
printf("\nyear:
%d\n",room[i].client_list[j].year);
printf("\nmonth:
%d\n",room[i].client_list[j].month);
printf("\ndate:
%d\n",room[i].client_list[j].date);
printf("\nRoom_ID:
%d\n",room[i].room_ID);
printf("\nTel:
%s\n",room[i].tel);
printf("\nPrice:
%d\n",room[i].price);
}
(3)查找模块
查找模块流程图
程序:
voidsearch()/********查找函数********/
{
intn,m;
do
{
puts("\n\n\t\t*********************MENU************************\n");
puts("\t\t1).Searchsomeonehaderevlivedhere\n");
puts("\t\t2).Searchsomeday\n");
puts("\t\t3).MENU()");
puts("\t\t************************************************\n");
printf("\t\tPleasechoiceyournumber(1-3):
[]\b\b");
scanf("%d",&n);
if(n<1&&n>3)
{m=1;
getchar();
}
elsem=0;
}while(m==1);
switch(n)
{case1:
search_one();break;
case2:
search_day();break;
case3:
menu();
}
}
voidsearch_one()/*****查找个人*****/
{inti,j,w=0,l,m,n;
chars[20];
printf("Pleaseinputthename\n");
scanf("%s",s);
load_room();
for(i=0;ifor(j=0;j
if(strcmp(room[i].client_list[j].name,s)==0)w=1,m=i,n=j;
if(w==1)
printf_p(m,n);
elseprintf("\nThereisnorecordhere\n");
puts("Whatdoyouwanttodo?
\n");
puts("1).searchagain\t2).back\n");
scanf("%d",&l);
switch(l)
{case1:
search_one();break;
case2:
search();
}
}
voidsearch_day()/*******查询某日的使用情况*******/
{
inti,j,l,m,n,a,b,c,w=0;
printf("\nPleaseinputthedayyouwanttosearch");
printf("\nYear:
");scanf("%d",&a);
printf("\nMonth:
");scanf("%d",&b);
printf("\nDate:
");scanf("%d",&c);
load_room();
for(i=0;i
for(j=0;jif((room[i].client_list[j].date==c)&&(room[i].client_list[j].month==b)&&(room[i].client_list[j].year==a))w=1,m=i,n=j,printf_p(m,n);
if(w==0)
printf("NOrecordthisday\n");
puts("Whatyouwanttodo?
\n");
puts("1).searchagain\t2).back\n");
scanf("%d",&l);
switch(l)
{case1:
search_day();break;
case2:
search();
}
}
(4)修改模块
[需求分析]该模块的功能是插入客户记录信息并且不能覆盖原有客户信息。
[流程图]
插入模块
调用加载函数
让用户输入要插入的客户信息个数
调用整条信息输入函数
用户作出选择,输入1or2
1还是2
1浏览全部
2返回主菜单
修改模块流程图
程序:
voidmodify()/*****修改函数******/
{
intn,m;
do
{
puts("\t\t*********************MENU************************\n");
puts("\t\t\t\t1).modifyonepeople\n");
puts("\t\t\t\t2).modifyoneday\n");
puts("\t\t\t\t3).MENU()");
puts("\t\t**************************************************\n");
printf("\t\tPleasechoiceyournumber(1-3):
[]\b\b");
scanf("%d",&n);
if(n<1&&n>3)
{m=1;
getchar();
}
elsem=0;
}while(m==1);
switch(n)
{case1:
modify_one();break;
case2:
modify_day();break;
case3:
menu();
}
}
voidmodify_one()/*****修改个人信息*****/
{
inti,j,m,n,w=0,l;
chars[20];
puts("\t\tPleaseinputthename");
scanf("%s",s);
load_room();
for(i=0;ifor(j=0;j
if(strcmp(room[i].client_list[j].name,s)==0)w=1,m=i,n=j;
if(w==1)
printf_p(m,n);
elseprintf("\nThereisnorecordhere\n");
modify_s(m,n);
save();
puts("Whatyouwanttodo?
\n");
puts("1).Modifyagain\t2).back\n");
scanf("%d",&l);
switch(l)
{case1:
modify_one();break;
case2:
modify();
}
}
voidmodify_s(inti,intj)/*********修改执行项*********/
{
inta,q;
chars[20],b[15];
printf("\nChoicethetitleyouwanttomodify\n");
puts("1).Name2).sex3).age4)ID_card5).year6).month7).date8).room_ID9)tel10).price\11).modifynone\n");
printf("Pleasechoiceyournumber(1-10):
[]\b\b");
scanf("%d",&q);
switch(q)
{
case1:
printf("Pleaseinputnewname\n");scanf("%s",s);strcpy(room[i].client_list[j].name,s);break;
case2:
printf("Pleaseinputnewsex\n");scanf("%d",&a);room[i].client_list[j].sex=a;break;
case3:
printf("Pleaseinputthenewage\n");scanf("%d",&a);room[i].client_list[j].age=a;break;
case4:
printf("PleaseinputnewID_card\n");scanf("%s",s);strcpy(room[i].client_list[j].ID_card,s);break;
case5:
printf("Pleaseinputnewyear\n");scanf("%d",&a);room[i].client_list[j].year=a;break;
case6:
printf("Pleaseinputthenewmonth\n");scanf("%d",&a);room[i].client_list[j].month=a;break;
case7:
printf("Pleaseinputthenewdate\n");scanf("%d",&a);room[i].client_list[j].date=a;break;
case8:
printf("Pleaseinputthenewroom_ID\n");scanf("%d",&a);room[i].room_ID=a;break;
case9:
printf("Pleaseinputthenewtel\n");scanf("%s",b);strcpy(room[i].tel,b);break;
case10:
printf("Pleaseinputthenewprice\n");scanf("%d",&a);room[i].price=a;break;
case11:
modify();
}
}
voidmodify_day()/*******修改某日信息******/
{
inti,j,l,a,b,c,w=0,m,n;
puts("\t\tPleaseinputthedate");
puts("\nYear:
");scanf("%d",&a);
puts("\nMonth:
");scanf("%d",&b);
puts("\nDate:
");scanf("%d",&c);
load_room();
for(i=0;i
for(j=0;jif((room[i].client_list[j].date==c)&&(room[i].client_list[j].month==b)&&(room[i].client_list[j].yea