数据库课程设计报告
- 格式:docx
- 大小:788.41 KB
- 文档页数:22
成绩: 2016-2017学年第1学期 《数据库系统原理A》课程设计 题目:设计并实现一个点菜管理信息系统
学院名称: 班级学号: 学生姓名: 教师姓名:
2017年1月 一、需求分析 可行性分析 现如今餐饮业发展壮大迅速,拥有一套良好的餐饮管理系统能在很大程度上解决许多问题,方便对服务人员的管理,以及内部的一些信息变化的管理——如菜品的增删,价格的改变、人员的流动,还能很好的管理顾客的点菜、查询消费记录、结账,这将能改善传统意义上的管理,使管理变得方便并且有效,所以本系统有着很好的市场需求前景。 本软件能在很大程度上解决中小型餐厅的消费管理,方便对顾客的消费进行管理,本系统运行时顾客能在菜单上看到当日的所有菜品,并且按照自己的个人喜好进行点餐,也可以选择份数,点餐完毕客户可以查看自己的总消费。 本软件采用Microsoft Visual Studio 2013为前台开发工具,SQL Server 2012 数据库作为后台数据库支持。本软件专为中小型餐厅消费管理而设计,本软件可在Windows上运行,具有很好的可移植性,有良好的中文界面,操作简便,适合餐饮服务人员和顾客使用。
功能清单 该点菜信息管理系统主要面向的用户有餐厅管理员、顾客。不同的角色拥有不同的功能,下面根据角色对该系统的不同操作功能做说明。 本系统主要有以下功能模块: 通用模块: (1)登录功能:登录入口分为两个:内部入口和客户入口。餐厅管理员和顾客粉分别通过不同的登录入口进入系统登录界面。登录时输入的账号和密码必须和数据库中已存在的账号密码相匹配,每个角色只有三次登录的机会,否则就退出软件。本软件为了实现和验证的便捷,规定只有一个管理员,客户有多个。
管理员功能模块 (1)添加菜色 管理员登录成功以后会在界面上看到数据库中已有的菜色(之前已存在),当餐厅推出新菜色的时候,管理员通过在界面输入菜色的菜号、类别、菜名、价格(菜号、菜名不能为空且不能重复,价格不能为空)将新菜品添加到后台数据库,当管理员按下添加按钮时,会有添加成功与否的提示窗,界面上会刷新出现新的后台数据库中的菜单。 (2)查询菜单 菜色查询:当管理员成功登录的时候就能看见数据库中已有的菜单,通过显示框自有的功能可以进行数据的排序,例如按照菜号大小排序,价格高低排序等等。
(3)修改菜色: 当餐厅到了特季或者是特殊情况的时候需要对数据库中已有的菜单进行修改,管理员登录成功以后可以在界面上在需要修改的标签后的文本框中填入新信息(规定必须提供所需修改菜色的菜号,此菜号必须在菜单中存在,菜号不能修改,菜名不可重复),不需要修改的栏目可以空着。 (4)删除菜色: 当管理员需要修改某个菜色的时候,必须提供该菜色的菜号,删除的是整条菜色记录。 (5)订单查询 管理点击订单查询的时候会跳出一个订单的界面,上面显示了所有用户的订单,若是想查看某个用户的订单,则输入用户的账号,点击查询可以显示该用户的订单(包括所选的菜色和每份菜的份数),也会自动显示该用户的消费金额。
顾客功能模块 (1)由于这是一个点菜信息管理系统,所以在顾客功能模块中最基础的功能就是点菜,当用户成功进入后,会在界面显示现有菜单,用户输入菜号和份数,点击选择会在右侧显示所有已选择的菜色(包括菜号、价格、份数等)。当用户需要取消的时候可以输入菜号来退选。当用户全部选择结束,点击查询金额可以计算出顾客消费的总结额。
数据字典 编号 数据项名称 说明部分 1 登录名 字符型 10位 有唯一性
2 账户名 字符型 20位
3 密码 字符型 8位
4 菜号 字符型 8位 有唯一性
5 类别 字符型 20位
6 菜名 字符型 20位
7 价格 整 型 不可为空
8 客户 字符型 10位 有唯一性
9 份数 整 型 int
二、结构设计 概念结构设计 菜单E-R图:
菜单 点菜单E-R图: 管理员E-R图: 用户E-R图: 逻辑结构设计 菜单(菜号,类别,菜名,价格) 点菜单(客户,菜号,类别,菜名,价格,份数) 管理员(登录名,账户名,密码) 用户(登录名,账户名,密码) 点菜(消费金额,菜号,用户登录名)(多对多关系)
三、数据库整体设计与实施
SQL语句——建立基本表 CREATE DATABASE system; //建立数据库
CREATE TABLE 菜单
菜号 类别 菜名
价格
客户 菜号 类别 菜名
价格
份数 点菜单
管理员 登录名名 账户名 密码
登录名 账户名 密码
用户 (菜号 CHAR(8) PRIMARY KEY, 类别 CHAR(20), 菜名 CHAR(20) UNIQUE, 价格 INT );
CREATE TABLE 用户 (登录名 CHAR(10) PRIMARY KEY, 账户名 CHAR(20) UNIQUE, 密码 CHAR(8) );
CREATE TABLE 管理员 (登录名 CHAR(10) PRIMARY KEY, 账户名 CHAR(20) UNIQUE, 密码 CHAR(8) );
CREATE TABLE 点菜单 (菜号 CHAR(8), 类别 CHAR(20), 菜名 CHAR(20), 价格 INT, 份数 SMALLINT, 客户 CHAR(10) );
数据库及其基本表的构建 管理员: 用户: 菜单: 点菜单: 四、功能模块的设计与实施 通用模块: (1)登录功能:登录入口分为两个:内部入口和客户入口。餐厅管理员和顾客粉分别通过不同的登录入口进入系统登录界面。登录时输入的账号和密码必须和数据库中已存在的账号密码相匹配,每个角色只有三次登录的机会,否则就退出软件。本软件为了实现和验证的便捷,规定只有一个管理员,客户有多个。 管理员功能模块
(1)添加菜色 管理员登录成功以后会在界面上看到数据库中已有的菜色(之前已存在),当餐厅推出新菜色的时候,管理员通过在界面输入菜色的菜号、类别、菜名、价格(菜号、菜名不能为空且不能重复,价格不能为空)将新菜品添加到后台数据库,当管理员按下添加按钮时,会有添加成功与否的提示窗,界面上会刷新出现新的后台数据库中的菜单。 (2)查询菜单 菜色查询:当管理员成功登录的时候就能看见所有数据库中已有的菜单,通过显示框自有的功能可以进行数据的排序,例如按照菜号大小排序,价格高低排序等等。 (3)修改菜色: 当餐厅到了特季或者是特殊情况的时候需要对数据库中已有的菜单进行修改,管理员登录成功以后可以在界面上在需要修改的标签后的文本框中填入新信息(规定必须提供所需修改菜色的菜号,此菜号必须在菜单中存在,菜号不能修改,菜名不可重复),不需要修改的栏目可以空着。 (4)删除菜色: 当管理员需要修改某个菜色的时候,必须提供该菜色的菜号,删除的是整个菜色记录。 (5)订单查询 管理点击订单查询的时候会跳出一个订单的界面,上面显示了所有用户的订单,若是想查看某个用户的订单,则输入用户的账号,点击查询可以显示该用户的订单(包括所选的菜色和每份菜的份数),也会自动显示该用户的消费金额。
顾客功能模块 (1)由于这是一个点菜信息管理系统,所以在顾客功能模块中最基础的功能就是点菜,当用户成功进入后,会在界面显示现有菜单,用户输入菜号和份数,点击选择会在右侧显示所有已选择的菜色(包括菜号、价格、份数等)。当用户需要取消的时候可以输入菜号来退选。当用户全部选择结束,点击查询金额可以计算出顾客消费的总结额。 五、总结
点菜信息管理系统的设计总的来说分为三部分:数据库及基本表的设计与实施、前台界面的设计与实施、基本功能以及整体功能的设计。整体上,该系统基本完成,相关功能比较齐全,在设计过程中遇到不少难点,通过查找资料和请教老是同学难点都得到了解决。 数据库及基本表的设计与实施相对来说比较简单,之前在数据库实验的时候已经进行了熟练的练习,对于数据库设计的步骤和详细过程都掌握得比较好。需求分析通过调研、查找资料对该系统应该具备什么功能也有了清晰的认识,便于接下来的结构和功能实现。在结构设计阶段,因为在课程上E-R图和关系模式都是重点,所以设计起来也是得心应手,节省了大量的时间。这次课程设计过程中,主要的难点就是在应用设计这一模块,在做界面的时候选择的语言是C#,便于设计界面,但此前并没有接触过C#,所以花费了部分时间去熟悉,所幸的是此次课程设计所需要用到的语言知识并不是很多,更多的是它的窗体设计,在使用的过程中也真正发现C#在界面这一方面的确是非常的便捷,只需要拖出所需控件,编写主要代码即可。在界面设计完成以后,第一个真正的难点摆在了面前,那就是VS与数据库之间的连接,通过各种资料查询和多次修改最终成功实现了连接,接下来的功能实现也有了起点。界面设计的时候,由于功能比较分散,创建了许多窗体文件,但是在设计的过程中发现有些界面可以进行集合,减少了界面数,也使得整个功能比较合理。在功能实现的方面,有一条原则,那就是尽量与现实情况相符合,而不是为了完成课程设计,所以在例如密码验证、登录次数、重要数据不可为空等方面都要注意。 由于此此系统需要与后台的数据库相连接,所以很重要的一项工作就是从数据库中读写数据,这就需要用到在C#语言中嵌入SQL语句,这两种语言单独分开都不是很困难,但是两者嵌套还是第一次使用,一时间也是比较茫然,通过多次调试最终也是完成了第一次,有了一个的成功,其他都显得容易得多了。在操作数据库的时候会出现一些比较有意义的错误就是没有注意到之前建表时对数据的限制,包括主码、外码、类型等等,也造成了不少的错误,改正之后也是吸取了教训,实现时更加的谨慎。 总体而言,这次的课程设计完成的较为成功,但是还是有很多需要修改的地方,由于时间原因,只能把一些基本功能完成,并且设计出简单的窗体完成界面的设计,在真正应用上还差了太多。但是这次的课设收获是很大的,第一是熟悉了C#语言并且将数据库结合其中,第二个是首次接触了软件设计,由于专业的性质和个人兴趣方面,一直没有向这方面去了解;第三就是最重要的,加强了自己的实践动手能力,这对未来踏上工作岗位有很大的帮助。希望自己能在一次次的实践中不断进步,不断提高自己。