C语言餐饮结账管理系统设计.docx

上传人:b****5 文档编号:7752167 上传时间:2023-01-26 格式:DOCX 页数:26 大小:433.73KB
下载 相关 举报
C语言餐饮结账管理系统设计.docx_第1页
第1页 / 共26页
C语言餐饮结账管理系统设计.docx_第2页
第2页 / 共26页
C语言餐饮结账管理系统设计.docx_第3页
第3页 / 共26页
C语言餐饮结账管理系统设计.docx_第4页
第4页 / 共26页
C语言餐饮结账管理系统设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言餐饮结账管理系统设计.docx

《C语言餐饮结账管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言餐饮结账管理系统设计.docx(26页珍藏版)》请在冰豆网上搜索。

C语言餐饮结账管理系统设计.docx

C语言餐饮结账管理系统设计

 

C语言程序设计

课程设计报告

设计题目:

餐饮结账管理系统设计

 

 

 

 

1 设计任务

1.1设计题目的描述

功能:

餐饮结账信息包括:

编号、时间、台面号、顾客数量、接待服务生、实收金额。

试设计一餐饮结账管理系统,使之能提供以下功能:

1结账信息录入、修改、删除功能;

2查询浏览功能:

按台面号查询、按接待服务生查询;

3按照实收金额排序。

4统计总收入、顾客总数等功能。

1.2设计要求

(1)仔细审题,明确题目要求。

(2)按照结构化的程序设计思想,将程序模块化,将相对独立的功能写成函数。

(3)要求编程、调试通过并演示;程序编写规范,添加适当注释。

(4)按照课程设计报告的内容和格式要求,撰写课程设计报告,并且打印。

2设计方案说明

2.1数据的存储结构

餐饮结账信息包括:

编号、时间、台面号、顾客数量、接待服务生、实收金额。

因此需要使用结构体,而结账信息又不止是一个,所以使用结构体数组,这里定义结构体structbill,定义数组bill[M]。

struct bill

{

int num;      //编号

int time[4]; //时间

int table;   //台面号

intcount; //顾客数量

ﻩchar name[20];    //服务生姓名

intmoney;    //实收金额

}bill[M];

2.2函数之间的调用关系说明

2.3函数说明

1)函数 voidmenu()

voidmenu()  菜单函数

此函数为主菜单,从此处进入其他模块。

 

变量c:

使用c选择进入其它功能。

2)函数voidinput()

voidinput()  信息录入,将录入的信息存入文件bill中

此函数将从键盘输入的信息录入文件bill中。

使用scanf输入结构体中各个量;

3)函数 voidreadFromFile()

void readFromFile() 从文件中读取信息并存入数组bill[30]

此函数将文件bill中信息读出并存入bill[]

 

4)函数void save()

voidsave()/*保存函数*/

此函数用于在修改与删除后保存数据。

 

5)函数voiddisplay_all()

void display_all() 信息全部显示

通过此函数可显示所有输入信息。

 

6)函数 void display(int i)

void display(inti)单个信息显示i为要修改的信息号从modify函数中读入

此函数用于在修改等功能后显示第i个信息,用于核对。

用printf显示第i个信息的所有数据

7)函数intmodify_a(inti)

intmodify_a(inti)修改主函数时调用此函数

此函数用于修改其中一个或多个信息,并返回一个数值用于确定是否修改。

 变量c用于确定修改项目

8)函数voidmodify()

voidmodify() 修改信息主函数

此函数用于修改其中一个信息并保存

9)函数  voiddeleter()

voiddeleter()  删除记录

此函数用于删除记录中的一条信息。

 

10)函数void search1()

voidsearch1()台面号查询

此函数用于按台面号查询信息并输出信息。

 

 

11)函数  voidsearch2()

voidsearch2()  接待服务生查询

此函数用于按接待服务生姓名查询信息并显示。

12)函数 voidsort()

void sort() 金额排序

此函数用于按金额对所有信息进行排序并输出。

关键变量structbillt 为中间变量,用于交换bill[i]与bill[i+1]的值。

13)函数voidincome()

void income()总收入统计

此函数用于统计总收入并输出。

关键变量sum用于统计总收入

14)函数voidnumber()

voidnumber()  顾客总数统计

此函数用于统计顾客总数。

关键变量number用于统计顾客总数

3设计题目源代码清单

#include

#include<string.h>

#include<stdlib.h>

#defineM30

struct bill

{

int num;      //编号

ﻩinttime[4]; //时间

inttable;    //台面号

ﻩintcount;   //顾客数量

char name[20];  //服务生姓名

ﻩintmoney;     //实收金额

}bill[M];

intN;

/*菜单*/

voidmenu()

{

charc;

voidinput();

voidmodify();

ﻩvoid deleter();

ﻩvoidsearch1();

void search2();

ﻩvoidsort();

ﻩvoidincome();

void number();

ﻩdo

ﻩ{

printf("\n\n\n");

ﻩ    printf("     <<<<餐饮结账管理系统>>>>   \n");

ﻩprintf("----------------------------------------------------\n");

   printf("\n\n");

ﻩ  printf("---1录入  2修改  3删除 ----\n\n");

ﻩ printf("---4台面号查询    5接待服务生查询----\n\n");

ﻩ printf("---6金额排序7总收入 8顾客总数----\n\n");

ﻩ    printf("---     0退出          ----\n\n");

   printf("---------------------------------------------------\n");

   printf("\n\n");

ﻩ printf("请选择服务(0-8)");

 c=getchar();

 switch(c)

ﻩ{

ﻩ  case '1':

{input();getchar();break;}

 case'2':

{modify();getchar();break;}

  case'3':

{deleter();getchar();break;}

   case '4':

{search1();getchar();break;}

ﻩ  case'5':

{search2();getchar();break;}

 case'6':

{sort();getchar();break;}

case'7':

{income();getchar();break;}

ﻩ   case'8':

{number();getchar();break;}

 case'0':

ﻩﻩ{

ﻩ      printf("\n谢谢使用,再见!

");

ﻩ  exit(0);

     printf("\n");

ﻩ }

 default:

ﻩ {

ﻩ   printf("\n输入有误,重试!

");

 c=getchar();

 }

ﻩ}

ﻩ }while

(1);

ﻩ 

}

/*信息录入,将录入的信息存入文件bill中*/

void input()     

 FILE*fp;

 inti;

if((fp=fopen("bill","w"))==NULL)

 printf("cannot openthefile\n");

return;

   }

printf("输入信息个数(0-%d)?

",M-1);

 scanf("%d",&N);

printf("请输入数据:

\n");

 for(i=0;i<N;i++)

 {

printf("输入账单%d信息:

\n",i+1);

 printf("编号:

");

  scanf("%d",&bill[i].num);

 printf("时间(月.日时:

分):

");

ﻩscanf("%d%d%d%d",&bill[i].time[0],&bill[i].time[1],&bill[i].

time[2],&bill[i].time[3]);

 printf("台面号:

");

 scanf("%d",&bill[i].table);

ﻩprintf("顾客数量:

");

ﻩ scanf("%d",&bill[i].count);

 printf("接待服务生:

");

 scanf("%s",bill[i].name);

ﻩ  printf("实收金额:

");

ﻩ  scanf("%d",&bill[i].money);

 }

 for(i=0;i

 {

if(fwrite(&bill[i],sizeof(structbill),1,fp)!

=1)

{

printf("error\n");

ﻩreturn;

ﻩ}

}

fclose(fp);

}

/*从文件中读取信息并存入数组sbill[N]*/

void readFromFile()

{

int i;

FILE *fp;

 if((fp=fopen("bill","rb"))==NULL)

{

 printf("cannotopenthe file\n");

 return;

 }

  for(i=0;i<N;i++)

 fread(&bill[i],sizeof(struct bill),1,fp);

 fclose(fp);

/*保存函数*/

voidsave()

{

ﻩFILE*fp;

 inti;

 if((fp=fopen("bill","w"))==NULL)

 {

 printf("cannot openthefile\n");

 return;

 for(i=0;i<N;i++)

 {

 if(bill[i].num!

='\0')

   if(fwrite(&bill[i],sizeof(structbill),1,fp)!

=1)

ﻩ {

  printf("error\n");

ﻩ  return;

 }

 fclose(fp);

}

/*信息全部显示*/

void display_all()

{

ﻩinti;

    readFromFile();

printf("全部信息:

\n");

ﻩfor(i=0;i<N;i++)

{

ﻩprintf("编号:

%d时间:

%d.%d%d:

%d台面号:

%d顾客数量:

%d接待服务生:

%s实施金额:

%d",bill[i].num,bill[i].time[0],bill[i].time[1],bill[i].time[2],bill[i].time[3],bill[i].table,bill[i].count,bill[i].name,bill[i].money);

 printf("\n");

ﻩ}

}

/*单个信息显示*/

voiddisplay(inti)

{ 

printf("编号:

%d时间:

%d%d%d%d台面号:

%d 顾客数量:

%d接待服务生:

%s实施金额:

%d",bill[i].num,bill[i].time[0],bill[i].time[1],bill[i].time[2],bill[i].time[3],bill[i].table,bill[i].count,bill[i].name,bill[i].money);

}

/*修改函数调用函数*/

int modify_a(inti)

int c,w1;

  printf("\n修改选项=>\n\n1).编号2).时间 3).台面号  4).顾客数量5).接待服务生6).实收金额7).取消并返回");

   printf("请选择?

 []");

 scanf("%d",&c);

 if(c>7||c<1)

ﻩ{ 

ﻩprintf("\n选择错误,请重试");

ﻩgetchar();

ﻩ}

do

 {

ﻩswitch(c)

 {case1:

 printf("编号:

");scanf("%d",&bill[i].num);break;

case2:

printf("时间:

") ;scanf("%d.%d%d:

%d",&bill[i].time[0],&bill

[i].time[1],&bill[i].time[2],&bill[i].time[3]);break;

case3:

printf("台面号:

");scanf("%d",&bill[i].table);break;

   case4:

printf("顾客数量:

");scanf("%d",&bill[i].count);break;

  case5:

printf("接待服务生:

");scanf("%s",bill[i].name);break;

 case6:

printf("实收金额:

");scanf("%d",&bill[i].money); break;

case 7:

menu(); 

}

ﻩprintf("\n现在:

\n");

display(i);

 printf("\n确定?

\n1).是  2).不,重新修改3).返回不保存[");

scanf("%d",&w1);

}while(w1==2);

return(w1);

}

/*修改信息*/

voidmodify()

{

ﻩinti,n,k,w0=1,w1;

readFromFile();

do

{

k=-1;

 display_all();

 do

ﻩﻩ{

printf("\n输入要修改的编号数\n编号:

");

     scanf("%d",&n);

    for(i=0;i<N;i++)

    if(bill[i].num-n==0)

ﻩ{

ﻩk=i; 

ﻩ}

  if(k==-1)

ﻩ printf("\n\n没有记录请重新输入!

");

ﻩﻩ}while(k==-1);

w1=modify_a(k);

 if(w1==1)

{

printf("\n 修改成功\n是否继续?

1).是2).保存返回[");

   save();

scanf("%d",&w0);

 }while(w0==1); 

}

/*删除记录*/

voiddeleter()

{

ﻩint i,k,n,w0,w1;

   readFromFile();

ﻩdo

ﻩﻩk=-1;

display_all();

do

ﻩﻩprintf("\n输入要删除的编号:

\n");

scanf("%d",&n);

   for(i=0;i

ﻩ   if(n-bill[i].num==0)

ﻩﻩ{

ﻩﻩ k=i;

ﻩ}

ﻩ if(k==-1)

ﻩprintf("\n无记录,请重新输入!

\n");

}while(k==-1);

   display(i);

ﻩﻩprintf("\n确定删除?

1)是 2)返回\n [");

ﻩscanf("%d",&w0);

ﻩif(w0==1)

ﻩﻩ{

ﻩfor(i=k;i<N;i++)

ﻩﻩ{

ﻩﻩbill[i]=bill[i+1];

ﻩ save();

ﻩﻩ}

}

ﻩelse  break;

  display_all();

ﻩprintf("\n删除成功,是否继续?

1)是2)返回[");

scanf("%d",&w1);

ﻩ}while(w1==1);

}

/*台面号查询*/

voidsearch1()

{

 int i,j,w0;

intnumber;

  readFromFile();

do

  {

ﻩj=-1;

ﻩ printf("\n请输入台面号查询:

");

  scanf("%d",&number);

 for(i=0;i<N;i++)

ﻩ {

     if(number==bill[i].table)

  {

ﻩj=i;

     display(j);

ﻩﻩprintf("\n");

ﻩ}

  } 

 if(j==-1)

ﻩ  printf("无此号!

");

  printf("\n继续?

1)是2)返回 [");

  scanf("%d",&w0);

  }while(w0==1);

}

/*接待服务生查询*/

void search2()

{

chara[20];

inti,j,w0;

 do

  {

j=-1;

  printf("\n请输入接待服务生姓名查询:

");

  scanf("%s",a);

 for(i=0;i

ﻩ {

   if(strcmp(bill[i].name,a)==0)

 {

ﻩj=i;

  display(j);

ﻩﻩﻩ printf("\n");

ﻩ }

 }

 if(j==-1)

  printf("无此姓名!

");

 printf("\n继续?

1)是 2)返回 [");

scanf("%d",&w0);

}while(w0==1);

}

/*金额排序*/

voidsort()

{

ﻩint i,j,w0;

ﻩstructbill t;

  readFromFile();

 printf("\n\n");

ﻩfor(j=0;j<N-1;j++)

ﻩfor(i=0;i<N-1-j;i++)

ﻩﻩif(bill[i].money<bill[i+1].money)

ﻩﻩ{

ﻩﻩt=bill[i];

    bill[i]=bill[i+1]; /*调换bill[i]与bill[i+1]的值*/

      bill[i+1]=t;

ﻩﻩﻩ}

 printf("由大到小为:

\n");

for(i=0;i

{

ﻩdisplay(i);

ﻩﻩprintf("\n");

ﻩ}

  do

{

ﻩprintf("\n返回?

1)是2)否");

ﻩscanf("%d",&w0);

}while(w0==2);

}

/*总收入统计*/

void income()

ﻩinti,sum=0,w0;

 readFromFile();

ﻩfor(i=0;i<N;i++)

  sum=sum+bill[i].money;

 printf("\n\n");

printf("总收入:

%d",sum);

ﻩdo

ﻩ{

ﻩﻩprintf("\n返回?

 1)是 2)否");

ﻩscanf("%5d",&w0);

}while(w0==2);

/*顾客总数统计*/

void number()

{

  inti,number=0,w0;

readFromFile();

for(i=0;i<N;i++)

    number=number+bill[i].count;

printf("\n\n");

printf("顾客总数:

%d",number);

do

ﻩ{

ﻩprintf("\n返回?

1)是2)否");

ﻩscanf("%5d",&w0);

}while(w0==2);

}

/*主函数*/

voidmain()

{

ﻩmenu();

}

4程序测试

4.1测试数据说明

测试数据包括:

编号、时间、台面号、顾客数量、接待服务生、实收金额。

编号

时间

(int数组)

台面号

Int

顾客数量

Int

接待服务生

char数组

实收金额

Int

7.212:

12

2

li

32

2

7.2 12:

22

3

6

wang

128

7.212:

32

2

8

zhao

186

4

7.212:

42

4

3

zhang

95

5

7.212:

52

1

li

105

4.2输出结果说明

1)菜单界面,进入系统首先显示主菜单,之后可通过选择不同的数字来运用此餐饮结账系统的各项功能。

      图1 菜单

2)录入界面,选择1后根据提示输入需要输入的信息个数,之后可依次录入几条不同信息。

     图2 录入

3)修改界面,选择2后依次输入修改编号1, 与项目6,并更改为35,保存返回。

   图3修改信息

4)按台面号查询信息,选择4后依次查询台面号3与6,之后返回。

      图4台面号查询

5)按服务生姓名查询,选择5后查询服务生li,之后返回。

      图5服务生查询

6)按金额排序,选择6后可按金额从大到小排序显示,之后返回。

       图6按金额排序

7)求总收入,选择7后可求出总收入,之后返回。

    图7总收入

8)求顾客总数,选择8后可求出顾客总数,之后返回。

      图8顾客总数

9)删除信息,选择3后输入要删除的编号3,删除后显示,并返回。

 

    图9删除信息

10)退出程序,选择0后退出餐饮结账管理系统。

    图10退出

5课程设计总结

通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。

它是计算机程序设计的重要理论技术基础,在我们的学习中占据着十分重要的地位。

1.这次课程设计运用《C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1