资源描述
中国矿业大学徐海学院计算机系
《软件课程设计2》报告
姓 名: 王旭 学 号: 22080348
专 业: 计算机科学与技术
设计题目: 餐饮管理系统
指导教师: 周海燕
2011年 10 月
目 录
第一章 系统需求分析 4
1.1 系统功能需求分析 4
1。2 系统数据流图 4
第二章 系统概要设计 5
2。1 系统总体框图设计 5
2.2各模块功能分析 .。.。.。。。。。.。。.。5
第三章 数据库设计 6
3.1 系统E—R图设计 7
3.2数据表的设计 8
第四章 系统详细设计及实现 10
4。1系统登陆界面设计 10
4。2主界面设计 12
4。3食品信息设置界面设计 21
第五章 软件测试及调试。....。。。。。。。。..。。。.。..。。..。。。。。..。.。。。.。。 27
5。1 软件功能测试 27
5.2数据模块的实现 27
第六章总结 。。。.。28
参考文献 29
摘要
近几年来,随着我国国民经济的稳定增长,餐饮业的竞争也越来越激励,想在这样竞争激励的环境下生存,就必须运用科学的管理思想与先进的管理方法,使用点餐与管理一体化.这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使得管理者能够准确,有效的管理餐饮.因此,餐饮业的管理者更需要一种综合实时的管理模式,希望从更科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜.结合管理信息系统的开发方法及步骤,以此为理论根据,开发出一个信息管理系统-—餐饮管理系统。它采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成.通过本系统功能模块,可为各种大小不同的餐饮管理所使用.为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂。具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象.
关键字:餐饮管理系统、提高服务水平、提高工作效率
第一章 系统需求分析
1。1系统功能需求分析
随着现在连锁餐饮店的不断崛起,作为餐饮业不可缺少的一部分-—餐饮管理系统,它的内容对于餐饮业的决策者和管理者来说都非常重要。本系统基于餐饮管理系统之下的一个子系统,可以把整个餐饮店的日常经营管理信息化,包括点餐、库存管理、员工信息等日常经营的一些统计功能。现在此系统还不够完善,将来使此系统会集成更多的功能,例如:餐饮管理系统的开发成功,实现了餐饮业的现代化,表明了餐饮管理正与国际化接轨,有了更为深入的发展。
《餐软管理系统》采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成。通过本系统功能模块,可为各种大小不同的餐饮管理所使用.为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂。具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象.
根据实际情况的需要,系统主要功能如下:
⑴ 前台管理:开台管理、客户结账、退出系统。
⑵ 系统管理:权限管理、系统管理、帮助。
⑶ 基础信息管理:酒水信息查询、菜谱信息查询及设置。
1。2 系统数据流图
根据实际情况要求,系统数据流图如图1。2。1所示
图1.2.1数据流图
第二章 系统概要设计
2.1系统总体框架设计
根据业务情况,该系统共分为开台、取消开台、客户点菜、消费查询、结账设置等模块。
2。2各模块功能分析
(1)系统登录窗口主要功能:
1)以图标形式显示数据库中操作员,并凭口令登入到主界面。
2)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。
(2)系统主界面主要功能
1)根据操作员权限设置相应权限的菜单和工具栏功能。
2)可通过菜单或快捷键进入相应子界面。
3)显示了系统当前时间和相应操作员.
(3)系统菜谱信息设置界面主要功能:
实现对菜谱信息的添加、修改、删除、查询的功能。
(4)系统开台管理界面主要功能:
1)以图标模式显示空台、营业台,点击台号图标则自动显示相应台号信息。
2)通过输入台号检索符合条件的台号。
3)点击空房自动弹出与昂查询窗口从而自动开台。
(5)系统点菜界面主要功能:
1)实现菜谱,酒水查询的链接。
2)点击“开始点菜"按钮台号状态自动变为开台,并聚焦到编号栏。
3)在编号栏输入菜编号按回车自动录入菜的信息,。
4)自动生成结账编号,输入菜数量自动计算合计消费金额。
第三章 数据库设计
3.1系统E—R图的设计
开台点菜E—R图
食品信息E—R图
桌台信息E-R图
职员信息E—R图
3.2数据库表设计
数据库表设计是总体设计阶段非常重要的环节,好的数据库表可以简化开发过程,使系统功能更加清晰明确。因为数据库结构的变化会造成编码的改动,所以必须认真设计数据库后再进行编码,从而避免了无谓的重复的工作。
本系统采用了SQL Server数据库,数据库名称为db_mycy。该数据库包含4个表,分别是:food表,room表,user表,waiter表,zhangdan表。下面分别介绍数据表的结构。
1、 food表
food表用于保存food的相关信息。food表见表3—2—1所示.
food表结构
2、 room表
room表用于显示房间和大厅的信息。room表见表3—2—2所示。
3、user表用来显示的管理员经理和客户的信息。user表的如图3—2—3所示。
表3-2—3user结构
4、waiter表用于方便用户选择自己喜欢的服务员为自己服务。user表的如图3—2-4示.
表3-2-4waiter表
5、zhangdan表用于账户更好的知道自己的消费记录,zhangdan表的如图3-2—5示。
表3—2—5zhangdan表
第四章 系统详细设计及实现
4.1系统登陆界面设计
1.实现目标
程序启动后,首先登陆此界面验证操作员的密码.主要实现的功能如下:
输入用户名和密码
系统登录界面如图4.1。1所示.
图4。1。1 系统登录界面
程序主要代码如下:
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
txtName。Focus();
}
private void txtPwd_KeyPress(object sender, KeyPressEventArgs e)
{
if (e。KeyChar == 13)
{
btnSubmit_Click(sender, e);
}
}
private void btnSubmit_Click(object sender, EventArgs e)
{
if (txtName。Text == "")
{
MessageBox.Show(”请输入密码", "警告”, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
if (txtPwd.Text == ”")
{
MessageBox。Show("请输入密码", ”警告?”, MessageBoxButtons。OK, MessageBoxIcon.Warning);
}
else
{
SqlConnection conn = BaseClass。DBConn.CyCon();
conn.Open();
SqlCommand cmd = new SqlCommand(”select count(*) from tb_User where UserName=’” + txtName。Text + ”’ and UserPwd=’" + txtPwd.Text + ”'", conn);
int i = Convert.ToInt32(cmd。ExecuteScalar());
if (i 〉 0)
{
cmd = new SqlCommand(”select * from tb_User where UserName=’” + txtName。Text + "'”, conn);
SqlDataReader sdr = cmd。ExecuteReader();
sdr.Read();
string UserPower = sdr[”power"]。ToString()。Trim();
conn.Close();
frmMain main = new frmMain();
main。username = txtName.Text;
main。power = UserPower;
main。Names = txtName。Text;
main。Times = DateTime。Now。ToShortDateString();
main。Show();
this。Hide();
}
else
{
txtName.Text = ”";
txtPwd.Text = ”";
if (MessageBox.Show("用户名或密码错误”,” 警告",MessageBoxButtons。OK,MessageBoxIcon。Warning)==DialogResult.OK)
{
}
}
}
}
}
private void btnConcel_Click(object sender, EventArgs e)
{
if (MessageBox。Show("确定退出系统吗?", ”提示”, MessageBoxButtons.OKCancel, MessageBoxIcon。Asterisk) == DialogResult。OK)
{
Application。Exit();
}
}
}
}
4。2主界面设计
1、程序启动后。系统在“登陆界面”验证操作员密码后,将进入此界面.系统主界面主要功能:
主程序界面如图4.2。1所示。
图4.2.1主程序界面
主要程序代码如下:
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
public SqlDataReader sdr;
public string power;
public string Names;
public string Times;
public string username;
private void frmMain_Load(object sender, EventArgs e)
{
switch (power)
{
case "0”: toolStripStatusLabel13。Text = "超级管理员"; break;
case ”1”: toolStripStatusLabel13。Text = "经理”; break;
case ”牢记密码”: toolStripStatusLabel13.Text = ”牢记密码”; break;
// case ”2”: toolStripStatusLabel13。Text = ”一°?般ã?用®?户¡ì”; break;
default : toolStripStatusLabel13.Text="一般用户";break;
}
toolStripStatusLabel10。Text = Names;
toolStripStatusLabel16。Text = Times;
/* if (power == ”2”)
{
系统维护SToolStripMenuItem。Enabled = false;
基础信息MToolStripMenuItem。Enabled = false;
}
*/
if (power == "0" || power == "牢记密码”)
{
}
// if (power == ”牢记密码”)
// {
// }
else if (power == "1")
{
系统维护SToolStripMenuItem.Enabled = false;
}
else
{
系统维护SToolStripMenuItem。Enabled = false;
基础信息MToolStripMenuItem。Enabled = false;
}
}
private void AddItems(string rzt)
{
if (rzt == "使用”)
{
lvDesk.Items。Add(sdr[”RoomName”]。ToString(), 1);
}
else
{
lvDesk。Items。Add(sdr["RoomName"].ToString(), 0);
}
}
private void 开a台¬¡§ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lvDesk。SelectedItems.Count != 0)
{
string names = lvDesk。SelectedItems[0]。SubItems[0]。Text;
frmOpen openroom = new frmOpen();
openroom。name = names;
openroom。ShowDialog();
}
else
{
MessageBox.Show(”请选择桌台");
}
}
private void frmMain_Activated(object sender, EventArgs e)
{
lvDesk.Items.Clear();
SqlConnection conn = BaseClass.DBConn.CyCon();
conn。Open();
SqlCommand cmd = new SqlCommand(”select * from tb_Room”, conn);
sdr = cmd.ExecuteReader();
while (sdr。Read())
{
string zt = sdr[”RoomZT”]。ToString()。Trim();
AddItems(zt);
}
conn.Close();
}
private void 点Ì?菜?ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lvDesk。SelectedItems。Count != 0)
{
string names = lvDesk。SelectedItems[0]。SubItems[0]。Text;
frmDC dc = new frmDC();
dc。RName = names;
dc。ShowDialog();
}
else
{
MessageBox。Show(”请选择桌台");
}
}
private void 消费查询ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lvDesk。SelectedItems。Count != 0)
{
string names = lvDesk。SelectedItems[0].SubItems[0].Text;
frmSerch serch = new frmSerch();
serch.RName = names;
serch。ShowDialog();
}
else
{
MessageBox。Show(”请选择桌台”);
}
}
private void 结¨¢账?ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (lvDesk.SelectedItems。Count != 0)
{
string names = lvDesk。SelectedItems[0]。SubItems[0].Text;
frmJZ jz = new frmJZ();
jz.Rname = names;
jz。ShowDialog();
}
else
{
MessageBox.Show(”请选择桌台”);
}
}
private void lvDesk_DoubleClick(object sender, EventArgs e)
{
frmDetails details = new frmDetails();
details。TableName = lvDesk.SelectedItems[0].SubItems[0].Text;
details。ShowDialog();
}
private void lvDesk_Click(object sender, EventArgs e)
{
string names = lvDesk.SelectedItems[0]。SubItems[0].Text;
SqlConnection conn = BaseClass。DBConn.CyCon();
conn。Open();
SqlCommand cmd = new SqlCommand(”select * from tb_Room where RoomName=’” + names + ”'”, conn);
SqlDataReader sdr = cmd。ExecuteReader();
sdr。Read();
string zt = sdr[”RoomZT”]。ToString().Trim();
sdr。Close();
if (zt == ”使用")
{
this。contextMenuStrip1。Items[0]。Enabled = false;
this.contextMenuStrip1。Items[1].Enabled = true;
this.contextMenuStrip1。Items[3].Enabled = true;
this.contextMenuStrip1。Items[5].Enabled = true;
this。contextMenuStrip1。Items[6]。Enabled = true;
}
if (zt == ”使用”)
{
this.contextMenuStrip1.Items[0]。Enabled = true;
this。contextMenuStrip1.Items[1].Enabled = false;
this。contextMenuStrip1.Items[3]。Enabled = false;
this.contextMenuStrip1。Items[5].Enabled = false;
this。contextMenuStrip1。Items[6].Enabled = false;
}
conn。Close();
}
private void 取消开台toolStripMenuItem_Click(object sender, EventArgs e)
{
if (lvDesk。SelectedItems。Count != 0)
{
SqlConnection conn = BaseClass.DBConn.CyCon();
conn。Open();
string names = lvDesk。SelectedItems[0].SubItems[0]。Text;
SqlCommand cmd = new SqlCommand(”Select * from tb_guestfood where roomname=’” + names + "’", conn);
int i = Convert。ToInt32(cmd。ExecuteScalar());
if (i 〉 0)
{
MessageBox.Show("请先结账!!”);
}
else
{
cmd = new SqlCommand("update tb_Room set RoomZT=’待用’,Num=0 where RoomName=’” + names + "’”, conn);
cmd.ExecuteNonQuery();
cmd = new SqlCommand("delete from tb_GuestFood where roomname='” + names + "’", conn);
cmd。ExecuteNonQuery();
conn。Close();
frmMain_Activated(sender, e);
}
}
else
{
MessageBox.Show("请选择桌台”);
}
}
private void 桌台信息ToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmDesk desk = new frmDesk();
desk.ShowDialog();
}
private void 职员信息ToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmUser users = new frmUser();
users。ShowDialog();
}
private void 日历ToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmCalender calender = new frmCalender();
calender。ShowDialog();
}
private void 记事本ToolStripMenuItem1_Click(object sender, EventArgs e)
{
System.Diagnostics。Process.Start(”notepad。exe”);
}
private void 计算器ToolStripMenuItem1_Click(object sender, EventArgs e)
{
System。Diagnostics。Process。Start(”calc.exe”);
}
private void 权限管理ToolStripMenuItem1_Click(object sender, EventArgs e)
{
}
private void 口令设置ToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmPwd pwd = new frmPwd();
pwd.names = Names;
pwd。ShowDialog();
}
private void 说定系统ToolStripMenuItem1_Click(object sender, EventArgs e)
{
frmLock locksystem = new frmLock();
locksystem。Owner = this;
locksystem。ShowDialog();
}
private void 关于ToolStripMenuItem1_Click(object sender, EventArgs e)
{
AboutBox1 ab = new AboutBox1();
ab。ShowDialog();
}
private void 退出系统ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (MessageBox。Show("确定退出本系统吗?”, ”提示", MessageBoxButtons。OKCancel, MessageBoxIcon。Exclamation) == DialogResult.OK)
{
Application.Exit();
}
}
private void 系统维护ToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void修改用户权限ToolStripMenuItem_Click(object sender, EventArgs e)
{
frmXgQx qx = new frmXgQx();
qx。username = username;
qx.ShowDialog();
}
private void 注册新用户ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmZc zc = new FrmZc();
zc。ShowDialog();
}
private void 删除用户ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmSch sch = new FrmSch();
sch。Sh
展开阅读全文