面向对象设计作业.docx
- 文档编号:9031898
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:21
- 大小:563.59KB
面向对象设计作业.docx
《面向对象设计作业.docx》由会员分享,可在线阅读,更多相关《面向对象设计作业.docx(21页珍藏版)》请在冰点文库上搜索。
面向对象设计作业
大连科技学院
面向对象程序设计课程设计报告
专业
信息管理与信息系统专业
班级
09级1班
学生姓名
于婧
指导教师
曾维佳
职称
讲师
2011年12月16日
目录
一前言1
1.1问题提出1
1.2意义2
二菜品信息管理系统设计2
2.1系统描述2
2.2系统需求分析2
2.3设计思想4
三系统实现与调试5
3.1系统界面5
3.1.1系统登录主界面5
3.1.2选择系统排序的主界面6
3.1.3系统排序主界面7
3.1.4按照单价排序的系统主界面7
3.1.5排序的返回界面7
3.1.6选择系统的保存主界面8
3.1.7保存的选择界面9
3.1.8选择继续保存的界面9
3.1.9保存成功的界面10
3.1.10不继续保存的界面12
3.1.11返回主界面13
3.2系统调试13
四总结13
4.1小组分工13
4.2体会14
五部分程序代码15
5.1排序代码15
5.2保存代码15
一前言
1.1问题提出
传统的菜品信息管理现在已经很难应对当今社会对餐饮业的管理要求,它与现在的基于计算机技术发展起来的菜品信息管理系统对比,有以下几大不同:
便捷性方面:
传统的人工对菜品信息进行管理,如:
菜品名称,菜品类型和计量单价等都是很繁琐的过程,其中的任何一步过程都要浪费大量的时间,而随着计算机技术的发展,这些原本繁琐的问题都会变得轻而易举。
安全性方面:
传统的纸质记录方式查询起来很麻烦,而且保密性很差,并且容易磨损丢失,对于菜品信息是非常不利的。
但如果采用的是电子文档的方式进行数据的保存,这一切都变得非常简便,你可以方便的对数据信息进行备份查询,并且数据的安全性可以得到最大程度的保证。
准确性方面:
传统的人工记账容易出错,如果采用这种方式来处理现在的含有多种不同菜品信息的消费结算会使得工作量很大,如果计算出错将严重影响自己的声誉。
而如果使用软件系统,这些问题都将不会出现,计算机的错误率几乎为零。
鉴于以上传统的人工管理方式的种种缺陷,我设计了方便中小级别餐饮企业使用的应用程序,名称叫做菜品信息管理系统,通过它,管理者可以基本解决以上所遇到的种种问题,并且更加科学的对客户选择的菜品进行记录,而且添加了菜品类型的记录使得它更加方便顾客对不同菜品的选择,充分满足顾客的要求。
同时这次系统开发设计应用到了c语言,刚开始的使用是有些不是很得心应手。
但是后来我发现了这门语言有很多优点,诸如C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。
把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔研究所的D.M.Ritchie于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。
具体应用比如单片机以及嵌入式系统开发。
C++语言发展大概可以分为三个阶段:
第一阶段从80年代到1995年。
这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;
第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;
第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
C++避免平台限定或没有普遍用途的特性。
C++不使用会带来额外开销的特性。
C++设计成无需复杂的程序设计环境。
1.2意义
本课题的目标是将传统的通过服务员和顾客的点菜的方式,转换到基于网络这样一个更方便快捷的方式。
为企业节约了很多的时间和精力。
时间就是金钱,对企业来说,节约时间就是节约成本,就是盈利。
对顾客来说,可以通过此系统选择自己心仪的菜品,同时也可以及时地选择到自己想要吃的东西的类型,对于所有的顾客来说,无疑是好之又好的事情。
而且现在的网络应用技术发展速度相当的惊人,那么基于网络的菜品信息管理系统,也会越来越流行,必定是一个趋势。
二菜品信息管理系统设计
2.1系统描述
根据用户调查分析,”菜品信息管理系统”设计有七大功能设计,分别是:
查询菜品名称,添加菜品名称,删除菜品名称,修改菜品名称,按照菜品单价排序,保存菜品信息,读取菜品名称的功能,并且此系统是将餐厅的菜品信息通过标准化的管理操作加以整合,使得菜品的名称、类型和计量单位以及单价全部完全呈现在客户面前,使得客户可以方便地选择自己想要的食物。
有很好的可扩展能力,可根据实际情况实现新功能的添加,维护简单。
2.2系统需求分析
2-2-1系统功能模块图
1系统添加管理模块包括:
添加菜品信息;用户进入主界面后选择1添加菜品信息对菜品信息进行添加;
2系统删除管理模块包括:
删除菜品信息;用户进入主界面后选择2删除菜品信息对菜品信息进行删除;
3系统修改管理模块包括:
修改菜品信息;用户进入主界面后选择3修改菜品信息对菜品信息进行修改;
4系统查询管理模块包括:
查询菜品信息分为两个部分,一个是按照菜品名称查询,还有一个是按照菜品类型查询;用户进入主界面后选择4查询菜品信息然后可以根据自己用户要查询的方式进行选择,如果选择1就是按照菜品名称进行查询,如果选择2按照菜品类型进行查询;
5系统排序管理模块包括:
排序菜品信息;用户进入主界面后选择5排序菜品信息进入排序界面按照菜品价格对菜品信息进行升序排序;
6系统删除保存模块包括:
保存菜品信息和不保存菜品信息;用户进入主界面后选择6保存菜品信息,如果要保存菜品信息就输入"Y"进行菜品信息的保存;如果不保存菜品信息就输入"N",即不保存菜品信息并返回主界面;
7系统读取管理模块包括:
读取菜品信息;用户进入主界面后选择7读取菜品信息,进入菜品信息已经装入界面(即读取成功)并返回到主界面;
2.3设计思想
菜品信息管理系统是用面向对象的方法设计,那么面向对象涉及的定义和特征是什么呢?
总结如下:
(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中(3)类。
具有相同或相似性质的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般—具体结构称为分类结构,也可以说是“或”关系,或者是“isa”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“hasa”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。
发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。
一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
面向对象的特征:
(1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。
在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。
一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。
任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。
采用继承性,提供了类的规范的等级结构。
通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
(4)多态性(多形性)多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。
不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。
多态性增强了软件的灵活性和重用性。
由于数组的存放是连续的,而单链表是非连续存放的,是动态分配内存空间,因此此系统采用单链表完成。
各个功能模块的实现主要通过对单链表的遍历及结点的添加和删除完成。
三系统实现与调试
在系统功能模块介绍时,我们将菜品信息管理系统分为七个大的模块:
添加管理,删除管理,修改管理,查询管理,排序管理,保存管理,读取管理器个模块.
下面是我负责的功能模块:
排序管理和保存管理.
3.1系统界面
3.1.1系统登录主界面:
图3-1-1登录界面
功能描述:
选1:
进入菜品信息添加,记录下顾客要点的菜品名称名称,菜品类型,菜品单
价,计量单位的信息。
如果输入添加成功则显示添加成功并且返回主界面。
选2:
进入菜品信息删除界面,录入要删除的菜品信息名称,看是否在表中有这条记录,无则提示菜品名称不存在,有则显示记录的相关信息,提示用户是否确实要删除此记录,确认则进行删除。
选3:
进入菜品信息修改界面,可根据菜品名称,查看该菜品的相关信息,点击修改按钮,可对该菜品进行修改操作。
修改成功,系统对数据库中该菜品信息进行自动更新。
选4:
进入菜品信息查询界面,用户可以选择查看自己所选择的任何菜品信息和菜品类型,还可以查看该菜品信息的一些基本信息。
选5:
进入菜品信息排序界面,录入要排序的菜品信息名称,选择按照菜品类型进行排序,然后返回主界面。
选6:
进入菜品信息保存界面,保存要录入的菜品信息名称,然后返回主界面。
选7:
进入菜品信息读取界面,录入要读取的菜品信息名称,然后返回主界面。
选8:
退出课程信息界面,返回系统登录界面。
3.1.2选择系统排序的主界面:
图3-1-2选择排序界面
功能描述:
选1:
进入菜品信息添加,记录下顾客要点的菜品名称名称,菜品类型,菜品单
价,计量单位的信息。
如果输入添加成功则显示添加成功并且返回主界
面。
选2:
进入菜品信息删除界面,录入要删除的菜品信息名称,看是否在表中有这
条记录,无则提示菜品名称不存在,有则显示记录的相关信息,提示用户
是否确实要删除此记录,确认则进行删除。
选3:
进入菜品信息修改界面,可根据菜品名称,查看该菜品的相关信息,点击
修改按钮,可对该菜品进行修改操作。
修改成功,系统对数据库中该菜
品信息进行自动更新。
选4:
进入菜品信息查询界面,用户可以选择查看自己所选择的任何菜品信息
和菜品类型,还可以查看该菜品信息的一些基本信息。
选5:
进入菜品信息排序界面,录入要排序的菜品信息名称,选择按照菜品类
型进行排序,然后返回主界面。
选6:
进入菜品信息保存界面,保存要录入的菜品信息名称,然后返回主界面。
选7:
进入菜品信息读取界面,录入要读取的菜品信息名称,然后返回主界面。
选8:
退出课程信息界面,返回系统登录界面。
3.1.3系统排序主界面:
图3-1-3排序界面
功能描述:
选1:
按照菜品单价进行升序排序。
选2:
返回主界面。
3.1.4按照单价排序的系统主界面:
图3-1-4以单价排序界面
功能描述:
选1:
已经进入以菜品单价进行排序并且返回主界面。
3.1.5排序的返回界面:
图3-1-5排序的返回界面
功能描述:
选2:
返回主界面。
3.1.6选择系统的保存主界面:
图3-1-6选择保存界面
功能描述:
选6:
菜品信息已经装入。
3.1.7保存的选择界面:
图3-1-7保存的选择界面
功能描述:
选6:
进入保存页面。
3.1.8选择继续保存的界面:
图3-1-8选择继续的保存界面
功能描述:
选6:
进入保存页面并且选择继续。
3.1.9保存成功的界面:
图3-1-9保存成功的界面
功能描述:
选6:
保存成功页面。
3.1.10不继续保存的界面:
图3-1-10不继续保存的界面
功能描述:
选6:
进入保存页面并且选择不继续保存。
3.1.11返回主界面:
图3-1-11返回至主界面
功能描述:
选6:
进入保存页面并且选择不继续保存后返回主界面。
3.2系统调试
此系统我负责这两个模块的优点我认为是比较易操作,界面设置比较简单,这样不管是多大年龄的用户使用起来都特别方便,而且就排序这个模块来说我认为当用户选择进入排序界面时,能够清楚的知道自己下一步该做什么,但是就像人无完人一样,这个系统会不会有什么不完美的地方呢?
经过我和包悦的研究发现排序的类型现在有点单一,于是我俩又加了个按照菜品类型排序,可是等实际运行时发现了问题因为有很多菜都属于一个类型所以这个属性选的就不对,后来又是了好几个属性,发现都不行,总结了一下是因为菜单信息管理系统中只有价格不会出现重复而且可以进行排序;我负责的另一个部分是保存模块,这个模块的优点是操作简便,但是它也有一个缺点就是如果前面用户添加的菜品信息是错误的并且用户如果不知情的保存了的话也会被实现,可是我试了很多遍该代码但是这个问题一直没有解决,我想如果以后有机会的话或者时间在充裕一些的话我可以通过查找各种资料的方法去解决这个问题.
四总结
4.1小组分工
添加菜品信息:
杨帅;
删除菜品信息:
庞丽娜;
修改菜品信息:
邹静;
排序菜品信息:
于婧和包悦;
保存菜品信息:
于婧;
读取菜品信息:
包悦;
4.2体会
学习C++课程是在大一下学期,现在已经过去快两年了,学校安排大三上学期做面向对象语言程序设计。
知识已经有些遗忘了,拿起书本看了两天,复习一下所学的知识,开始在脑海中酝酿要做一个什么样的系统。
经过二周的努力,算是完成了任务吧。
实训的第一周因为有数据库考试,第二周又有英语六级考试,所以没多少时间太顾及专业学习这一块,基本上都是上课敲一些代码,所以有些不足之处,也遇到了不少问题。
例如:
在排序这个模块,点运行的时候确实可以运行但是现实的结果却是窜行的,那么是哪里出现了问题呢?
我就一直很纳闷,但是后来在我和包悦同学的讨论下,我们发现在cout语句那里出现了问题,因为输出的名称顺序反了,所以结果显示也是窜行的,于是我们把那个代码改造了一下就成功的运行了排序这个模块。
在完成课程设计的过程中,这种问题还有很多,加上时间紧迫,中途难免有些灰心丧气,但是最后还是坚持了下来。
这次的课程设计经历告诉我,做一件事情,只要自己不选择放弃,就一定能得到自己所要的。
在设计报告完成之际,我的心情万分激动,虽然已经是深夜,但我依然没有困意。
从编程的选题、资料的收集、程序的设计到设计报告的撰写、编排整个过程中,我付出了很多的努力,但功夫不负有心人,那份锲而不舍的精神使我终于成功了!
设计报告是对学生大学阶段学习知识的总结,也是对学生分析问题、解决问,题能力的综合考察。
在本次实训中,我首先要感谢曾维佳老师,是你将我领入了计算机科学的大门,并对我的学习给予了很大的帮助,使我在实训中有了目标和方向。
在大学这近三年的时间里,你们对我悉心的指导和教育。
使我能够不断地提高学习成绩,而且这些课题的研究成果也成为了本论文的主要素材。
同时,我从指导老师侯老师身上学到了很多东西。
无论在理论上还是在实践中,她都点拨我指导我,使我学到了很多书本上没有的东西,这对于我以后的工作和学习来说都将是一种宝贵的财富,在此表示最诚挚的谢意。
还有我们一组的同学都很热心的帮助我,在我变成不能运行的时候,宁愿停下自己手中的程序来帮助我,尤其是我们组的邹静和包悦同学,也是很耐心的帮助我改程序,在这里也要真心的和你们说声谢谢.衷心感谢各位同学和老师的点拨和指导。
当初之所以选择菜品信息管理系统,不仅仅是因为其具有挑战性,更是因为它更加符合中国广大的中小餐饮企业的发展需要,大家都知道,中国的餐饮服务行业最多的是个体经营模式,他们根本不会花费过多的费用架设网络服务器,大多数店主都希望有一款产品可以满足餐饮管理的需要而且花费的价格也相对低廉,甚至一次投资终身受益。
而菜品信息管理系统的出现就完全可以满足他们的愿望。
菜品信息管理系统的诞生可以为他们提供方便的管理服务。
并且几乎为零的错误率也使得餐厅可以更好的为顾客服务。
它不仅可以为餐厅降低人力资源的付出,节省了成本,而且也可以提升自身的形象,使餐厅迎来更多的食客。
经过这么长时间的努力,菜品信息管理系统终于得以实现其功能了,在这里我对C++这门看似很设脑的语言有了更深一步的认识,程序开发到后来比刚刚开发时的速度要快上好多,一开始遇到问题,我需要停下来查找相关资料,在网上搜实例代码下来学习,自己解决不了还要去请教指导老师,但程序编写到后来就轻松多了,遇到的问题几乎都能自己解决而不像一开始那样。
世界上没有任何一样东西是十全十美的,在完成了菜品信息管理系统后,我发现,原本看上去应该比较完善的系统又有了新的可以改进的地方,如菜品信息的食材的用量这个模块。
我想如果我把这个功能实现了,也许又会有新的功能需要我去做,系统的完善不是一朝一夕可以完成的,如果给我更多的时间,我一定能将它制作的更好。
此次系统的完成既为大学的第三个实训划上了一个完美的句号,也为将来的计算机事业奠定了良好的基础。
在大学里,我一直使自己保持着积极向上的心态,它使我不怕任何困难,以一定要成功的信念完成我的毕业设计内容。
而且我相信付出总有回报,大学学习生活成就了我扎实的专业知识,务实的工作作风,良好的组织能力和团队协作精神,相信这些会在我未来的生活和工作中给我带来巨大的帮助。
五部分程序代码
5.1排序代码
voidcla:
:
pxh(){
menu*p1,*p2;
intn;
p1=stu;
n=1;
while(p1->next){
n++;
p1=p1->next;
}
cout<<"共有"< inti; p1=stu; for(i=1;i { p1=stu; if(p1->danjia>p1->next->danjia){ p2=p1->next; p1->next=p1->next->next; p2->next=p1; stu=p2; } p1=stu; while(p1->next->next){ p2=p1; p1=p1->next; if(p1->danjia>p1->next->danjia){ p2->next=p1->next; p1->next=p1->next->next; p2->next->next=p1; p1=p2->next; } } } p1=stu; do{ p1->play(); p1=p1->next; }while(p1); } voidcla: : staxis(){ system("cls"); charc; cout<<"请选择以何种方式排序: "< cout<<"1......以菜品单价排序"< cout<<"2......返回"< cout<<"请选择(1-2)"< cin>>c; switch(c){ case'1': pxh();break; case'2': return; } } 5.2保存代码 voidcla: : ssave(){ system("cls"); charc; cout<<"\n保存菜品信息(将覆盖原文件),是否继续? [Y/N]: "; cin>>c; if(toupper(c)! ='Y')return; ofstreamtfile("date.txt",ios_base: : binary); menu*p=stu; while(p){ tfile< tfile< p=p->next; } tfile.close(); cout<<"保存完毕..."< }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 设计 作业