C语言课程设计食堂就餐餐费管理系统

合集下载

C语言餐饮管理系统详细设计说明书

C语言餐饮管理系统详细设计说明书

餐饮管理系统详细设计说明书编写部门:创新创业项目小组编写人:创新创业项目小组全体成员指导老师:***日期:2013年01月09日目录1引言........................................................................................................................ 错误!未定义书签。

1.1编写目的......................................................................................................... 错误!未定义书签。

1.2背景................................................................................................................. 错误!未定义书签。

1.3定义................................................................................................................. 错误!未定义书签。

1.4参考资料......................................................................................................... 错误!未定义书签。

2系统的结构............................................................................................................ 错误!未定义书签。

C课程设计自助点餐系统

C课程设计自助点餐系统

C课程设计自助点餐系统Newly compiled on November 23, 2020面向对象程序课程设计(2014/2015学年第一学期第20周)指导教师:庄巧莉、杨东鹤班级:计算机科学与技术13(1)学号:姓名:面向对象程序课程设计目录一、题目二、需求分析三、系统结构图四、类的设计五、程序代码与说明六、运行结果与分析七、心得与体会一:题目自助点餐系统二:需求分析有一个小型餐厅,该餐厅提供即时就餐和外卖服务。

现在这个餐厅打算使用自助点餐系统,让顾客自己点餐,实现以下功能。

1、根据顾客的选择正确打出账单2、正确统计出每一天的及时就餐和外卖的销售情况3、实现对餐厅菜式和价格的有效管理4、考虑点餐的自动排序问题,使顾客可以实时查询到自己菜单处理情况三:系统结构图四:类的设计Client类:客户类,包含客户属性姓名,电话号码,费用等信息,登记客户,记录客户订单信息ClientManager类:客户管理类,用于管理客户,记录客户数量,存储客户菜单信息,查询客户订单信息,统计订单FeeManager类:用于记录就餐、外卖的销售费用,统计收入Food类:餐厅食物的类,包含食物名称和价格FoodManager类:管理菜单,用于添加食物,修改食物,删除食物,记录不同食物的信息,呈现菜单MenuView类:用于打印各种操作界面五:程序代码与说明#ifndef CLIENT#define CLIENT#include""#include<iostream>using namespace std;class Client{private:int number;etName()<<"\t"<<num[i]<<"\t"<<num[i]*[i].getPrice()<<endl;}cout<<"总价:\t\t"<<fee<<endl;}char * Client::getName(){return name;}void Client::changNum(){int n;int numss;cout<<"请输入食物序号: ";cin>>n;cout<<"您选择了食物: "<<(n-1)<<endl;cout<<"请输入数量: ";cin>>numss;fee += (numss - num[n-1] )*(n-1));num[n-1]=numss;}void Client::deleFood(){int n;cout<<"请输入食物序号: ";cin>>n;cout<<"您选择了食物: "<<(n-1)<<endl;fee -= (num[n-1] )*(n-1));for(int i = n-1 ; i < () ; i ++){[i]=[i+1];num[i]=num[i+1];}()-1);}#ifndef CLIENTMANAGER#define CLIENTMANAGER#include""#include<iostream>using namespace std;#define MAX_CLIENT_NUM 60 etType()==1){cout<<"第"<<++count<<"单: "<<client[i].getName()<<"\t总价是: "<<client[i].getFee()<<"元"<<"\t就餐"<<endl<<endl;if(strcmp(client[i].getName(),s)==0)th =count;}for(int i = 0; i < clientNum ; i ++)if(client[i].getType()==2){cout<<"第"<<++count<<"单: "<<client[i].getName()<<"\t总价是: "<<client[i].getFee()<<"元"<<"\t外卖"<<endl<<endl;if(strcmp(client[i].getName(),s)==0)th =count;}cout<<"您当前排在第"<<th<<"单"<<endl;cout<<"----------------------------------"<<endl;}void ClientManager::showAll(){for(int i = 0 ; i < clientNum ; i ++ ){if(client[i].getType()==1){cout<<"订单号: "<<i+1<<endl;client[i].showClientMessage();cout<<endl;}}for(int i = 0 ; i < clientNum ; i ++ ){if(client[i].getType()==2){cout<<"订单号: "<<i+1<<endl;client[i].showClientMessage();cout<<endl;}}}#ifndef FOOD#define FOODclass Food{private:char *name;etName()<<"\t"<<food[i].getPrice()<<endl;}void FoodManager::changePrice(){char *s;int code;s = new char[20];double p;cout<<"请输入食物编号: ";cin>>code;s = food[code].getName();cout<<"您选择了食物: "<<s<<endl;cout<<"请输入价格: ";cin>>p;for(int i = 0; i < total ; i ++)if(strcmp(food[i].getName(),s)==0){food[i].setPrice(p);cout<<"修改成功"<<endl;return;}cout<<"没有这种食物,修改失败"<<endl; }void FoodManager::deleteFood(){char *s;s = new char[20];cout<<"请输入菜名: ";cin>>s;for(int i = 0 ; i < total ; i ++)if(strcmp(food[i].getName(),s)==0){cout<<"成功删除"<<s<<endl;total --;for(int t = i; t < total ; t ++)food[t]=food[t+1];return;}cout<<"没有这种食物"<<endl;}void FoodManager::addFood(char *s , double p){food[total++]=Food(s,p);}double FoodManager::getPriceByName(char *s){for(int i = 0 ; i < total ; i ++)if(strcmp(food[i].getName(),s)==0)return food[i].getPrice();return false;}int FoodManager::getListByName(char *s){for(int i = 0 ; i < total ; i ++)if(strcmp(food[i].getName(),s)==0)return i;return false;}int FoodManager::getTotal(){return total;}char * FoodManager::getNameByList(int list){return food[list].getName();}void FoodManager::setTotal(int x){total = x;}#ifndef FEEMANAGER#define FEEMANAGERclass FeeManager{private:double jiuCanFee; etType(1);();while(true){();int choices;choices = ();if(choices==1)etName();cout<<"您选择了食物: "<<n<<endl;prices = (n);cout<<"请输入数量: ";cin>>nums;[curClient].(Food(n,prices));[curClient].addFee(nums*prices);[curClient].num[[curClient].()-1]=nums;cout<<"当前的总费用是"<<[curClient].getFee()<<endl<<endl;}else if(choices == 2)howClientMessage();mendDingDanChoice = ();if(mendDingDanChoice==1){[curClient].changNum();}else if(mendDingDanChoice == 2){[curClient].deleFood();}else if(mendDingDanChoice == 3)break;}}else if(choices ==3)etFee());howClientMessage();etType(2);();while(true){();int choices;choices = ();if(choices==1)etName();cout<<"您选择了食物: "<<n<<endl;prices = (n);cout<<"请输入数量: ";cin>>nums;[curClient].(Food(n,prices));[curClient].addFee(nums*prices);[curClient].num[[curClient].()-1]=nums;cout<<"当前的总费用是"<<[curClient].getFee()<<endl<<endl;}else if(choices == 2)howClientMessage();mendDingDanChoice = ();if(mendDingDanChoice==1){[curClient].changNum();}else if(mendDingDanChoice == 2){[curClient].deleFood();}else if(mendDingDanChoice == 3)break;}}else if(choices ==3)etFee());howClientMessage();etName()<<"\t"<<[i].getPrice();if(i != ()-1))ioFile<<endl;}();cout<<"成功退出系统"<<endl<<endl<<endl;system("pause");return 0;}}}六:运行结果与分析从文件导入菜单,内容如下瓜丝儿10 山鸡丁儿 12 拌海蜇19 龙须菜46炝冬笋84 玉兰片27 浇鸳鸯115 烧鱼头 26烧槟子34 烧百合31 炸豆腐26 炸面筋 4拔丝山药10 糖焖莲子 18 酿山药88 山东煎饼 3草泥马100 金华火腿99运行程序,进入主界面:选择:1 顾客服务再选择1新顾客点餐登记客户信息姓名接下来弹出客户服务选择界面进入服务选择界面,选择1就餐弹出菜单,有食物编号,名称,价格选择1加菜选择食物编号0 瓜丝儿,数量3同理,再添加食物金华火腿 *1 山鸡丁儿 *4 山东煎饼 *5选择2,修改订单选择1,修改食物数量选择瓜丝儿,数量修改为1选择2 删除食物山东煎饼修改后的订单如上,选3退出修改,再选3提交订单,此时输出客户订单信息,并返回主界面,如下所示同理,继续添加客户如下现在点1,顾客服务 2查询订单,查询猪八戒的订单订单排在第3,这里就餐和外卖进行了排序,就餐在外卖前面,就餐和外卖则按照先后顺利排列选择2:退出订单查询选择2,食物管理添加食物冰糖葫芦价格46,结果如下多出了第18道菜,冰糖葫芦选择2,修改食物价格,把浇鸳鸯的价格改为1先择3 删除食物草泥马改变后的菜单列表如下选择4,退出食物管理进入主菜单选择3 今日反馈显示今日的销售额,显示所有订单详情,按照就餐和外卖先后顺序排序选择4 退出系统七:心得与体会通过设计这个自主点餐系统,我对C++面向对面的思想和对于类的运用有了更深的理解。

c语言点餐系统实训报告

c语言点餐系统实训报告

c语言点餐系统实训报告本报告旨在介绍c语言点餐系统实训的目的和背景,并概括说明报告的结构。

点餐系统是一种常见的应用程序,可以帮助餐厅提高工作效率和顾客体验。

通过实现一个简单的c语言点餐系统,我们可以加深对c语言程序设计的理解,并掌握系统开发的基本方法和技巧。

本报告将分为以下几个部分:实训目的:阐述我们进行此实训的目的,以及期望达到的研究效果。

方案设计:介绍我们设计点餐系统的基本思路与方法,包括所需功能和用户界面设计。

程序实现:详细说明我们在实训过程中所使用的c语言编程技术和工具,以及程序实现的具体步骤。

功能测试:描述我们对点餐系统进行的功能测试,以验证系统的正确性和稳定性。

总结和展望:总结本次实训的收获和问题,并展望未来可能的优化和改进方向。

通过本报告的阅读,读者将了解到点餐系统实训的背景、目的和结构,以及我们在实训过程中所遇到的挑战和解决方法。

同时,读者还可以对c语言程序设计和系统开发有一个简单的认识,并通过点餐系统实战掌握更多实际的编程技巧和经验。

本部分将对点餐系统的功能需求和非功能需求进行分析,包括用户界面、数据存储、订单管理等方面的要求。

功能需求用户界面:系统应提供简洁直观的用户界面,方便用户浏览菜单、选择菜品和提交订单等操作。

菜单管理:系统应能够展示餐厅的菜单信息,包括菜品名称、价格、描述等,并支持菜单的查询、编辑和更新。

订单管理:系统应能够处理顾客的点餐请求,包括接收订单、记录订单详情、计算订单金额,并提供相应的订单状态跟踪功能。

数据存储:系统应能够可靠地存储菜单数据和订单数据,以便于后续查询和统计分析。

非功能需求可靠性:系统应具备较高的稳定性和可靠性,能够在高并发情况下正常运行,并且能够处理异常情况,如网络故障或数据丢失等。

安全性:系统应采取必要的安全措施,保护用户的隐私信息和订单数据,防止未经授权的访问和篡改。

性能:系统应能够在合理的时间范围内响应用户的操作,快速加载菜单信息和处理订单请求。

c语言课程设计校园饭卡

c语言课程设计校园饭卡

c语言课程设计校园饭卡一、教学目标本章节的教学目标是使学生掌握C语言编程的基本知识,能够运用C语言设计简单的校园饭卡管理系统。

具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。

2.技能目标:学生能够运用C语言编写简单的校园饭卡管理系统,包括用户注册、登录、充值、消费等功能。

3.情感态度价值观目标:培养学生对编程的兴趣和热情,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。

二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及校园饭卡管理系统的需求分析、设计、实现和测试。

具体安排如下:1.第一课时:C语言的基本语法和数据类型。

2.第二课时:运算符和控制结构。

3.第三课时:函数和校园饭卡管理系统的设计。

4.第四课时:校园饭卡管理系统的实现和测试。

三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。

1.讲授法:用于讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。

2.案例分析法:通过分析校园饭卡管理系统的需求,引导学生学会分析问题、解决问题。

3.实验法:让学生动手编写校园饭卡管理系统,提高学生的编程能力和实践能力。

四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用《C程序设计原理与应用》作为主教材,辅助以《C语言编程实例解析》等参考书。

2.多媒体资料:制作PPT课件,展示C语言编程的基本知识和校园饭卡管理系统的界面及功能。

3.实验设备:为学生提供计算机、网络和编程环境,让学生能够动手编写和测试校园饭卡管理系统。

五、教学评估本章节的教学评估主要包括平时表现、作业和考试三个部分,以全面、客观、公正地评估学生的学习成果。

1.平时表现:通过观察学生在课堂上的参与程度、提问回答、合作交流等表现,评估学生的学习态度和积极性。

2.作业:布置与本章节内容相关的编程作业,评估学生的编程能力和对知识的掌握程度。

C语言订餐系统

C语言订餐系统

#include <>#include <>#include <>struct consumer{char stu_name[30],stu_Place[20];xt");xt","a+");xt");FILE *fp;if((fp=fopen,"r"))==NULL)xt");FILE *fp;if((fp=fopen,"r"))==NULL)xt","a+"))==NULL){printf("fail");exit(0);}fprintf(fp2,"%s",reason);fclose(fp2);strcat,".txt");FILE *fp;if((fp=fopen,"r"))==NULL)xt");FILE *fp=fopen,"a+");xt","a+"))==NULL){printf("fail");exit(0);}fprintf(fp1,"%s",evaluate);fclose(fp1);fprintf(fp,"%s\n",evaluate);fclose(fp);printf("评价成功,欢迎下次再来");}int main(){int choice,x=1;while(1){printf(" ================ =============== \n\n");printf(" 订餐管理系统\n");printf(" +++++++++++++++++++++++ ++++++++++++++++++++++ \n\n");printf(" | 1-订餐| ++++++++++ | 2-查询|\n");printf(" | 3-删除| ++++++++++ | 4-评价|\n");printf(" | 0-结束|\n");printf(" ================= ===============\n");printf("请选择所要选择的功能: ");scanf("%d",&choice);getchar();switch(choice){case 0:printf("结束本次订餐,请继续操作或欢迎下次再来\n");exit(0);case 1:reserve();break;case 2:find();break;case 3:deletes();break;case 4:appraise();break;default:printf("您的输入有误,请重新输入!\n");getchar();break;}}return 0;}。

订餐统计系统c语言课程设计

订餐统计系统c语言课程设计

订餐统计系统c语言课程设计一、课程目标知识目标:1. 理解C语言中数据类型、变量和常量的概念,掌握基本的数据存储和处理方式;2. 学会使用C语言中的控制结构,如条件语句和循环语句,实现对订餐统计系统的逻辑控制;3. 掌握C语言中数组的使用,实现对大量订餐数据的存储和管理;4. 了解结构体类型,学会使用结构体存储订餐系统的相关信息。

技能目标:1. 能够运用C语言编写简单的订餐统计系统程序,实现数据的输入、处理和输出;2. 能够运用所学知识分析和解决实际问题,具备一定的编程实践能力;3. 能够阅读和分析C语言程序,理解程序的功能和逻辑结构,为后续学习打下基础。

情感态度价值观目标:1. 培养学生编程的兴趣和热情,激发他们探索计算机科学领域的欲望;2. 培养学生的团队协作精神,使他们学会与他人合作共同解决问题;3. 培养学生严谨、细心的学习态度,提高他们的逻辑思维能力;4. 引导学生关注信息技术在日常生活中的应用,认识到编程对解决实际问题的价值。

本课程针对高年级学生,结合C语言学科特点,以订餐统计系统为实际案例,旨在使学生掌握C语言的基本知识和编程技能,培养他们分析问题和解决问题的能力。

通过本课程的学习,学生将能够运用所学知识独立设计并实现简单的订餐统计系统,同时培养他们的团队协作能力和情感态度价值观。

教学要求注重理论与实践相结合,强调动手实践,使学生在实践中掌握知识,提高技能。

二、教学内容1. C语言基础知识回顾:- 数据类型、变量和常量的定义和使用;- 运算符和表达式的运用;- 输入输出函数的使用。

2. 控制结构:- 条件语句(if-else,switch-case);- 循环语句(for,while,do-while)。

3. 数组和字符串:- 一维数组、二维数组的定义和使用;- 字符串的基本操作。

4. 函数:- 函数的定义、声明和调用;- 递归函数的编写与调用。

5. 结构体:- 结构体的定义和使用;- 结构体数组的操作。

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

C语言餐饮结账管理系统设计C语言餐饮结账管理系统设计一、设计背景及目的随着餐饮业的快速发展,餐饮行业的管理也越来越重要。

目前,很多餐饮企业存在管理不规范、效率低下等问题,如收银管理不当、点菜混乱、服务不周等。

为了提升餐饮企业的管理水平和效率,我们设计了一款C语言餐饮结账管理系统。

该系统旨在提供一个便捷、快速、简单的工具,帮助餐厅进行收银管理,规范点菜和服务流程,提高餐厅运营效率和服务品质。

二、系统设计思路与功能1、系统设计思路本系统采用C语言作为开发语言,运用文件、结构体、数组等知识设计,可以实现点菜管理、收银管理、数据统计等功能。

2、系统功能(1)菜单管理:管理员可以在系统中添加、修改、删除菜单,设置菜品的名称、价格、口味和图片等信息。

(2)点菜管理:顾客可以在系统中浏览菜单、选择菜品和份数,系统能够根据选择的菜品和份数自动计算出总价,并打印出点菜清单。

(3)收银管理:收银员可以在系统中根据点菜清单,输入顾客支付的金额,然后系统可以自动计算出找零,并打印出收据。

(4)数据统计:系统可以根据菜品的销量、收入等信息,生成各种报表和图表,以帮助管理员更好地了解餐厅的运营情况。

三、系统的实现1、系统的开发环境本系统的开发环境为windows10系统,使用IDE为Code::Blocks。

2、系统的实现方案(1)界面设计系统的界面主要包括登录、主界面、菜单管理、点菜管理、收银管理和报表统计等模块。

所有模块都应该采用统一的风格,方便用户使用。

(2)数据存储本系统采用文件存储的方式,数据存储包括菜单数据、点菜记录、订单数据等。

(3)功能实现系统的具体功能实现如下:1.登录系统:要求用户输入用户名和密码。

2.菜单管理:可以添加、修改、删除菜单等功能,并保存到文件中。

3.点菜管理:在菜单界面上显示菜单,顾客可以选择菜品和份数,系统会自动计算出呈现订单的总价,并存储点菜记录到文件中。

4.收银管理:在点菜界面上显示订单清单,在输入总金额后,系统会自动计算出找零,输出收据,并将订单信息保存到文件中。

C语言点餐系统

餐厅点菜系统——点菜功能一.问题分析餐厅点菜系统主要功能包括录入菜单功能,菜单浏览功能及点菜功能。

在点菜功能中,主要完成对录入菜单的输出,及顾客点菜信息的录入。

故在点菜这一环节中,需要:1.在屏幕上输出菜单信息;2.从键盘中输入菜品编号;3.根据编号查找菜品信息;4.在屏幕上输出菜品信息;5.判断顾客继续点菜,还是结束;二.算法设计1.在点菜环节中,主要包括display()、Select()两个函数。

在display()函数中,主要实现输出菜单信息的功能,即功能1。

在Select()函数中,主要实现输入菜品编号、查找菜品信息、输出菜品信息、判断顾客继续点菜,还是结束等功能,即功能2、3、4、5。

2.display()函数中,两个简单的输出函数,输出提示信息,再用for 语句,循环对文件中的数据一个个读取,输出已录入的菜单信息。

3.Select()函数中,先输出提示语句,要求顾客输入菜品编号,根据顾客输入的编号,再用for语句,循环对文件中的数据一个个读取,用if语句判断,若检索到对应编号,输出菜品信息,再提示顾客继续选菜,若超出菜单编号,输出提示语句,接着是switch语句,根据顾客要求,结束还是继续,若继续,则再重新运行Select()函数,若停止,则按任意键返回主菜单。

三.算法实现a.点菜过程中主要步骤:1.进入点菜界面,程序输出菜单信息,如:*********欢迎选购本店菜**********编号菜名单价1 炒青菜8总价82.接着输出提示语句,如:*********欢迎点菜**********请输入您要订购的菜品编号3.根据菜单信息,顾客输入菜单编号,根据编号,查找菜品。

4.查找到菜品,输出信息,如编号菜名单价1 炒青菜85.若没有查找到,则输出对不起,查无此菜6.完成4或5步骤后,输出点菜结束按1,继续点菜请按27.顾客根据要求,选择1,则输出点菜结束,您的订单已提交到大厨,正在为您精心烹饪中....祝您用餐愉快!并且中止运行,按任意键,返回主界面。

C课程设计自助点餐系统

面向对象程序课程设计(2014/2015 学年第一学期第20 周)指导教师:庄巧莉、杨东鹤班级:计算机科学与技术13(1)学号:姓名:面向对象程序课程设计目录一、题目二、需求分析三、系统结构图四、类的设计五、程序代码与说明六、运行结果与分析七、心得与体会:题目自助点餐系统二:需求分析有一个小型餐厅,该餐厅提供即时就餐和外卖服务。

现在这个餐厅打算使用自助点餐系统,让顾客自己点餐,实现以下功能。

1、根据顾客的选择正确打出账单2、正确统计出每一天的及时就餐和外卖的销售情况3、实现对餐厅菜式和价格的有效管理4、考虑点餐的自动排序问题,使顾客可以实时查询到自己菜单处理情况三:系统结构图四:类的设计Client 类:客户类,包含客户属性姓名,电话号码,费用等信息,登记客户,记录客户订单信息ClientManager 类:客户管理类,用于管理客户,记录客户数量,存储客户菜单信息,查询客户订单信息,统计订单FeeMa nage啖:用于记录就餐、外卖的销售费用,统计收入Food 类:餐厅食物的类,包含食物名称和价格FoodManager 类:管理菜单,用于添加食物,修改食物,删除食物,记录不同食物的信息,呈现菜单Menu View类:用于打印各种操作界面五:程序代码与说明Client.h#ifndef CLIENT#define CLIENT #include"FoodManager.h"#include<iostream> using namespace std; class Client {private:int number; // 客户编号int type;// 客户的类型,1表示就餐,2 表示外卖double fee; // 客户账单费用char *name; // 客户名称char *phone; // 客户手机号码public:char * getName(); // 返回客户姓名int num[100]; //num[i] 存储食物数量,i 表示食物编号FoodManager client_fm; // 管理客户所点的食物Client(char *n,char *p);// 构造函数int getNumber(); // 返回客户编号void setNumber(int n); // 设置客户编号int getType(); // 返回客户类型void setType(int n); // 设置客户类型void addFee(double x); // 添加费用double getFee(); // 返回费用void showClientMessage();// 展示客户信息void changNum(); // 修改客户所点的食物的数量void deleFood(); // 删除客户所选择的食物};#endifClient.cpp #include"Client.h"#include<iomanip>Client::Client(char *s,char *p){name = s;phone = p;fee = 0;for(int i = 0 ; i < 100 ; i++)num[i] = 0 ;cout<<" 客户注册成功"<<endl; }int Client::getNumber(){return number;void Client::setNumber(int n){number = n;}int Client::getType(){return type;}void Client::setType(int n){type = n;}void Client::addFee(double x) {fee += x;double Client::getFee(){return fee;}void Client::showClientMessage(){char * ss;if(type == 1)ss = " 就餐";else if(type == 2)ss = " 外卖";cout<<" 姓名: "<<name<<"\t\t"<<ss<<endl;cout<<" 手机号码: "<<phone<<endl;cout<<" 订单总价:"<<fee<<endl;cout<<" 订单详情:"<<endl;cout<<setw(10)<<setiosflags(ios::left)<<" 食物序列"vvsetw(10)v<setiosflags(ios::left)vv" 菜名"<<"\t 数量\t 价格"<<endl;for(int i = 0 ; i < client_fm.getTotal() ; i ++)cout<<setw(10)<<setiosflags(ios::left)<<setw(10)<<i+1<<setiosflags(ios::left)<<client_fm.food[i].getName()<<"\t"<<num[i]<<"\t"<<num[i]*client_fm.food[i] .getPrice()<<endl;}cout<<" 总价:\t\t"<<fee<<endl;}char * Client::getName(){return name;}void Client::changNum(){int n;int numss;cout<<" 请输入食物序号:";cin>>n;cout<<" 您选择了食物:"<<client_fm.getNameByList(n-1)<<endl;cout<<" 请输入数量:";cin>>numss;fee += (numssnum[n-1] )*client_fm.getPriceByName(client_fm.getNameByList(n-1));num[n-1]=numss;}void Client::deleFood(){int n;cout<<" 请输入食物序号:";cin>>n;cout<<" 您选择了食物:"<<client_fm.getNameByList(n-1)<<endl;fee -= (num[n-1] )*client_fm.getPriceByName(client_fm.getNameByList(n-1));for(int i = n-1 ; i < client_fm.getTotal() ; i ++){client_fm.food[i]=client_fm.food[i+1];num[i]=num[i+1];}client_fm.setTotal(client_fm.getTotal()-1);ClientManager.h #ifndef CLIENTMANAGER#define CLIENTMANAGER#include"Client.h" #include<iostream>using namespace std;#define MAX_CLIENT_NUM 60 // 最大客户数量class ClientManager {public:ClientManager(); // 构造函数// 记录客户数量// 记录存储客户// 添加新客户int clientNum ;Client client[MAX_CLIENT_NUM]; void addClient(Client c);void showQuery(char * s); // 查询客户void showAll();// 显示所有客户};#endifClientManager.cpp#include"ClientManager.h"ClientManager::ClientManager(){clientNum = 0;}void ClientManager::addClient(Client c){client[clientNum++] = c;cout<<" 客户注册成功"<<endl;}return clientNum;}void ClientManager::showQuery(char * s){int count = 0;int th;cout<<" --------------------------------- "<<endl;for(int i = 0; i < clientNum ; i ++) if(client[i].getType()==1){cout<<" 第"<<++count<<" 单: "<<client[i].getName()<<"\t总价是:"vvclie nt[i].getFee()<<" 元"<<"\t 就餐"<<e ndl«e ndl;if(strcmp(client[i].getName(),s)==0)th =count;}if(client[i].getType()==2)总价是:cout<<" 第"<<++count<<" 单: "<<client[i].getName()<<"\t"vvclie nt[i].getFee()<<" 元"<<"\t 外卖"<<e ndl«e ndl;if(strcmp(client[i].getName(),s)==0)th =count;}coutvv"您当前排在第"vvthvv"单"<<endl;cout<<" --------------------------------- "<<endl;}void ClientManager::showAll(){for(int i = 0 ; i < clientNum ; i ++ ){if(client[i].getType()==1){cout<<" 订单号:"<<i+1<<endl;client[i].showClientMessage();cout<<endl;}for(int i = 0 ; i < clientNum ; i ++ ){if(client[i].getType()==2){cout<<" 订单号:"<<i+1<<endl;client[i].showClientMessage();cout<<endl;}}}Food.h#ifndef FOOD#define FOOD class Foodprivate:char *name;double price;public:Food(){};Food(char *s,double p); //void setName(char *s);char* getName();double getPrice();void setPrice(double p); //void showMessage(); // 食物名称食物价格构造函数构造函数更改食物名称返回食物名称// 返回食物价格设置食物价格// 显示食物的名称和价格};#endifFood.cpp #include"Food.h"////// //#include<iostream> using namespace std; Food::Food(char *s,double p){name = s;price = p;}void Food::setName(char *s){name = s;}void Food::setPrice(double p){price = p;}void Food::showMessage()cout<<name<<"\t"<<price<<"?"<<endl; }double Food::getPrice(){return price;}char* Food::getName(){return name;}FoodManager.h#ifndef FOODMANAGER#define FOODMANAGER#include"Food.h"class FoodManager {int total ;public:FoodManager();int getTotal() ;Food food[MAX_FOOD_NUM];void addFood(Food f);void addFood(char *s,double p);void deleteFood();void changePrice();void showFood();char * getNameByList(int list);double getPriceByName(char *s); intgetListByName(char *s);void setTotal(int x);// 食物种类数// 构造函数// 返回食物种类数// 记录食物// 添加食物// 添加食物// 删除食物// 修改食物价格// 显示食物信息// 通过食物编号返回食物名称// 通过食物名称返回食物价格// 通过食物名称返回食物编号};#endifFoodManager.cpp#include"FoodManager.h"#include<iostream>using namespace std;#include<iomanip>FoodManager::FoodManager(){total = 0;}void FoodManager::addFood(Food f){food[total++]=f;"<<total<<endl;cout<<" 成功添加了食物,当前共有void FoodManager::showFood(){cout<<" 食物中共有"<<total<<" 种"<<endl;cout<<" 食物编号"<<" 名称\t\t"<<" 单价"<<endl;for(int i = 0 ; i < total ; i ++ )cout<<setw(10)<<setiosflags(ios::left)<<i<<setw(10)<<setiosflags(ios::left )<<food[i].getName()<<"\t"<<food[i].getPrice()<<endl;}void FoodManager::changePrice(){char *s;int code;s = new char[20];double p;cout<<" 请输入食物编号: ";cin>>code;s = food[code].getName();cout<<" 您选择了食物:"<<s<<endl;cout<<" 请输入价格: ";cin>>p;for(int i = 0; i < total ; i ++)if(strcmp(food[i].getName(),s)==0){food[i].setPrice(p);cout<<" 修改成功"<<endl;return;}cout<<" 没有这种食物,修改失败"<<endl; }void FoodManager::deleteFood()char *s;s = new char[20];cout<<" 请输入菜名: ";cin>>s;for(int i = 0 ; i < total ; i ++)if(strcmp(food[i].getName(),s)==0){cout<<" 成功删除"<<s<<endl;total --;for(int t = i; t < total ; t ++)food[t]=food[t+1];return;}cout<<" 没有这种食物"<<endl;}void FoodManager::addFood(char *s , double p) food[total++]=Food(s,p);}double FoodManager::getPriceByName(char *s) {for(int i = 0 ; i < total ; i ++)if(strcmp(food[i].getName(),s)==0) return food[i].getPrice();return false;}int FoodManager::getListByName(char *s){for(int i = 0 ; i < total ; i ++)if(strcmp(food[i].getName(),s)==0)return i;return false;int FoodManager::getTotal(){return total;}char * FoodManager::getNameByList(int list) {return food[list].getName();}void FoodManager::setTotal(int x){total = x;}FeeManager.h#ifndef FEEMANAGER#define FEEMANAGER class FeeManagerprivate:double jiuCanFee; //double waiMaiFee;public:FeeManager();double getWaiMaiFee();double getJiuCanFee();void addWaiMaiFee(double x);void addJiuCanFee(double x); };#endifFeeManager.cpp#include"FeeManager.h" FeeManager::FeeManager()就餐总收入// 外卖总收入// 构造函数// 返回外卖总收入// 返回就餐总收入// 增加外卖总收入// 添加就餐总收入waiMaiFee = 0;}double FeeManager::getWaiMaiFee(){return waiMaiFee;}double FeeManager::getJiuCanFee(){return jiuCanFee;}void FeeManager::addWaiMaiFee(double x) {waiMaiFee += x;}void FeeManager::addJiuCanFee(double x)}MenuView.h#ifndef MENUVIEW#define MENUVIEW class MenuView{private:char whiteSmile;char blackSmile;char heart;public:MenuView();void showJiuCan();void showWaiMai(); // 显示外卖用户点菜界面// 白色笑脸// 黑色笑脸// 心形图形// 构造函数// 显示就餐用户点菜界面int showMain(); // 显示用户选择就餐还是外卖界面int showViewChoice();int showRegister();int showClientChoice();int showQuery();int showMend();int showMenuChoice();int showMendDingDan(); };#endifMenuView.cpp#include"MenuView.h"#include<iostream> using namespace std;MenuView::MenuView()// 显示进入本系统的功能选择界面// 显示客户注册界面// 显示客户点餐界面// 显示查询客户订单界面// 显示修改食物界面// 显示选择菜单界面// 显示客户修改订单界面whiteSmile = 1;blackSmile = 2;heart = 3;}int MenuView::showMain(){for(int i = 1 ; i <= 80 ; i++ )cout<<heart;for(int i = 1;i<=80;i++){if(i==1||i==80)cout<<heart;else cout<<' ';}cout<<heart<<"\t\t\t\t 欢迎光临本餐厅";for(int j=1;j<=33;j++)cout<<' ';cout<<heart;for(int i = 1;i<=80;i++){if(i==1||i==80)cout<<heart;else cout<<' ';}for(int i = 1 ; i <= 80 ; i++ )cout<<heart;// 输出餐厅的外形cout<<endl<<endl;cout<<"\t 我是服务员小坠"<<whiteSmile<<", 竭诚为您服务哦"<<blackSmile<<endl<<endl<<endl;for(int k=1;k<=10;k++)cout<<' ';for(int k=1;k<=10;k++)cout<<' ';cout<<heart<<" 请选择您需要的服务"<<heart<<endl;for(int k=1;k<=10;k++)cout<<' ';for(int i = 1 ; i <= 60 ; i++ )cout<<heart;cout<<endl;for(int k=1;k<=10;k++)cout<<' ';cout<<heart<<"1: 就餐";for(int i = 1 ; i <= 52 ; i ++ )cout<<' ';cout<<heart<<endl;for(int k=1;k<=10;k++)cout<<' ';cout<<heart<<"2: 外卖";for(int i = 1 ; i <= 52 ; i ++ )cout<<' ';cout<<heart<<endl;for(int k=1;k<=10;k++)cout<<' ';for(int i = 1 ; i <= 60 ; i++ )cout<<heart;cout<<endl<<endl;for(int i = 1;i<=7;i++)cout<<endl;int choice;cin>>choice;return choice;}void MenuView::showJiuCan(){cout<<" 欢迎就餐,本餐厅有以下食品供您品尝"<<whiteSmile<<endl; }int MenuView::showViewChoice(){for(int i = 1 ; i <= 80 ; i++ )cout<<heart;for(int i = 1;i<=80;i++){if(i==1||i==80)cout<<heart;else cout<<' ';}cout<<heart<<"\t\t\t\t 陈旺均特色餐厅";for(int j=1;j<=33;j++)cout<<' ';cout<<heart;for(int i = 1;i<=80;i++){if(i==1||i==80)cout<<heart;else cout<<' ';}for(int i = 1 ; i <= 80 ; i++ )cout<<heart;cout<<"| 1: 顾客服务|"<<endl;cout<<"| 2: 食物管理|"<<endl;cout<<"| 3: 今日反馈|"<<endl;cout<<"| 4: 退出系统|"<<endl;cout<<" ----------------------- "<<endl;cout<<" 您的选择是: ";int next;cin>>next;cout<<endl;return next;}int MenuView::showRegister(){cout<<" ----------------------- "<<endl;cout<<" ----------------------- "<<endl;int next;cin>>next;return next;}int MenuView::showClientChoice() {cout<<" ----- ---------------- "<<endl; cout<<"| 1: 加菜|"<<endl; cout<<"| 2: 修改订单|"<<endl; cout<<"| 3: 提交订单|"<<endl; cout<<" ----- ---------------- "<<endl;int next;cin>>next;return next;int MenuView::showQuery(){-"<<endl;cout<<"----------------cout<<"| 1: 查询订单|"<<endl; cout<<"| 2: 退出查询|"<<endl;cout<<"-"<<endl;----------------int next;cin>>next;return next;}int MenuView::showMend(){cout<<"-"<<endl;-------------------------------cout<<"| 1: 添加食物|"<<endl; cout<<"| 2: 修改价格|"<<endl;cout<<"| 4: 退出食物管理|"<<endl; cout<<" "<<endl;int next;cin>>next;return next;}int MenuView::showMenuChoice(){cout<<" 添加菜单:"<<endl;cout<<" ----------------------- "<<endl;cout<<"| 1: 原菜单|"<<endl; cout<<"| 2: 更新后的菜单|"<<endl; cout<<" "<<endl;int next;cin>>next;return next;}int MenuView::showMendDingDan(){cout<<" ----------------------- "<<endl; cout<<"| 1: 修改数量|"<<endl; cout<<"| 2: 删除食物|"<<endl; cout<<"| 3: 退出修改|"<<endl;cout<<"-"<<endl;---------------int next;cin>>next;return next;}Main.cpp#include<iostream> #include"Food.h"#include"MenuView.h" #include"FoodManager.h"#include"ClientManager.h"#include"FeeManager.h"#include<fstream>#include<iomanip>using namespace std;int main(){FeeManager feem;// 管理就餐和外卖的费用MenuView mv; // 管理界面ClientManager cm; // 管理客户的类的对象FoodManager fm;// 管理食物的类的对象fstream ioFile; // 文件输入输出int clientChoice;// 1 服务顾客2 食物管理 3 今日反馈 4 退出系统int mainChoice;// 1 就餐 2 外卖int curClient; // 当前操作的顾客编号int queryChoice;//1 查询订单 2 退出查询int foodChoice;//1 添加食物 2 修改食物价格3 删除某种食物 4 退出食物管理int viewChoice;//1 顾客服务 2 食物管理 3 今日反馈4 退出系统int menuChoice;//1 原菜单 2 更新后菜单int mendDingDanChoice;//1 修改数量 2 删除食物 3 退出修改ioFile.open("C:\\Users\\Administrator\\Desktop\\food.txt",ios::in); while(!ioFile.eof()){char *s;double p;s=new char[20];ioFile>>s>>p;fm.addFood(s,p);ioFile.close();// 以上是从文件读入食物的种类和价格信息while(true){viewChoice = mv.showViewChoice();if(viewChoice == 1) // 顾客服务{clientService = mv.showRegister();if(clientService == 1)// 用户注册{char *name,*phone;name = new char[30];phone = new char[20];cout<<" 请完善客户资料"<<endl;cout<<" 您的订单号是"<<cm.getClientNum()+1<<endl; curClient =cm.getClientNum();cout<<" 请输入姓名: ";cin>>name;cout<<" 请输入手机号码: ";cin>>phone;Client cc(name,phone);cc.setNumber(cm.getClientNum());cm.addClient(cc);mainChoice = mv.showMain();if(mainChoice == 1) // 就餐{cm.client[curClient].setType(1);mv.showJiuCan();while(true){fm.showFood();int choices;choices = mv.showClientChoice();if(choices==1)// 选择食物种类和数量,下单char *n;int code;n = new char[20];int nums;double prices ;cout<<" 请输入食物编号: ";cin>>code;n = fm.food[code].getName();cout<<" 您选择了食物:"<<n<<endl;prices = fm.getPriceByName(n);cout<<" 请输入数量: ";cin>>nums;cm.client[curClient].client_fm.addFood(Food(n,prices));cm.client[curClient].addFee(nums*prices);cm.client[curClient].num[cm.client[curClient].client_fm.getTotal()-1]=numscout<<" 当前的总费用是"<<cm.client[curClient].getFee()<<endl<<endl;else if(choices == 2)// 修改订单{cout<<" 您当前的订单是:"<<endl;while(true){cm.client[curClient].showClientMessage();mendDingDanChoice = mv.showMendDingDan();if(mendDingDanChoice==1){cm.client[curClient].changNum();}else if(mendDingDanChoice == 2){cm.client[curClient].deleFood();}else if(mendDingDanChoice == 3)break;}else if(choices == 3)// 提交订单break;}feem.addJiuCanFee(cm.client[curClient].getFee());// 增加就餐总费用cout<<" 您的订单是:"<<endl;cm.client[curClient].showClientMessage();// 输出当前订单}else if(mainChoice == 2) // 外卖{cm.client[curClient].setType(2);mv.showJiuCan();while(true){fm.showFood();int choices;choices = mv.showClientChoice();if(choices==1)// 选择食物种类和数量,下单{char *n;int code;n = new char[20];int nums;double prices ;cout<<" 请输入食物编号: ";cin>>code;n = fm.food[code].getName();cout<<" 您选择了食物:"<<n<<endl;prices = fm.getPriceByName(n);cout<<" 请输入数量: ";cin>>nums; cm.client[curClient].client_fm.addFood(Food(n,prices));cm.client[curClient].addFee(nums*prices);cm.client[curClient].num[cm.client[curClient].client_fm.getTotal()-1]=numscout<<" 当前的总费用是"<<cm.client[curClient].getFee()<<endl<<endl;}else if(choices == 2)// 修改订单{cout<<" 您当前的订单是:"<<endl;while(true){cm.client[curClient].showClientMessage();mendDingDanChoice = mv.showMendDingDan();if(mendDingDanChoice==1){cm.client[curClient].changNum();}cm.client[curClient].deleFood();}else if(mendDingDanChoice == 3)break;}}else if(choices == 3)// 提交订单break;}feem.addWaiMaiFee(cm.client[curClient].getFee());// 增加就总费用餐cout<<" 您的订单是:"<<endl;cm.client[curClient].showClientMessage();// 输出当前订单}}// 用户注册while(true){queryChoice = mv.showQuery();if(queryChoice == 1) // 查询客户订单信息{cout<<" 请输入您的姓名:"<<endl;char *s;s = new char[20];cin>>s;cm.showQuery(s);}else if(queryChoice == 2)break; // 退出查询}}}while(true){fm.showFood();foodChoice = mv.showMend();if(foodChoice == 1) // 添加食物{char *n;double p;n = new char[20];cout<<" 请输入食物名称:";cin>>n;cout<<" 请输入食物价格:";cin>>p; fm.addFood(Food(n,p)); }else if(foodChoice == 2)// 修改食物价格fm.changePrice();}else if(foodChoice == 3)// 删除食物{fm.deleteFood();}else if(foodChoice == 4)break; // 退出食物管理}}else if(viewChoice == 3)// 今日反馈{cout<<" 今天共有"<<cm.getClientNum()<<" 人消费,销售总额共"vvfeem.getJiuCa nF ee()+feem.getWaiMaiFee()<<"元"<<e ndl;cout<<" 其中就餐总额为"<<feem.getJiuCanFee()<<" 元,";cout«"外卖总额为"<vfeem.getWaiMaiFee()vv"元"<<endl«endl;cout<<" ------------------------------------- "<<endl;cm.showAll();else if(viewChoice == 4)// 退出系统{//ioFile.open("D:\\food.txt",ios::out);ioFile.open("C:\\Users\\Administrator\\Desktop\\food.txt",ios::out);for(int i = 0 ; i < fm.getTotal() ; i ++){ioFile<<setw(10)<<setiosflags(ios::left)<<fm.food[i].getName()<<"\t"<<fm.f ood[i].getPrice();if(i != (fm.getTotal()-1))ioFile<<endl;}ioFile.close();cout<<" 成功退出系统"<<endl<<endl<<endl;system("pause");return 0;}}六:运行结果与分析从food.txt 文件导入菜单,food.txt 内容如下。

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

C语言餐饮结账管理系统设计一、引言餐饮结账管理系统是一种用于餐馆、饭店等餐饮场所的结账管理工具,旨在提高结账效率,减少人力成本,并能够实时统计销售数据和财务情况。

本文就C语言餐饮结账管理系统的设计进行详细介绍。

二、系统需求分析1.系统功能需求:(1)菜单管理:包括菜品的添加、修改、删除,以及菜品的分类管理。

(2)点餐管理:顾客可以通过系统浏览菜单并下单,系统自动生成顾客订单。

(3)结账管理:包括账单的生成、修改、打印功能,并自动计算顾客的消费总额。

(4)财务管理:系统可以实时统计销售数据,包括每日、每周、每月、每年的销售额,以及各类菜品的销售情况。

(5)权限管理:系统可以根据用户权限进行登录和操作控制。

2.系统界面需求:(1)欢迎界面:系统启动后显示欢迎界面,包括系统名称、开发者信息等。

(2)登录界面:用户可以输入用户名和密码进行登录。

(3)主界面:登录后显示主界面,包括菜单管理、点餐管理、结账管理、财务管理等功能区。

3.系统性能需求:(1)响应速度:系统应具备快速响应用户操作的能力。

(2)稳定性:系统应具备稳定运行的能力,不易崩溃或出现错误。

三、系统设计1.数据库设计:系统使用数据库来存储菜单、订单、账单等数据。

数据库中应设立相应的表来存储不同的数据类型,并建立关联关系。

2.模块设计:(1)用户模块:用于用户登录和权限管理。

(2)菜单模块:用于菜品的添加、修改、删除和分类管理等功能。

(3)订单模块:用于点餐管理,包括浏览菜单、下单等功能。

(4)账单模块:用于生成账单、修改账单、打印账单等功能。

(5)财务模块:用于统计销售数据,包括不同时间段的销售额、菜品销售情况等。

3.界面设计:系统界面应简洁清晰,方便用户操作。

可采用图形化界面设计,通过按钮、菜单、文本框等元素来实现用户与系统的交互。

四、系统实现1.开发工具:本系统基于C语言开发,可选择Visual Studio等集成开发环境进行编码和调试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-精品-- 1课程设计任务书 课程设计任务书课程设计任务书 课程设计任务书题目 题目题目 题目: :: :食堂就餐餐费管理系统 食堂就餐餐费管理系统食堂就餐餐费管理系统 食堂就餐餐费管理系统(1) (1)(1) (1)一 一一 一、 、、 、课程设计时间 课程设计时间课程设计时间 课程设计时间共计1周,20学时。二 二二 二、 、、 、课程设计内容 课程设计内容课程设计内容 -精品--

课程设计内容用C语言编写软件完成以下任务: 1添加学生信息; 2添加菜谱信息; 3菜谱查询; 4按学号添加餐费;三 三三 三、 、、 、课程设计要求 课程设计要求课程设计要求 课程设计要求 1.程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“添加学生信息”、“添加菜谱信息”、“菜谱查询”、 “按学号添加餐费”、“退出”5项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参

见提供的模板。四 四四 四、 、、 -精品--

、指导教师和学生签字 指导教师和学生签字指导教师和学生签字 指导教师和学生签字 指导教师 指导教师指导教师 指导教师: :: :________学生签名 学生签名学生签名 学生签名: :: :________ 五 五五 五、 、、 、说明书成绩 说明书成绩说明书成绩 说明书成绩 六 六六 六、 -精品--

、、 、教师评语 教师评语教师评语 教师评语I目 目目 目录 录录 录一、需求分析..................................................................1 二、程序流程图..............................................................1三、核心技术的实现说明及相应程序段......................6四、课设总结..................................................................9五、参考文献..................................................................9六、源程序......................................................................91一

一一 一、 、、 、需求分析 需求分析需求分析 需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为十一个模块,每 一个模块对应一个函数。在这些函数当中,添加学生数据函数,添加食谱函数,就餐 买单函数,餐费查询函数的实现严格按照题目的要求,而更改数据函数和显示函数属 于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及 菜单函数控制程序的整体运行。 1.添加学生数据函数主要实现程序最初运行时学生数据的录入以及其后的运行中 学生数据的追加功能; -精品--

2.添加食谱数据函数主要实现程序最初运行时食谱数据的录入以及其后的运行中 食谱数据的追加功能; 3.删除学生数据函数实现的功能是按照学号对学生的数据记录进行删除; 4.菜谱查询函数按照题目的具体要求实现的是学生就餐及每次餐费累加的更新。 5.餐费查询函数允许按照学号对学生的总餐费进行查询; 6.显示学生数据函数实现的是显示目前所有的有效学生记录信息。 7.显示食谱信息函数实现的是显示目前所有的有效食谱记录信息。 除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环 执行所有的功能,并根据需要终止程序的执行。 每一个学生记录都包含学号、姓名,以及餐费,在程序当中,将学生(食谱)记 录类型定义为结构体类型,添加以及追加的学生(食谱)信息直接写入E盘的student (caipu).txt文件中,其它函数每次对学生(食谱)记录的访问,其数据来源都是student (caipu).txt文件,这样做不但可以保证学生(食谱)数据的一致性,而且可以对学 生(食谱)数据进行永久保存,保证每次运行程序都可以采用原来的数据。二 二二 二、 、、 、程序流程图 程序流程图程序流程图 程序流程图1.程序总体结构图2图1程序总体结构图2.具体功能框图 (1)添加学生(食谱)数据函数add(ad) 当1 -精品--

输入值 n=1? 真 假 添加学 生信息 函数 add() n=2? 真 假 显示学 生信息 函数 show() n=3? 真 假 删除 函数 del() 真 假 -精品--

n=4? 添加食 谱信息 函数 ad() n=5? 真 假 就餐 买单 函数 all()菜谱 查询 函数 query()n=6? 真假 显示食 谱函数 sho ()退 出 n=7?真假3以追加方式打开E盘student.txt(caipu.txt)文件成功? 真假 -精品--

以追加方式打开E盘student.txt 真(caipu.txt)文件成功假 ? 输入添加学生(食谱)数量n循环变量 i=1输出文件失败当i<=n时输入学号(编码)、姓名 (名称)和餐费(价格)返回 学生(食谱)信息写入文件 i++关闭文件图 2添加学生(食谱)数据函数(2)读取学生(食谱)数据函数reads(read)4以读方式打开E盘student.txt(caipu.txt)文件成功?

真假 循环变量i=0 文件未结束时输出文件 打开失败 读取学生(食谱)信息到数组元素stu[i](ca[i])中 i++ 关闭文件返回 返回学生(食谱)数i图 3读取学生(食谱)数据(3)删除学生记录函数del5图4删除学生记录(4)就餐买单函数all6m=read(ca)

循环变量i=0 当num2=ca[i].number q=ca[i].price -精品--

n=reads(stu) 循环变量i=0 当num1=stu[i].num Stu[i].A=q+stu[i].A save(stu,n)更新文件 输出就餐成功图5就餐买单三 三三 三、 、、 、核心技术的实现说明及相应程序段 核心技术的实现说明及相应程序段核心技术的实现说明及相应程序段 核心技术的实现说明及相应程序段本程序主要由十一个自定义函数和一个主函数组成,其中主函数以菜单的形式调

用其它函数来实现要求的所有功能。在这些函数当中,添加学生数据函数、添加食谱 数据函数、就餐买单函数和查询餐费函数是程序中较为核心的部分,下面分别进行说 明。 1.添加学生数据函数 添加数据分为两种情况,其一是在学生文件(student.txt)不存在的情况下,首先 由程序创建一个新文件,并将录入的学生信息写入该文件当中;其二是在学生文件 (student.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前 已经存在的数据不丢失。具体的程序段如下: if((fp=fopen("e:\\student.txt","a"))==NULL)//如果文件已经存在,可以追加学生信息 -精品--

{ if((fp=fopen("e:\\student.txt","w"))==NULL)//文件不存在时,创建新文件,输入学生信 息 { printf("文件打开失败!\n");7return;} } printf("请输入要添加的学生数量,按回车键确认:"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("\n请输入第%d个学生的学号、姓名、餐费,用空格分开,并按回 车键确认:\n",i); scanf("%d%s%f",&j,stu.name,&stu.A); if(j==0) break; stu.num=j; fprintf(fp,"%d%s%f\n",stu.num,stu.name,stu.A); } 2.添加食谱数据函数 添加数据分为两种情况,其一是在食谱文件(caipu.txt)不存在的情况下,首先由 程序创建一个新文件,并将录入的食谱信息写入该文件当中;其二是在食谱文件 (caipu.txt)已经存在的情况下,此时文件以追加的方式打开,这样才可以保证以前已

相关文档
最新文档