课程设计报告

发布 2022-10-01 06:35:28 阅读 1589

合肥学院。

计算机科学与技术系。

2010~2011学年第二学期。

2024年6月。

点菜系统。概括:本点菜系统可以分为老板使用和客人使用,老板使用。老板可以初始化,补充,修改,删除菜单,并且写入文件。客人可以循环点菜。

一、需求分析。

随着餐饮业的蓬勃发展,各餐馆的服务员岗位日益紧张,因此,有这个点菜系统。该点菜系统无需服务员服务,菜的名称,类别,介绍,**等等信息都会显示在电脑上,通过电脑点菜。

二、算法设计。

1.设计思想:

⑴、程序结构(流程图)

点菜。录入。有。是。

否 是否。

、重要的数据结构。

typedef struct cmenu

int num;/*菜品编号*/

char fname[10]; 菜系名称*/

char name[10];/菜名*/

char introduce[1000];/菜的介绍*/

int price;/*菜的原始***/

float zhekou;/*若有折扣卡的折扣*/

struct cmenu *next;

cm;、主要的算法思想。

将点菜系统分为餐馆老板输入使用和客户点单使用,老板输入使用中通过链表实现菜单的初始化,补充,修改以及删除的过程。在客户使用栏中主要通过循环使客户可以不断点单,通过switch函数来实现客户对不同菜的选择以及是否又折扣等问题。

2、设计表示。

link *enter1()

初始化型录入菜的品种,即菜单的录入,写入d\文件。

link * enter2()

补充型录入菜的品种,即在原有菜单上添加菜系种类,读取d\文件,修改,覆盖。

menu1总菜单,包括选项录入和使用,录入供餐馆老板录入菜单使用,使用供客户点菜使用。

menu2()

菜品录入的菜单,menu1()中录入选项的子菜单,有初始化录入,补充录入,修改菜品,删除菜品四个选项,供餐馆老板对自己菜单的操作。

menu3()

顾客点菜菜单1,有点菜和结账两个选项供客人选择。

menu4()

顾客点菜菜单2,menu1()中点菜选项的子菜单,客人可以选择一览菜谱和按菜名点菜的两种点菜方式。

xiugai()

餐馆修改菜单中的菜,enter2()中修改选项的子函数,可供餐馆老板修改自己的菜单。

shanchu()

删除菜单中的菜,entee2()中删除选项的子函数,可供餐馆老板删除菜单中的某些菜,会先将菜单全部显示出,老板可按菜的**来选择要删除的菜。

use()客人使用,即menu3()点菜选项的子函数。

xuancai(int isdiscount, int list,float a,int * dishescountp);

用于客人选菜的函数。

11. float moneyconvert(float price);

用于客人选菜后计算本道菜所需要的钱。

12. void printdish(cm* pdish)

输出本菜信息。

13.void printdisha(int dishid)

输出选择到的菜的信息。

3、注释:针对题目中给出的要求,即:

a)实现菜名信息的录入。

b)实现**的显示。

c)实现菜的类别的显示。

d)有优惠券的要给出相应的折扣。

e)菜单打印。

该系统很好的实现了以上的要求,并针对a)提供菜名的添加,修改与删除。

三、用户手册。

1)、餐厅设置篇:进入系统,通过提示进入录入,分4个小选项,分别可以选择:

a.初始化录入(第一次录入,创建并录入最初的菜单):按提示输入菜后通过回车继续;

b.补充型录入(用于新添加菜至菜单):添加于输入方式与初始化录入相同。

c.修改(用于修改已经储存的菜单,例如更改**,名字等):会列出所有菜单中的菜,通过序号选择需要修改的内容,修改方式按提示和录入一样;

d.删除菜单(用于删除菜单中的某些菜,例如某些菜已经不做了,可以从菜单中删除):会列出所有菜单中的菜,更具提示,通过序号选择需要删除的菜。

注:以上初始化和修改全部写入根目录下的文件夹中的”文本。

2)用户篇:进入系统,通过提示进入使用,可以看到菜单列表,根据提示选择所需要的菜,可以根据提示不断的选择直到不选为止,并且可以看到自己每个菜的花费情况和总价钱。

四、编译与调试**现的问题。

1)、编译:编译中的主要问题在链表的使用,具体来说是链表的输出与修改。

(2)、调试:本次课程设计感觉问题最大的,耗时最久的也就是在调试了。调试**现的最主要的问题就是文件的写入和读取,fopen函数,fscanf函数以及fprintf函数的使用,写入的txt文本会出现乱码的情况,问题是以为写入文本的函数中fprintf与fscanf函数中地址符&乱用造成了乱码。

另外,当需要输出文本里的信息时,发现fprintf(fp,"%6d%-10s%-10s%-10s%-10d%-10f",p1->num,p1->name,p1->fname,p1->introduce,p1->price,p1->zhekou);中最后面一个%-10f和出了问题(现在已经把%-10f改成了%-8f,),因为在shuchu()子函数中fprintf()是读到文件的结束符为止,当在chushihua()中最后一次输入最后一个菜时的就会另起一行,使fprintf()得多读一个空白行才能读到结束符,所以出现了往屏幕上输出文本文件时出现了很多“屯”的情况。

然后是head指针传递的问题,因为有p=head语句,在调试的过程中经常遇见p无法被赋值,有些问题就是出在head指针上,head一直为空,目前还没有想到什么很好的解决办法。

其次是通过fread从文本对链表赋值,刚开始根本就赋值不了,后来知道了是因为对函数fread的理解错误,从fp中读数据到链表p只是改变了p的内容。

再次就是switch函数的应用,特别在返回上级菜单出现了问题。

五、本次课程设计的经验和体会。

通过这次课程设计,我对c语言面向过程理解的更深了,对c语言中的链表,指针也理解的更为透彻,特别是指向结构体的指针的运用以及head指针,以前总是模棱两可,通过课程设计做的点菜系统,原来模棱两可的问题清晰了,而且对链表的创建,修改,删除,增加都比原来要熟悉。

六、存在问题。

1、自己感觉**还不够简单,没有考虑到运行速度。

2、没有密码系统,客户可以进入老板的菜单管理区域。

七、参考文献。

[1]黄明等编著《c语言课程设计》北京:电子工业出版社。

[2]谭浩强编著《c程序设计题解与上机指导(第3版) 》北京:清华大学出版社。

[3]明日科技编著《visual c++程序开发范例宝典》北京:人民邮电出版社。

附录:初始化录入数据,已经录入两次,是否继续的截图:

调试设计了三道菜,以下是录入完成三道菜的截图:

经过初始化后的文本:

测试录入中的补充录入(测试补充了两道菜):

测试录入中的补充录入后的txt文本:

测试录入中的修改(修改第三道,此为修改后结果,把第三道3改成了6):

修改后的txt文本:

测试录入中的删除(删除6号,此为删除的确认截图):

删除后的txt文本:

测试客人菜单(选择是否有打折卡):

有打折卡的结果:

无打折卡只点一道菜结果:

源程序:#include <>

#include <>

#include <>

#define filename ""文件名*/

typedef struct cmenu

int num;/*菜品编号*/

char fname[10]; 菜系名称*/

char name[10];/菜名*/

char introduce[1000];/菜的介绍*/

int price;/*菜的原始***/

float zhekou;/*若有折扣卡的折扣*/

struct cmenu *next;

cm;函数声明。

void chushihua();

void zhucaidan();

课程设计报告格式 课程设计

洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...

课程设计总结,课程设计报告

课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...

课程设计 课程设计报告格式

学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...