肯德基点餐管理系统毕业设计论文_第1页
肯德基点餐管理系统毕业设计论文_第2页
肯德基点餐管理系统毕业设计论文_第3页
肯德基点餐管理系统毕业设计论文_第4页
肯德基点餐管理系统毕业设计论文_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE0—PAGE37—东营职业学院计算机系综合实训报告书 学号:200801010030姓名:陈娜指导教师:李湘云尹元元实习方向:VB和SQLsever综合运用实习时间:2010年6月7日--2010年7月7日填表日期:2010年7月1日

实习题目肯德基点餐系统指导教师评语及成绩:成绩:教师签名:职称:年月日系审查意见:审查成绩:审查人签名:职称:系签章:年月日教务处终审意见:终审成绩:终审人签名:职称:公章:年月日摘要根据现行快餐连锁店管理的需要,设计此肯德基模拟点餐系统。运用软件工程的思想进行系统的分析与设计,使用VisualBasic6.0和SQLServer数据库编程实现。系统具有数据导入、、薪资查询、盈利查询、人员修改与管理等功能。通过本系统的应用实现管理系统化。本论文首先使用了VisualBasic作为开发工具和SQLServer作为后台数据库,然后再介绍了开发背景,最后通过截图和表格来说明该系统的开发与操作。设计充分利用VB以及SQLServer数据库易于使用和快速开发的特性,提高了编程效率和可靠性。同时对系统的开发原理、系统的功能特点和设计方案进行了介绍。利用其提供的各种面向对象的开发工具,使用ADO控件连接数据库,开发出的产品不但能完成肯德基点餐中的基本操作,而且具有程序设计合理、操作简单、运行可靠、保密性强等特点。

关键字:VB

SQLServer目录第一章系统规划及需求分析 61.1功能需求 61.2性能需求 61.3可行性分析 61.3.1经济可行性 61.3.2技术可行性 71.3.3营运可行性 71.4系统功能分析 7第二章系统总体设计 82.1系统的特点 82.2数据库概念结构设计 92.2.1实体联系图 92.2.2数据流图 92.2.3业务流程图 102.3数据库物理设计 112.4数据库表创建 11第三章界面详细设计 133.1界面设计及实现 133.1.1用户登陆模块 133.1.2主界面设计 153.1.3修改密码 15第四章系统实现 184.1界面运行 184.1.1登陆界面 184.1.2主界面 184.1.3普通点餐界面 194.1.4优惠券点餐 194.1.5点餐确认 204.1.6用户注册 21总结 22参考文献 23附加:代码设计 24前言随着市场经济的发展,我国餐饮业已呈现出高速发展的趋势。2009年,我国3O万家饭店、350万家餐馆的年营业总额达6300多亿元,并且每年都已16%的速度递增。但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理的方式,整体科技含量低。随着餐饮店规模的不断扩大,并且多采用连锁经营的情况下,手工管理无论是在工作效率、人员成本还是提供决策信息方面都已经难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。要想避免手工管理中的弊病,实现管理方式的升级,在餐饮企业中建立一套以计算机为信息管理核心的信息管理系统不视为一种非常有效的方法。餐饮企业只有通过不断的技术手段革新和管理制度上的创新,才能始终赢得顾客的信任,才能长久维持顾客的忠诚。这样,餐饮企业的经营活动就会呈现出在保证服务质量的同时大幅度降低成本的局面,或者是在稍许增加成本的情况下大幅度增加收益的状况。也就是说,采用先进的科技手段,使餐饮企业营销策略的选择性增强,具有了更加灵活的销售手段。可见,在餐饮企业中实施信息化管理是必要的。另一方面,由于计算机网络技术的不断发展,尤其是局域网技术的应用日渐成熟,为餐饮企业建立信息管理系统提供了技术上的支持;而计算机硬件资源的价格又随着技术的发展而不断下降,使餐饮企业应用计算机信息管理系统的经济适用性得到了保证。肯德基作为国际级超级连锁店,自身优秀的服务体系外,优秀的管理系统更是如虎添翼。本文设计一个肯德基管理系统,本系统只须对于一些具体的问题进行改动就可以满足大多数快餐店的基本需要。第一章系统规划及需求分析1.1功能需求本管理系统主要有三个功能,对外可以作为客人和员工的营业窗口,很方便的算出客人消费了多少钱,更主要的是每天营业结束后将数据提交送入数据库,把每天的营业总额和客人数存储起来,这是系统的第二个功能内务管理系统所需要的重要数据,内务管理系统只有管理员可以登录,实现管理员对餐点信息入库,会员信息的有效管理,方便各项工作的查询功能,实现会员对餐点的选择,查询等操作。第三个功能只有管理员输入密码才能登录,主要是对关于对人员的管理:雇用一名员工,登记员工的具体资料。本系统使用Access建立了数据库其中包括日结表,月查询表,员工个人信息表,员工薪资表等。VB设计系统操作界面。可以在界面中向数据库中增添数据和修改数据。1.2性能需求本系统的各种操作简单明了,操作人员不需要进行专业培训。肯德基管理系统为组织者提供一个简洁方便的方式来经营管理肯德基,通过简单的键盘输入和鼠标点击来完成繁琐的记录与销售工作,保证肯德基正常流畅的经营。1.3可行性分析1.3.1经济可行性现在计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为肯德基管理的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:第一,本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许多资源;第三,本系统的运行可以大大的提高组织者的工作效率;第四,本系统可以使敏感文档更加安全,等等。所以,本系统在经济上是可行的。1.3.2技术可行性目前,计算机及网络技术在国内外大型的快餐企业和快餐专卖店已广泛使用,使用了上千台微机联网进行赛事管理;国内的各大餐饮业也都使用计算机管理,用计算机管理肯德基的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了KFC产品资料的安全性。提高了管理者的管理能力,为此,用计算机来管理KFC的信息,是非常必要的。KFC管理需要具有良好技术人员,只有掌握系统的操作方法才能更好的而又合理的运用本系统。无论是操作方面,还是管理方面都占优势,该技术的可行的。本管理系统利用计算机信息处理的迅速、准确、可靠且有强大存储能力的突出特点,全面提高经营者的管理水平和工作效率,并且及时、完整的业务经营资料,提高了工作的准确率和效率。1.3.3营运可行性按照人性化设计的原则,用户界面友好、操作灵活简便并提供向导功能。系统整体结构设计合理,数据处理功能齐备,面对大量原始指标和数据的输人与输出,能及时地对数据进行快速、准确的评判、比较、排序、统计和处理等。界面清晰友好,操作简便使用户无需经过计算机专门训练就能胜任。1.4系统功能分析1.实现会员注册,会员信息修改等会员信息的简易操作,提高KFC点餐的工作效率。

2.实现管理员对餐点的按编号、名称、是否优惠的等多方面的管理,最大的方便管理员和会员对餐点的各项信息的查询及修改。

3.建立KFC点餐系统是对餐点信息数据库及会员各项信息进行有效的管理。

4.建立KFC数据库,限定每个管理员对软件操作的权限,最大限度的保护数据库。

5.实现管理员对餐点信息入库,会员信息的有效管理,方便各项工作的查询功能,实现会员对餐点的选择,查询等操作。第二章系统总体设计经过需求分析阶段的工作,系统必顺"做什么"已经清楚了,现在是决定"怎样做"的时候了。总体设计的基本目的就是回答"概括地说,系统应该如何实现?"这个问题,因此,总体设计又称为概要设计或初步设计。

本系统设计采用了面向对象的系统设计方法,开发工具选用的VisualBasic,数据库用的是SQLServer数据库。根据前面的设计思路和系统功能分析.总共设计了普通点餐、优惠券点餐、注册、修改密码等几个模块。系统主模块层次图如图2-1所示:肯德基点餐系统肯德基点餐系统优惠券点餐查询普通点餐主界面注册图2-1肯德基点餐系统主模块层次图2.1系统的特点1.统一管理肯德基产品的相关数据,方便管理人员进行数据的分析、查询和比较等。输出的报表计算准确,类型丰富,符合有关规范。

2.整个系统自动进行点餐、计算金额等各项管理。自动按KFC规定对产品优惠、销售等数据处理。不用大量抄写一字,极大的减轻了工作量。

3.按照人性化设计的原则,用户界面友好、操作灵活简便并提供向导功能。系统整体结构设计合理,数据处理功能齐备,面对大量原始指标和数据的输人与输出,能及时地对数据进行快速、准确的评判、比较、排序、统计和处理等。界面清晰友好,操作简便使用户无需经过计算机专门训练就能胜任。

4.按照点餐的步骤进行人性化的流程设计,只需要简单的操作,就能顺利的完成整个比赛的全过程。

5.通用性强,适应面广。该管理系统面对的用户主要是高速发展的各大快餐企业。这些企业的特点是规模大小不一、各管理人员的管理方式各不相同,点餐方式多样化等。系统可以通过对各大、中、小型快餐企业的规模,管理方式,管理人员技术等级等方面进行灵活设置与运用来实现的。2.2数据库概念结构设计2.2.1实体联系图用户用户编号用户名密码点餐餐目原价优惠价优惠时间类型名称金额点餐数量点餐类型用户类型用户名点餐类型用户名图2-2实体联系图(E-R图)2.2.2数据流图餐目信息单餐目信息单餐目表会员信息表注册单会员1注册处理2登陆订餐3进行选餐餐目点餐单4点餐管理管理员5登记信息用户信息表餐目管理表点餐表图2-3数据流图2.2.3业务流程图该图将系统中各模块的联系及实现过程更清晰的表达出来。如图2-2所示:会员所选餐点表登录订餐会员所选餐点表登录订餐选餐信息登记表总餐点信息表注册注册登记会员信息登记表会员信息表总优惠餐点信息表选择餐点确认信息会员管理员登记餐点信息餐点图2-4业务流程图2.3数据库物理设计数据库物理系统设计又称系统设计。系统设计要根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可用的技术手段和方法进行各种具体设计,确定新系统的实施方案,解决“系统怎么做”的问题。物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出基本表的主键,将所有的表名与字段名英文化,实现物理建库,完成数据库物理设计字典。

结构化系统设计是指利用一组标准的图表工具和准则,确定系统有哪些模块,用什么方法连接,如何构成良好的系统结构,并进行系统输入、输出、数据处理、数据存储等环节的详细设计。这一阶段的重点是设计好系统的总体结构,选择最经济合理的技术手段。系统设计阶段的文件是系统设计报告(又称系统物理设计说明书)。管理信息系统的开发是一项系统工程,为了保证系统的质量,设计人员必须遵守共同的设计原则,尽可能地提高系统的各项指标(系统可变性、可靠性、工作质量、工作效率、经济性等)。2.4数据库表创建 创建数据库的实现:选择“文件夹”中右击鼠标选择“新建”,然后选择“access”,建立myuser数据库,单击新建文件,打开数据库;利用设计器创建表。表结构设计如下各表所示(列出所有使用的数据库表结构)。表2-1用户信息表列名类型允许空用户名Char(10)否用户密码Char(10)否用户类型Char(10)否表2-2优惠餐目表类型允许空Int是Char(30)是列名是餐点单价餐点编号是餐点名称餐点类型是优惠价餐点单位是优惠开始时间Datetime是优惠结束时间Datetime是表2-3普通餐目表列名类型允许空餐点编号Int是餐点类型Char(30)是餐点名称Char(30)是餐点单位Char(30)是餐点单价Money是第三章界面详细设计3.1界面设计及实现该阶段主要完成各个功能模块的设计,处理过程的设计要根据模块划分以及结构化程序设计的基本原则,对每个程序模块中的详细处理过程进行设计。3.1.1用户登陆模块1.登陆模块的IPO图输入:用户名和密码处理:登陆窗体启动。输入用户名和密码。如果用户名或密码为空,处理终止,并进行错误信息提示。以输入的用户名为关键字,检索用户信息表的用户名和密码字段。通过检索结果判断该用户是否存在,如果用户名不存在,处理终止,并进行错误信息提示。如果用户名存在,比较检索到的密码字段与输入的密码是否相等。如果不相等处理终止,并进行错误信息提示。如果输入的密码正确,将该用户名和用户类型分别保存在全局变量UserName和UserKind中。进入主界面。输出:主界面2.窗体和控件的特殊属性设计(见表3-1)表3-1窗体和控件的特殊属性控件名称控件属性设置Command1Caption确定Command2Caption注册Command3Caption取消Label1Caption姓名Text2PasswordChar*Frmlogin类型登陆对话框3.流程图及程序设计获取用户名和用户密码获取用户名和用户密码提示:用户名和密码非法!请重新输入!连接到数据库中的数据用户名和用户密码是否为空否是是否为数据库中的数据否提示:登录成功!是进入下一界面代码:PrivateSubCommand1_Click()Adodc1.RecordSource="select*frommyuserwhereusername='"+Text1.Text+"'anduserpassword='"+Text2.Text+"'"Adodc1.RefreshIfAdodc1.Recordset.RecordCount>0ThenForm1.HideForm2.ShowElseMsgBox"请确认登陆号码和密码是否正确!",vbInformation,"系统提示"Text1.Text=""Text2.Text=""EndIfEndSub3.1.2主界面设计1.总体布局“主窗口”表单是本系统的主界面,它显示本系统的菜单。使用“关闭”按钮或菜单中“退出”菜单项中可以关闭该表单,并结束本系统的执行。2.窗体和控件的特殊属性的设置(见表3-2)表3-2窗体和控件的特殊属性控件名称控件属性设置Command1Caption优惠券点餐Command2Caption普通点餐FrmMainStratUpPosition2LblBoderstyle03.程序设计(1)添加菜单和状态栏:根据总体设计中对各个模块的设计,使用菜单编辑器和StatusBar控件创建系统菜单和状态栏。菜单项目有:1)系统管理→用户管理、密码修改。2)查询(2)退出系统。处理流程:询问用户是否要以其他用户名登陆,如果用户选择“确定”,卸载当前窗体并加载登陆对话框;否则卸载全部窗体。3.1.3修改密码1.密码子模块的IPO图输入:原密码、新密码和确认密码。处理流程:1)修改密码窗体启动,输入原密码、新密码和确认密码。2)从用户信息表中检查该用户的原密码是否与输入的原密码相同。3)如果不同则进行信息提示,处理终止。4)如果相同,检查新密码是否为空,如果为空则进行信息提示,处理终止。5)如果非空,检查输入的确认密码是否与确认密码相同。6)如果不同则进行信息提示,处理终止。7)更新用户信息中的用户密码字段。输出:对用户信息表的密码字段进行修改。2.修改密码模块的窗体设计(见图3-3)图3-3修改密码窗体设计效果3.程序设计PrivateSubCommand1_Click()DimgetmimaAsString,JAsInteger,mimaAsString'取得密码WithAdodc1.ConnectionString=conn.CommandType=8.RecordSource="select*fromloginwhereusername='"&userlogo&"'".Refreshgetmima=.Recordset.Fields("pass")EndWith'检确认密码与新密码是否一致IfTrim(Text2.Text)<>Trim(Text3.Text)ThenMsgBox"您输入的新密码与确认密码不符,请重新输入!",vbExclamation,"提示"Text2.Text=""Text3.Text=""Text2.SetFocusElseIfAdodc1.Recordset("password")=Trim(txbpassword.Text)ThenWithAdodc1.Recordset("password")=Trim(txbNewpassword1.Text).Recordset.UpdateEndWithMsgBox"密码已经修改完毕。请您牢记!",vbExclamation,"提示"UnloadMeElseMsgBox"原密码不对,请确认后继续!",vbExclamation,"提示"Text1.Text=""Text2.Text=""Text3.Text=""Text1.SetFocusEndIfEndIf第四章系统实现4.1界面运行4.1.1登陆界面该窗体主要进行用户合法性的验证。当准备进入系统的用户输入合法的用户名和口令(符合数据库中任何一组即可),可以进入系统并运行其权限范围内的功能,如果用户名和口令正确而选择的权限不正确时,系统自动提示错误且不能进入系统(如图4-1所示)。图4-1登陆界面4.1.2主界面登陆成功后首先进入的界面,其平命令菜单:前期编排,比赛管理,成绩录入,查询,竞赛分组,帮助等下拉菜单可以更方便用户查询及操作(图4-2所示)。图4-2主界面4.1.3普通点餐界面通过此界面更方便的选择自己喜欢的KFC产品,作简单易学(图4-3所示)。图4-3普通点餐界面4.1.4优惠券点餐客人操作便利,更方便的使用优惠券点餐。(如图4-4所示)。图4-4优惠券点餐4.1.5点餐确认该界面用于客人点餐完毕后确认自己所点的餐目,避免发生错误。(如图4-6所示)图4-5点餐确认4.1.6用户注册通过此界面,可以实现对数据可中数据的添加、删除、修改等操作,并且将前台数据存储到数据库中。(如图4-6所示)。图4-6用户注册界面总结面对本学期最后一次的专业实训,想着刚刚过去的最后一个周,紧张沉默之后更多的是感慨,印在脑海里的每一个足迹都是那么的深,真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足?一周,短短的一周,我学到了很多不知道的东西,实在是感受颇深。作为一名大二的学生,经过差不多两年的在校学习,对程序设计有了理性的认识和理解。在校期间,一直忙于理论知识的学习,没有机会也没有相应的经验来参与项目的开发。所以在实训之前,系统开发对我来说是比较抽象的,一个完整的系统要怎么来分工以及完成该项目所要的基本步骤也不明确。人非生而知之,要学得知识,一靠学习,二靠实践。没有实践,学习就是无源之水,无本之木。以上就是我在成都的进行实训的心得和感受。不到半年的时间就将步入社会的我们,面临是继续深造,还是就业的压力,我想我们更应该把握住最后的一段时间,充实、完善自我,争取做一名出色的大学生!当今企业竞争范围的伴随社会市场经济的发展以及信息化程度的不断提高而日益扩大,这样就要求企业在各个方面加强管理,要求企业有更高的信息化集成来实现对企业的整体资源进行集成管理。现代企业都意识到,企业之间的竞争是综合实力的竞争,要求企业有更强的资金实力,具备强有力的管理能力和更快的市场响应速度。因此,引入计算机系统的意义是非常重大的。所以我们应该学好专业知识,为以后踏入社会铺好路!参考文献

[1]何勇、郑文钟:《管理信息系统的原理方法及应用》,浙江大学出版社,2005年第1版[2]陈伟编著《SQLServer2005数据库应用与开发教程》北京:清华大学出版社,2007[3]管丽娜白海波《实用VisualBasic6教程》[M].北京:清华大学出版社,2001

[4]陈禹主编《管理信息系统》中国人民大学出版社1998年[5]季延平、郭鸿志合著《系统分析与设计》华秦书局1995年[6]朱志强《管理信息系统——原理、开发及应用》,复旦大学出版社,2007年第1版,第109-194页[7]刘宾:“小型企业工资系统数据库的应用”,《天津市工会管理干部学院学报》,2006年第02期[8](美)本-甘,(美)萨卡,(美)沃尔特著,赵立东译,电子工业出版社,《MicrosoftSQLServer2005技术内幕:T-SQL程序设计》,2007年8月第1版附加:代码设计登陆界面:PrivateSubCommand1_Click()Adodc1.RecordSource="select*frommyuserwhereusername='"+Text1.Text+"'anduserpassword='"+Text2.Text+"'"Adodc1.RefreshIfAdodc1.Recordset.RecordCount>0ThenForm1.HideForm2.ShowElseMsgBox"请确认登陆号码和密码是否正确!",vbInformation,"系统提示"Text1.Text=""Text2.Text=""EndIfEndSub修改密码代码:PrivateSubCommand1_Click()DimgetmimaAsString,JAsInteger,mimaAsString'取得密码WithAdodc1.ConnectionString=conn.CommandType=8.RecordSource="select*fromloginwhereusername='"&userlogo&"'".Refreshgetmima=.Recordset.Fields("pass")EndWith'检确认密码与新密码是否一致IfTrim(Text2.Text)<>Trim(Text3.Text)ThenMsgBox"您输入的新密码与确认密码不符,请重新输入!",vbExclamation,"提示"Text2.Text=""Text3.Text=""Text2.SetFocusElseIfAdodc1.Recordset("password")=Trim(txbpassword.Text)ThenWithAdodc1.Recordset("password")=Trim(txbNewpassword1.Text).Recordset.UpdateEndWithMsgBox"密码已经修改完毕。请您牢记!",vbExclamation,"提示"UnloadMeElseMsgBox"原密码不对,请确认后继续!",vbExclamation,"提示"Text1.Text=""Text2.Text=""Text3.Text=""Text1.SetFocusEndIfEndIfEndSub(3)确认点餐窗体代码PrivateSubForm_Load()Text1.Text=Form5.Text1.TextText2.Text=Form5.Text2.TextText3.Text=Form5.Text3.TextText4.Text=Form5.Text4.TextText5.Text=Form5.Text5.TextText6.Text=Form5.Text6.TextText7.Text=Form5.Text7.TextText8.Text=Form5.Text8.TextText9.Text=Form5.Text9.TextEndSub(4)普通点餐窗体代吗PrivateSubCommand1_Click()If(Text1.Text=""AndText2.Text=""AndText3.Text=""AndText4.Text=""AndText5.Text=""AndText6.Text="")ThenMsgBox"请确认已点餐!",vbInformation,"系统提示"ElseForm5.HideForm7.ShowEndIfEndSubPrivateSubCommand2_Click()Form5.HideForm2.ShowEndSubPrivateSubCommand3_Click()Text10.Text=Picture1.Tag*Text1.Text+Picture9.Tag*Text2.Text+Picture3.Tag*Text3.Text+Picture5.Tag*Text4.Text+Picture4.Tag*Text5.Text+Picture7.Tag*Text6.Text+Picture8.Tag*Text7.Text+Picture2.Tag*Text8.Text+Picture10.Tag*Text9.TextEndSubPrivateSubForm_Load()Text1.Text=0Text2.Text=0Text3.Text=0Text4.Text=0Text5.Text=0Text6.Text=0Text7.Text=0Text8.Text=0Text9.Text=0EndSub附录资料:不需要的可以自行删除C语言曲线函数像素函数putpixel()画像素点函数getpixel()返回像素色函数直线和线型函数line()画线函数lineto()画线函数linerel()相对画线函数setlinestyle()设置线型函数getlinesettings()获取线型设置函数setwritemode()设置画线模式函数多边形函数rectangle()画矩形函数bar()画条函数bar3d()画条块函数drawpoly()画多边形函数圆、弧和曲线函数getaspectratio()获取纵横比函数circle()画圆函数arc()画圆弧函数ellipse()画椭圆弧函数fillellipse()画椭圆区函数pieslice()画扇区函数sector()画椭圆扇区函数getarccoords()获取圆弧坐标函数填充函数setfillstyle()设置填充图样和颜色函数setfillpattern()设置用户图样函数floodfill()填充闭域函数fillpoly()填充多边形函数getfillsettings()获取填充设置函数getfillpattern()获取用户图样设置函数图像函数imagesize()图像存储大小函数getimage()保存图像函数putimage()输出图像函数图形和图像函数对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。(一)像素函数putpixel()画像素点函数功能:函数putpixel()在图形模式下屏幕上画一个像素点。用法:函数调用方式为voidputpixel(intx,inty,intcolor);说明:参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。此函数相应的头文件是graphics.h返回值:无例:在屏幕上(6,8)处画一个红色像素点:putpixel(6,8,RED);getpixel()返回像素色函数功能:函数getpixel()返回像素点颜色值。用法:该函数调用方式为intgetpixel(intx,inty);说明:参数x,y为像素点坐标。函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。这个函数相应的头文件为graphics.h返回值:返回一个像素点色彩值。例:把屏幕上(8,6)点的像素颜色值赋给变量color。color=getpixel(8,6);(二)直线和线型函数有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。line()画线函数功能:函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。用法:该函数调用方式为voidline(intstartx,intstarty,intendx,intendy);说明:参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。此函数相应的头文件为graphics.h返回值:无例:见函数60.linerel()中的实例。lineto()画线函数功能:函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。用法:此函数调用方式为voidlineto(intx,inty);说明:参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。该函数对应的头文件为graphics.h返回值:无例:见函数60.linerel()中的实例。linerel()相对画线函数功能:函数linerel()使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。用法:这个函数调用方式为voidlinerel(intdx,intdy);说明:参数dx,dy分别是水平偏移距离和垂直偏移距离。函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。返回值:无例:下面的程序为画线函数调用实例:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");setcolor(15);line(66,66,88,88);lineto(100,100);linerel(36,64);getch();restorecrtmode();}setlinestyle()设置线型函数功能:setlinestyle()为画线函数设置当前线型,包括线型、线图样和线宽。用法:setlinestyle()函数调用方式为voidsetlinestyle(intstly,unsignedpattern,intwigth);说明:参数style为线型取值,也可以用相应名称表示,如表1-10中所示。参数pattern用于自定义线图样,它是16位(bit)字,只有当style=USERBIT_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示,因此,pattern=0xFFFF,则画实线;pattern=0x9999,则画每隔两个像素交替显示的虚线,如果要画长虚线,那么pattern的值可为0xFF00和0xF00F,当style不为USERBIT_LINE值时,虽然pattern的值不起作用,但扔须为它提供一个值,一般取为0。参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际上,线宽取值为2也是可以接受的。若用非法参数调用setlinestyle()函数,那么graphresult()会返回错误代码,并且当前线型继续有效。TurboC提供的线型与线宽定义在头文件graphics.h中,表1-10和1-11分别列出了参数的取值与含义。表1-10线型名称取值含义SOLID_LINE0实线DOTTED_LINE1点线CENTER_LINE2中心线DASHED_LINE3虚线USERBIT_LINE4用户自定义线型表1-11线宽名称取值说明NORM_WIDTH(常宽)1一个像素宽(缺省值)THICK_WIDTH(加宽)3三个像素宽这个函数的头文件是graphics.h返回值:无例:下面的程序显示了BC中所提供的线型图样:#include<graphics.h>voidmain(){intdriver,mode;i;driver=DETECT;mode=0;initgraph(&driver,&mode,"");for(i=0;i<4;i++){setlinestyle(i,0,1);line(i*50,200,i*50+60,200);}getch();restorecrtmode();}getlinesettings()获取线型设置函数功能:函数getlinesettings()用当前设置的线型、线图样和线宽填写linesettingstype型结构。用法:函数调用方式为voidgetlinesettings(structlinesettingstype*info);说明:此函数调用执行后,当前的线型、线图样和线宽值被装入info指向的结构里,从而可从该结构中获得线型设置。linesettingstype型结构定义如下:structlinesettingstype{intlinestyle;unsignedupattern;intthickness;};其中linestyle用于存放线型,线型值为表1-10中的各值之一。upattern用为装入用户自定义线图样,这是16位字,每一位等于一个像素,如果哪个位被设置,那么该像素打开,否则关闭。thickness为线宽值存放的变量,可参见表1-11。getlinesettings()函数对应的头文件为graphics.h返回值:返回的线型设置存放在info指向的结构中。例:把当前线型的设置写入info结构:structlinesettingstypeinfo;getlinesettings(&info);setwritemode()设置画线模式函数功能:函数setwritemode()设置画线模式用法:函数调用方式为voidsetwritemode()(intmode);说明:参数mode只有两个取值0和1,若mode为0,则新画的线将覆盖屏幕上原有的图形,此为缺省画线输出模式。如果mode为1,那么新画的像素点与原有图形的像素点先进行异或(XOR)运算,然后输出到屏幕上,使用这种画线输出模式,第二次画同一图形时,将擦除该图形。调用setwritemode()设置的画线输出模式只影响函数line(),lineto(),linerel(),recangle()和drawpoly()。setwritemode()函数对应的头文件是graphics.h返回值:无例:设置画线输出模式为0:setwritemode(0);(三)、多边形函数对多边形,无疑可用画直线函数来画出它,但直接提供画多边形的函数会给用户很大方便。最常见的多边形有矩形、矩形块(或称条形)、多边形和多边形块,我们还把长方形条块也放到这里一起考虑,虽然它不是多边形,但它的特例就是矩形(块)。下面直接介绍画多边形的函数。rectangle()画矩形函数功能:函数rectangle()用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)。用法:此函数调用方式为voidrectangle(intleft,inttop,intright,intbottom);说明:参数left,top是左上角点坐标,right,bottom是右下角点坐标。如果有一个以上角点不在当前图形视口内,且裁剪标志clip设置的是真(1),那么调用该函数后,只有在图形视口内的矩形部分才被画出。这个函数对应的头文件为graphics.h返回值:无例:下面的程序画一些矩形实例:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");rectangle(80,80,220,200);rectangle(140,99,180,300);rectangle(6,6,88,88);rectangle(168,72,260,360);getch();restorecrtmode();}bar()画条函数功能:函数bar()用当前填充图样和填充色(注意不是给图色)画出一个指定上左上角与右下角的实心长条形(长方块或正方块),但没有四条边线)。用法:bar()函数调用方式为voidbar(intleft,inttop,intright,intbottom);说明:参数left,topright,bottom分别为左上角坐标与右下角坐标,它们和调用函数rectangle()的情形相同,调用此函数前,可用setfillstyle()或setfillpattern()设置当前填充图样和填充色。注意此函数只画没有边线的条形,如果要画有边线的的条形,可调用下面的函数bar3d()来画,并将深度参数设为0,同时topflag参数要设置为真,否则该条形无顶边线。这应的头文件为graphics.h返回值:无例:见函数bar3d()中的实例。bar3d()画条块函数功能:函数bar3d()使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填充色填充该三维条块的表面。用法:此函数调用方式为voidbar3d(intleft,inttop,intright,intbottom,intdepth,inttopflag);说明:参数left,top,right,bottom分另为左上角与右下角坐标,这与bar()函数中的一样。参数depth为条块的深度,以像素为单位,通常按宽度的四分之一计算。深度方向通过屏显纵横比调节为约45度(即这时x/y比设置为1:1)。参数topflag相当于一个布尔参数,如果设置为1(真)那么条块上放一顶面;若设置为0(假),则三维条形就没有顶面,这样可使多个三维条形叠加在一起。要使图形更加美观,可利用函数floodfill()或setfillpattern()来选择填充图样和填充色(参见本小节(五)填充函数)。bar3d()函数对应的头文件为graphics.h返回值:无例:下面的程序画一个条形和条块:#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");setfillstyle(SOLID-FILL,GREEN);bar(60,80,220,160);setfillstyle(SOLID-FILL,RED);bar3d(260,180,360,240,20,1);getch();restorecrtmode();}drawpoly()画多边形函数功能:函数drawpoly()用当前绘图色、线型及线宽,画一个给定若干点所定义的多边形。用法:此函数调用方式为voiddrawpoly(intpnumber,int*points);说明:参数pnumber为多边形的顶点数;参数points指向整型数组,该数组中是多边形所有顶点(x,y)坐标值,即一系列整数对,x坐标值在前。显然整型数组的维数至少为顶点数的2倍,在定义了多边形所有顶点的数组polypoints时,顶点数目可通过计算sizeof(polypoints)除以2倍的sizeof(int)得到,这里除以2倍的原因是每个顶点有两个整数坐标值。另外有一点要注意,画一个n个顶点的闭合图形,顶点数必须等于n+1,并且最后一点(第n+1)点坐标必须等于第一点的坐标。drawpoly()函数对应的头文件为grpahics.h返回值:无例:下面的程序画一个封闭星形图与一个不封闭星形图:#include<graphics.h>voidmain(){intdriver,mode;staticintpolypoints1[18]={100,100,110,120,100,130,120,125,140,140,130,120,140,110,120,115,100,100};staticintpolypoints2[18]={180,100,210,120,200,130,220,125,240,140,230,120,240,110,220,115,220,110};driver=DETECT;mode=0;initgraph(&driver,&mode,"");drawpoly(9,polypoints1);drawpoly(9,polypoints2);getch();restorecrtmode();}(四)、圆、弧和曲线函数在一个屏幕上画得很圆的图形到另一个屏幕上可能被压扁或拉长,这是因为每一种显示卡与之相应的显示模式都有一个纵横比。纵横比是指像素的水平方向大小与垂直方向大小的比值。如VGA显示卡由于偈素基本上是正方形,所以纵横比为1.000。为了保证几何图形基本按预计情况显示在屏幕上,用屏显的纵横比来计算和纠正不同硬件及显示卡产生的畸变。计算纵横比所需要的水平方向和垂直方向的比例系数可调用函数getaspectratio()获得。getaspectratio()获取纵横比函数功能:函数getaspectratio()返回x方向和y方向的比例系数,用这两个整型值可计算某一特定屏显的纵横比。用法:此函数调用方式为voidgetaspectratio(intxasp,intyasp);说明:参数xasp指向的变量存放返回的x方向比例系数;参数yasp指向的变量存放返回的y方向比例系数。通常y方向比例系数为10000,x方向比例系数不大于10000(这是因为大多数屏幕像素高比宽长)。注意纵横比自动用作下面函数arc(),circle()和pieslice()中的标尺因子,使屏幕上圆或弧正常显示。但用ellipse()函数画椭圆必须调用本函数获取纵横比作为标尺因子,否则不予调整。纵横比可用于其它几何图形,目的是校正和显示图形。getaspectratio()函数对应的头文件为graphics.h返回值:返回x与y方向比例系数分别存放在xasp和yasp所指向的变量中。例:下面的程序显示纵横比:intxasp,yasp;floataspectratio;getaspectratio(&xasp,&yasp);aspectratio=xasp/yasp;printf("aspectratio:%f",aspectratio);circle()画圆函数功能:函数circle()使用当前绘图色并以实线画一个完整的圆。用法:该函数调用方式为voidcircle(intx,inty,intradius);说明:参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。不同于ellipse()函数,只用单个半径radius参数调用circle()函数,故屏显纵横比可以自动调节,以产生正确的显示图。此函数对应的头文件为graphics.h返回值:无例:画六个同心圆,圆心在(100,100)。#include<graphics.h>voidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");circle(100,100,10);circle(100,100,20);circle(100,100,30);circle(100,100,40);circle(100,100,50);circle(100,100,60);getch();restorecrtmode();}arc()画圆弧函数功能:函数arc()使用当前绘图色并以实线画一圆弧。用法:函数调用方式为voidarc(intx,inty,intstartangle,intendangle,intradius);说明:参数x,y为圆心坐标,startangle与endangle分别为起始角与终止角,radius为半径。圆心坐标和半径以像素个数给出,起始角和终止角以度为单位,0度位于右边,90度位于顶部,180度位于左边,底部是270度。同往常一样,360度与0度重合。角度按逆时针方向增加,但并不要求终止角一定比起始角大。例如指定300度和90度分别为起始角和终止角,与指定300度和450度分别为起始角和终止角可画出相同的弧。大于360度可作为参数,它将被化到0度 ̄360度范围里。函数arc()能画封闭圆,只要取起始角为0度,终止角为360度即可。此函数中,屏显纵横比可自动调节。arc()函数对应的头文件为graphics.h返回值:无例:以(200,200)为圆心,100为半径,从0度到120度画圆弧:#include<graphics.hvoidmain(){intdriver,mode;driver=DETECT;mode=0;initgraph(&driver,&mode,"");setcolor(WHITE);arc(200,200,0,120,100);getch();restorecrtmode();}graphics.h头文件的内容:/*graphics.hDefinitionsforGraphicsPackage.Copyright(c)BorlandInternational1987,1988AllRightsReserved.*/#if__STDC__#define_Cdecl#else#define_Cdeclcdecl#endif#if!defined(__GRAPHX_DEF_)#define__GRAPHX_DEF_enumgraphics_errors{/*graphresulterrorreturncodes*/grOk=0,grNoInitGraph=-1,grNotDetected=-2,grFileNotFound=-3,grInvalidDriver=-4,grNoLoadMem=-5,grNoScanMem=-6,grNoFloodMem=-7,grFontNotFound=-8,grNoFontMem=-9,grInvalidMode=-10,grError=-11,/*genericerror*/grIOerror=-12,grInvalidFont=-13,grInvalidFontNum=-14,grInvalidVersion=-18};enumgraphics_drivers{/*definegraphicsdrivers*/DETECT,/*requestsautodetection*/CGA,MCGA,EGA,EGA64,EGAMONO,IBM8514,/*1-6*/HERCMONO,ATT400,VGA,PC3270,/*7-10*/CURRENT_DRIVER=-1};enumgraphics_modes{/*graphicsmodesforeachdriver*/CGAC0=0,/*320x200palette0;1page*/CGAC1=1,/*320x200palette1;1page*/CGAC2=2,/*320x200palette2:1page*/CGAC3=3,/*320x200palette3;1page*/CGAHI=4,/*640x2001page*/MCGAC0=0,/*320x200palette0;1page*/MCGAC1=1,/*320x200palette1;1page*/MCGAC2=2,/*320x200palette2;1page*/MCGAC3=3,/*320x200palette3;1page*/MCGAMED=4,/*640x2001page*/MCGAHI=5,/*640x4801page*/EGALO=0,/*640x20016color4pages*/EGAHI=1,/*640x35016color2pages*/EGA64LO=0,/*640x20016color1page*/EGA64HI=1,/*640x3504color1page*/EGAMONOHI=0,/*640x35064Koncard,1256Koncard,4pages*/HERCMONOHI=0,/*720x3482pages*/ATT400C0=0,/*320x200palette0;1page*/ATT400C1=1,/*320x200palette1;1page*/ATT400C2=2,/*320x200palette2;1page*/ATT400C3=3,/*320x200palette3;1page*/ATT400MED=4,/*640x2001page*/ATT400HI=5,/*640x4001page*/VGALO=0,/*640x20016color4pages*/VGAMED=1,/*640x35016color2pages*/VGAHI=2,/*640x48016color1page*/PC3270HI=0,/*720x3501page*/IBM8514LO=0,/*640x480256colors*/IBM8514HI=1/*1024x768256colors*/};/*Colorsforsetpaletteandsetallpalette*/#if!defined(__COLORS)#define__COLORSenumCOLORS{BLACK,/*darkcolors*/BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY,/*lightcolors*/LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE};#endifenumCGA_COLORS{CGA_LIGHTGREEN=1,/*PaletteC0ColorNames*/CGA_LIGHTRED=2,CGA_YELLOW=3,CGA_LIGHTCYAN=1,/*PaletteC1ColorNames*/CGA_LIGHTMAGENTA=2,CGA_WHITE=3,CGA_GREEN=1,/*PaletteC2ColorNames*/CGA_RED=2,CGA_BROWN=3,CGA_CYAN=1,/*PaletteC3ColorNames*/CGA_MAGENTA=2,CGA_LIGHTGRAY=3};enumEGA_COLORS{EGA_BLACK=0,/*darkcolors*/EGA_BLUE=1,EGA_GREEN=2,EGA_CYAN=3,EGA_RED=4,EGA_MAGENTA=5,EGA_BROWN=20,EGA_LIGHTGRAY=7,EGA_DARKGRAY=56,/*lightcolors*/EGA_LIGHTBLUE=57,EGA_LIGHTGREEN=58,EGA_LIGHTCYAN=59,EGA_LIGHTRED=60,EGA_LIGHTMAGENTA=61,EGA_YELLOW=62,EGA_WHITE=63};enumline_styles{/*Linestylesforget/setlinestyle*/SOLID_LINE=0,DOTTED_LINE=1,CENTER_LINE=2,DASHED_LINE=3,USERBIT_LINE=4,/*Userdefinedlinestyle*/};enumline_widths{/*Linewidthsforget/setlinestyle*/NORM_WIDTH=1,THICK_WIDTH=3,};enumfont_names{DEFAULT_FONT=0,/*8x8bitmappedfont*/TRIPLEX_FONT=1,/*"Stroked"fonts*/SMALL_FONT=2,SANS_SERIF_FONT=3,GOTHIC_FONT=4};#defineHORIZ_DIR0/*lefttoright*/#defineVERT_DIR1/*bottomtotop*/#defineUSER_CHAR_SIZE0/*user-definedcharsize*/enumfill_patterns{/*Fillpatternsforget/setfillstyle*/EMPTY_FIL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论