1、C语言餐饮结账管理系统设计C语言程序设计课程设计报告设计题目:餐饮结账管理系统设计 1设计任务1.1 设计题目的描述功能:餐饮结账信息包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。试设计一餐饮结账管理系统,使之能提供以下功能:1结账信息录入、修改、删除功能;2查询浏览功能:按台面号查询、按接待服务生查询;3 按照实收金额排序。4统计总收入、顾客总数等功能。12 设计要求(1)仔细审题,明确题目要求。(2)按照结构化的程序设计思想,将程序模块化,将相对独立的功能写成函数。(3)要求编程、调试通过并演示;程序编写规范,添加适当注释。(4)按照课程设计报告的内容和格式要求,撰写课程设计报
2、告,并且打印。2 设计方案说明2.1 数据的存储结构餐饮结账信息包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。因此需要使用结构体,而结账信息又不止是一个,所以使用结构体数组,这里定义结构体struc bill,定义数组illM。ructll itnu; /编号 itime4; /时间 inable; /台面号 it count; /顾客数量carname; /服务生姓名 it ney; /实收金额bilM;2.2函数之间的调用关系说明 2.3函数说明1)函数 d menu() void mn() 菜单函数 此函数为主菜单,从此处进入其他模块。变量 :使用c选择进入其它功能。)函数o
3、 input()vi np() 信息录入,将录入的信息存入文件ill中此函数将从键盘输入的信息录入文件bil中。使用canf输入结构体中各个量;3)函数 vod reaFrle()vid reaFromle() 从文件中读取信息并存入数组bil30此函数将文件bil中信息读出并存入bll4)函数 oidav()void sav() /保存函数*/此函数用于在修改与删除后保存数据。)函数 oid dispall() viddisla_al() 信息全部显示通过此函数可显示所有输入信息。6)函数 voiispay(inti)voidspl(in i) 单个信息显示 i为要修改的信息号从moiy函数
4、中读入此函数用于在修改等功能后显示第个信息,用于核对。用printf显示第i个信息的所有数据 7)函数 int odfy_a(nt i)int mdfy_a(int ) 修改主函数时调用此函数此函数用于修改其中一个或多个信息,并返回一个数值用于确定是否修改。 变量用于确定修改项目) 函数 void moy()void odfy() 修改信息主函数此函数用于修改其中一个信息并保存 9)函数 voi dle()void dle() 删除记录此函数用于删除记录中的一条信息。10)函数 oidarc()vod seach() 台面号查询此函数用于按台面号查询信息并输出信息。 11)函数 void se
5、arh()void earch2() 接待服务生查询此函数用于按接待服务生姓名查询信息并显示。1)函数 void ort()vodsort() 金额排序此函数用于按金额对所有信息进行排序并输出。关键变量suc bill t为中间变量,用于交换bill与bili的值。13)函数 vid incme()oidice() 总收入统计此函数用于统计总收入并输出。关键变量sm用于统计总收入1)函数 vd nmer()oid nmber() 顾客总数统计此函数用于统计顾客总数。关键变量number用于统计顾客总数3设计题目源代码清单inudeincle#incude#define 30uctbill in
6、tnm; 编号int me4; /时间 it a; /台面号in cout; /顾客数量 chaname20; /服务生姓名int mne; /实收金额billM;it N;*菜单*/i meu() char c; void input(); oid modify();oddeleer();vid sarc1(); voidsarch2();void sort();oi income(); voidnbr();do itf(nn);intf( ); printf(-); pinf(n); printf(-1录入 2修改 3删除 -nn); pintf(-台面号查询 5接待服务生查询-nn);
7、prinf(-金额排序 7总收入 8顾客总数 -n);pnt(- 0退出 -nn); prntf(-n); prinf(); printf(请选择服务(0-8)); =gtcar(); sith() cse1: put();gtcha();brea; as : odif();echar();break; case 3: deleter();gehar();bak; case4: sech1();getch();brak; case 5: searc();ehar();break; ase : sor();tcr();eak; ase 7: nom();etchar();reak; ase 8:
8、 nmer();getca();ba; case : pnf(n谢谢使用,再见!); xit(); rn(n); fault: intf(n输入有误,重试!:); cethar(); whie(1);/*信息录入,将录入的信息存入文件bill中*/voidinput() FILE *f; nt ; (fp=fo(bil,)=NUL) intf(cnoen te filen); retun; rintf(输入信息个数(0-%d)?:,); sanf(d,N); printf(请输入数据:n); for(i=;N;i) rintf(输入账单 %d 信息:,i1); rint(编号:); anf(d
9、,&linum); rint(时间(月.日 时:分):); cnf(%d%d%dd,&lli.tim0,&bili.tie1,bili.tme2,&ili.time3); pri(台面号:); scanf(%d,&bili.abe); pinf(顾客数量:); cf(%d,&bili.unt); pitf(接待服务生:); sanf(s,ili.ae);pntf(实收金额:);sc(%,&bil.moe); fo(i=0;in 1).编号 ).时间 3).台面号4).顾客数量 5)接待服务生 6)实收金额 ).取消并返回); itf(请选择?: ); cf(d,&c); if(c7|c) pr
10、ntf(n选择错误,请重试); getchr(); do swic(c) ae 1:pint(编号:); anf(%,&lli.num); beak; se 2:printf(时间:); cn(%d.%d:%d,blli.time0,bilite1,li.tme2,bii.tm3);brek;se 3: prin(台面号:); scanf(d,&ili.abl); ak; case 4: print(顾客数量:); snf(d,&billi.count); brea; case 5: pritf(接待服务生:); scnf(s,billinme); break; case 6: ntf(实收金
11、额:); sn(%d,ilimone);break; case7: mu(); printf(n现在:n); dsplay(i); print(n确定?n 1).是2).不,重新修改 3).返回不保存 ); sf(%d,&w1); hile(w1=2); rturn(1);/*修改信息*/void moify() it i,n,k,0=,w1; readrmFil(); d =1; dipl_ll(); do rintf(n输入要修改的编号数n编号:); scanf(,n); f(;i+) if(blli.nm-=) =i; i(k=-1) rntf(nn没有记录请重新输入!);wile(k=
12、1); w1=odfya(k); f(w1=1) prinf(n修改成功 n是否继续? ).是 2).保存返回 ); sve(); anf(%d,&w0); hi(w0=); *删除记录/vid leer()inti,k,,w,w1; edFomFile(); do k=1; iplaa(); do pritf(n输入要删除的编号:); af(%,n); f(=0;N;i+) if(n-blli.u=) k=i; if(k=-1) prtf(n无记录,请重新输入!n); wle(k=-1); dspla(i);rintf(n确定删除? 1)是 )返回n); scnf(%d,&w0); (0=1
13、) fr(=k;i;i+) ili=bili; sae(); lseba; splay_l(); printf(n删除成功,是否继续? 1)是 2)返回 ); scaf(d,&1);whi(w1=1);/*台面号查询/void earch1() iti,j,w; int uer; readFrmFie(); do =-1; rif(请输入台面号查询:); scanf(%d,&numbr); (=0;i;i+) if(nuberillitble) =i; dslay(); printf(n); f(j=-) rintf(无此号!); rintf(n继续? 1)是 2)返回 ); scanf(%d
14、,&w0); while(w0=1);/*接待服务生查询oisearch() har a20; nt i,j,w0; do j=1; pitf(请输入接待服务生姓名查询:); anf(%s,); f(=0;N;+) (tcmp(bilinae,a)=) =; disla(j); prntf(n); i(j=-1) ntf(无此姓名!); rintf(n继续? 1)是 )返回 ); anf(%,w0); whil(w=);/*金额排序/void ort()iti,j,w;srut billt; reFromFile(); prnf(nn);or(j=;-1;j+) or(i=0;iN-1j;i+
15、) if(billi.oneyill+.mone) =billi; billili1; /调换li与lli+1的值* li+1=; pritf(由大到小为:); for(i=0;iN;+) displa(i);print(); do prntf(n返回? 1)是 2)否); scanf(%d,0); ie(w0=2);/*总收入统计*/oiicom()i i,um=0,w0; readFoFie();or(=0;i;+) u=+illi.mney; nf(nn); pintf(总收入:%d,sum);dprintf(n返回? 1)是2)否); scanf(%5d,0); while(02);/
16、*顾客总数统计*/voidnum() nt ,mbr=0,w0; redFromFl(); or(i0;i;i+) umbr=nmbe+bllcount; rintf(n); prinf(顾客总数:%,number); do print(返回? 1)是 2)否); scanf(%5d,w); whle(0=2);主函数*/void mi()menu();4 程序测试41 测试数据说明测试数据包括:编号、时间、台面号、顾客数量、接待服务生、实收金额。编号时间(t 数组)台面号Int顾客数量t接待服务生r数组实收金额Int.2 12:12l327.212:2236wan1282 2:3228zao
17、164.2 12:4243zhang957.2 1:21l1054.2 输出结果说明1)菜单界面,进入系统首先显示主菜单,之后可通过选择不同的数字来运用此餐饮结账系统的各项功能。 图 菜单2)录入界面,选择1后根据提示输入需要输入的信息个数,之后可依次录入几条不同信息。 图录入3)修改界面,选择后依次输入修改编号1,与项目6,并更改为3,保存返回。 图 修改信息)按台面号查询信息,选择后依次查询台面号3与6,之后返回。 图 台面号查询5)按服务生姓名查询,选择5后查询服务生i,之后返回。 图5 服务生查询)按金额排序,选择6后可按金额从大到小排序显示,之后返回。 图 按金额排序7)求总收入,选择后可求出总收入,之后返回。 图 总收入8)求顾客总数,选择后可求出顾客总数,之后返回。 图8 顾客总数9)删除信息,选择3后输入要删除的编号3,删除后显示,并返回。 图9 删除信息0)退出程序,选择0后退出餐饮结账管理系统。 图1 退出 课程设计总结通过为期一周的课程设计,我们对C语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们的学习中占据着十分重要的地位。1这次课程设计运用
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1