曾道免费资料大全正版l
大学生考试网 让学习变简单
赞助商链接

餐饮管理系统数据库课程设计论文

餐饮管理系统数据库课程设计论文

曾道免费资料大全正版l www.140827.com
河南科技大学 课 程 设 计 说 明 书
课程名称 题 目
程序设计方法课程设计 酒店餐饮管理系统的设计

院 班

系 级

经济与管理学院

信管 122 韦一
靖恒昌 2012 年 12 月 20 日

学生姓名 指导教师 日 期

课程设计任务书
(指导教师填写) 课程设计名称 程序设计方法课程设计 学生姓名 韦一 专业班级 设计题目 一、课程设计目的 该课程设计是信息管理本科集中实践性环节之一,是学习完《数据库基础 与应用》和《程序设计方法》课程后进行的一次全面的综合练习。其目的是通过 本课程设计使学生对具体问题应用《程序设计方法》课程中所学的方法与技术, 进行需求分析及软件设计的过程, 不仅对程序设计方法课程中的所有知识点进行 一个全面的复习巩固,更重要的是增强学生解决实际问题的能力。 二、设计内容、技术条件和要求 (1) 本环节要求学生根据程序设计方法整个课程的所学内容,自己独立设计 完成一个比较复杂的小型管理系统。 (2)所设计的小型管理系统要求功能比较完善,应包含输入输出、查询、 插入、删除、打印等基本功能 (2)程序内容自己灵活设计,包括规划自己的数据库和设计程序功能和界 面设计。 (3)数据库中不能少于两个表。 (5)程序应功能完善,界面友好,容错性好,操作方便。 三、时间进度安排 系统分析与规划 系统设计与调试 半周 一周 酒店餐饮管理系统 信管 122

撰写课程设计说明书 半周 四、主要参考文献 郑阿奇,PowerBuilder 实用教程(第二版) ,电子工业出版社 董军,王玉,康祥顺,PowerBuilder 案例开发集锦,电子工业出版社 张长富,PowerBuilder9.0 实例教程,电子科技大学出版社 指导教师签字: 2012 年 12 月 23 日

需求分析
通过实际了解,要求本系统具有以下功能: 系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储 安全可靠。 实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。 对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。 实现对消费账目自动结算。 实现对消费的历史记录进行查询。 实现对餐厅人员流动进行管理以及能够管理餐厅桌台信息。 系统应最大限度地实现易维护性和易操作性。餐饮管理系统的用例图,如下 图 2.1 所示。

图 2.1 餐饮管理系统的用例图

项目规划
餐饮管理系统主要由用户登录、 桌台信息管理、 服务员信息管理、 修改密码、 开台、取消开台、点/加菜、消费查询、数据库管理和退出等??樽槌?,具体规 划如下。 (1) 用户登录???该??橹饕糜谑迪盅橹び没欠窈戏?,只有合法用户才能有权登录,只有 登录成功情况下才能进入系统功能主界面, 并且在登录的同时能验证登录人员的 管理权限,根据权限显示其能管理范围。 (2) 桌台信息管理???该??橹饕糜诠芾碜捞ǖ男畔?,可以设置桌台名称,桌台位置,桌台占用 所需价钱。

(3) 服务员信息管理???该??橹饕糜诜奖愣苑袢嗽钡男畔⒔泄芾?。 (4) 修改密码???该??橹饕糜谑迪侄缘锹既嗽钡拿苈虢泄芾?, 长时间不更换密码是不安 全的,增加此??槟茉黾酉低车陌踩?。 (5) 开台???该??橹饕糜谑迪侄怨丝徒锌?,已经占用的桌台不能被再次分配,方 便分配未占用的桌台给顾客 (6) 取消开台???该??橹饕糜谑迪侄砸丫ǖ淖捞ń腥∠?。 (7) 消费查询???该??橹饕糜谑迪挚突芄徊檠约阂严亚宓デ榭?,进行核对自己的消 费。 (8) 结账???该??橹饕糜谑迪侄钥突У南呀凶远阕?,显示消费金额,能进行找 零计算。 (9) 数据库管理???该??橹饕糜谑迪侄韵低呈菘獾谋阜?, 防止系统在死机的情况下丢失大 量重要信息。 餐饮管理系统的业务流程图如图 3.1 所示。

系统功能结构
系统功能结构图如图 3.2 所示。

餐饮管理系统

用 户 登 录 管 理

桌 台 信 息 管 理

结 账 管 理

数 据 库 管 理

消 费 查 询 管 理

服 务 员 管 理

密 码 管 理

gu an l

添 加

取 消 开 台

开 台

更 新

删 除

恢 复

备 份

添 加

更 新

删 除

修 改 密 码

数据表概要说明
为了对本系统后台数据库中的数据表有一个更清晰的认识, 在此设计了一个 数据表树形结构图,该结构图包括系统所有数据表,如图所示。

数据表树状结构图

部分数据表 E-R 图
本里中规化出的实体主要有菜品信息实体、顾客点菜信息实体、桌台信息实 体、用户登录信息实体和服务员信息实体。其中部分实体的 E-R 图如下所示。

用户表实体 E-R 图

菜品信息实体 E-R 图

桌台信息实体 E-R 图

员工信息实体 E-R 图

顾客点菜信息实体 E-R 图

数据表的结构
(1) food 表(菜品信息表) 表 food 用于保存菜品的基本信息,该表的结构如图所示。

菜品信息表 (2) guestfood 表(顾客点菜信息表)

表 guestfood 用于保存顾客点菜的详细信息,该表的结构如图所示。

(3) room 表(桌台信息表)

表 room 用于保存桌台的一些有关信息,该表的结构如图 4.9 所示。

桌台信息表 (4) userlogin 表(登录人员信息表)

表 userlogin 用于保存登录用户基本信息,表的结构如图 4.10 所示。

登录用户信息表

(5) waiter 表(餐厅服务人员信息表)

表 waiter 用于保存餐厅服务人员的一些基本信息,表的结构如图所示。

餐厅服务人员信息表

系统登录??榈纳杓朴胧迪?br />系统登录主要用于对进入餐饮管理系统的用户进行安全性检查, 以防止非法 用户进入该系统。在登录时,只有合法的用户,才可以进入该系统。系统登录窗 体如图 4.12 所示。

系统登录

代码设计 单击【确定】按钮,程序执行判断用户输入的用户名和密码是否正确,如果 正确,则成功登录餐饮管理系统,并将用户名、用户使用权限、用户登陆时间传 到主窗体中, 同时分别使用 Names、power、Times 全局变量进行接受。 否则, 弹出 “用

户名或密码错误”信息提示?!救范ā堪磁サ?Click 事件代码如下:
private void btnSure_Click(object sender, EventArgs e) { if (txtUserName .Text { MessageBox.Show("用户名不能为空", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { if (txtPwd.Text == "")//判断密码是否为空 { MessageBox.Show("请输入密码", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else//用户名及密码不为空的情况下执行如下代码 { SqlConnection conn = connectToDatabase .restaurantManagementConn (); conn.Open(); SqlCommand cmd = new SqlCommand("select count(*) from UserLogin where UserName='" + txtUserName .Text conn); int i = Convert.ToInt32(cmd.ExecuteScalar()); if (i > 0) { cmd = new SqlCommand("select * from UserLogin where UserName='" + txtUserName .Text + "'", conn); SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); string UserPower = sdr["Power"].ToString().Trim(); conn.Close(); formMain main = new formMain(); main.power = UserPower; main.Names = txtUserName .Text ; main.Times = DateTime.Now.ToShortDateString(); main.Show(); this.Hide(); } else { MessageBox.Show("用户名或密码错误"); } } + "' and UserPwd='" + txtPwd .Text + "'", == "")//判断用户名是否为空

} }

主窗体的设计与实现
在正确验证用户的用户名和密码以后,就显示出餐饮管理系统的主窗体。主 窗体主要用于显示系统所具有的功能, 例如菜单栏里显示了基础信息、 辅助工具、 系统设置、退出系统、系统维护等几个功能???。用户可以选择相应的按钮对应 的子功能对系统进行不同的操作,餐饮管理系统的主窗体如图 4.13 所示。

主窗体

主窗体实现的几个重要功能实现代码如下:

//接收从login窗体传来的信息,以下四个定义的变量是以后代码用到的全局变量 public string power; public string Names; public string Times; private SqlDataReader sdr; //以下是窗体加载时执行的代码 private void formMain_Load(object sender, EventArgs e)

{ StatusLabeUser.Text = Names; StatusLabeLoginTime.Text = Times; switch (power) { case "0": StatusLabePower.Text = "超级管理员"; break; case "1": StatusLabePower.Text = "经理"; TSMenuItemSystemMaintenance.Enabled = false; break; } } private void formMain_Activated(object sender, EventArgs e)//窗体激发时执行如下代码 { lvDesk.Items.Clear(); SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("select * from Room", conn); sdr = cmd.ExecuteReader(); while ( sdr .Read()) { string status = sdr["RoomStatus"].ToString().Trim(); AddItems(status );//根据桌台使用与否,选择图片显示桌子是否在被用中 } conn.Close(); } private void AddItems(string status) { if (status == "使用") { lvDesk.Items.Add(sdr["RoomName"].ToString(), 1); } else { lvDesk.Items.Add(sdr["RoomName"].ToString(), 0); } } //右键中单击开台会执行如下代码 private void 开台ToolStripMenuItem_Click(object sender, EventArgs e) if (lvDesk.SelectedItems.Count != 0) { string names = lvDesk.SelectedItems[0].SubItems[0].Text; {

formOpen frm = new formOpen(); frm.name = names; frm.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; SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("update Room set RoomStatus='待用',Num=0 Where RoomName='" + names + "'", conn); cmd.ExecuteNonQuery(); cmd = new SqlCommand("delete from GuestFood where DiningTable='" + names + "'", conn); cmd.ExecuteNonQuery(); conn.Close(); formMain_Activated(sender, e); } else { MessageBox.Show("请选择桌台"); } } {

其他右键功能代码在源代码中,代码设计思想和开台代码类似。
//单击listview控件中的一项内容时会执行如下代码,这里我们将listview的name定义为lvDesk private void lvDesk_Click(object sender, EventArgs e) { string names = lvDesk.SelectedItems[0].SubItems[0].Text; SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("select * from Room where RoomName='" + names + "'", conn); SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); string status = sdr["RoomStatus"].ToString().Trim();//将选中桌台的状态信息提取出来 sdr.Close(); if (status == "使用")

{ 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 (status == "待用") { 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(); } //双击listview控件中的一项内容时会执行如下代码 private void lvDesk_DoubleClick(object sender, EventArgs e) deskInfo desk = new deskInfo (); desk .tableName } //单击menustrip控件中基础信息下的桌台信息管理按钮会执行如下代码 private void TSMenuItemTableInfo_Click(object sender, EventArgs e) { deskInfoManagement desk = new deskInfoManagement(); desk.ShowDialog(); } = lvDesk.SelectedItems[0].SubItems[0].Text; desk.ShowDialog(); {

menustrip 控件中的其他按钮的代码设计思路与上面的单击 menustrip 控件中基础信息下的桌台信息管理按钮类似都是初始化一个相应窗体的对象, 显示窗体。 注:其他代码详见系统设计文档。

右键菜单中的几个重要功能的介绍
右键菜单功能中顾客可以选择开台,取消开台,点菜,查询消费记录以及 结账,下面介绍其中三个重要功能的实现代码,有开台,点菜以及结账,窗体 运行结果分别如图 4.14、图 4.15 和图 4.16 所示。

开台窗体

点菜窗体

结账窗体

凭证信息录入窗体的主要实现代码如下: 实现代码
public string name; public SqlConnection conn; private void formOpen_Load(object sender, EventArgs e) { conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("select * from Room", conn); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { cbNum.Items.Add(sdr["RoomName"].ToString().Trim()); } cbNum.SelectedItem = name.Trim(); sdr.Close(); cmd = new SqlCommand("select * from Waiter", conn); sdr = cmd.ExecuteReader(); while (sdr.Read()) { cbWaiter.Items.Add(sdr["WaiterName"].ToString().Trim()); } cbWaiter.SelectedIndex = 0; sdr.Close(); }

private void txtNum_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar != 8 && !char.IsDigit(e.KeyChar)) && e.KeyChar != 13) { MessageBox.Show("请输入数字"); e.Handled = true; } } private void btnSave_Click(object sender, EventArgs e) { if (txtNum.Text == "" || Convert.ToInt32(txtNum.Text) <= 0) { MessageBox.Show("请输入用餐人数"); } else { string RoomName = cbNum.SelectedItem.ToString(); SqlCommand cmd1 = new SqlCommand("update Room set GuestName='" + txtName.Text + "',PaymentDate='" + dateTimePicker1.Value.ToString() + "',Num='" + Convert.ToInt32(txtNum.Text) + "',WaiterName='" + cbWaiter.SelectedItem.ToString() + " ',RoomStatus='使用' where RoomName='" + name + "'", conn); cmd1.ExecuteNonQuery(); this.Close(); } }

public string RName; public int i = 0; private void formOrder_Load(object sender, EventArgs e)//formOrder窗体加载时执行下列语句 { // TODO: 这行代码将数据加载到表 “restaurantManageDataSet.GuestFood” 中。您可以根据需 要 移动或移除它。 this.guestFoodTableAdapter.Fill(this.restaurantManageDataSet.GuestFood); //向treeview节点添加四类菜 TreeNode newnode1 = tvFood.Nodes.Add("煲汤"); TreeNode newnode2 = tvFood.Nodes.Add("肉菜"); TreeNode newnode3 = tvFood.Nodes.Add("素菜"); TreeNode newnode4 = tvFood.Nodes.Add("主食"); SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open();

//表中foodtype为1的是“煲汤”类的菜 SqlCommand cmd = new SqlCommand("select * from food where FoodType='1'", conn); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { //将属于“煲汤”类的菜从数据表中找出,加到treeview节点上 newnode1.Nodes.Add(sdr[3].ToString().Trim()); sdr.Close(); cmd = new SqlCommand("select * from food where FoodType='2'", conn); sdr = cmd.ExecuteReader(); while (sdr.Read()) { newnode2.Nodes.Add(sdr[3].ToString().Trim()); } sdr.Close(); cmd = new SqlCommand("select * from food where FoodType='3'", conn); sdr = cmd.ExecuteReader(); while (sdr.Read()) { newnode3.Nodes.Add(sdr[3].ToString().Trim()); } sdr.Close(); cmd = new SqlCommand("select * from food where FoodType='4'", conn); sdr = cmd.ExecuteReader(); while (sdr.Read()) { newnode4.Nodes.Add(sdr[3].ToString().Trim()); } sdr.Close(); cmd = new SqlCommand("select * from Waiter", conn);//找出所有服务员信息 sdr = cmd.ExecuteReader(); while (sdr.Read()) { //将WaiterName字段信息找出添加到cbWaiter.Items上 cbWaiter.Items.Add(sdr["WaiterName"].ToString().Trim()); cbWaiter.SelectedIndex = 0; sdr.Close(); cmd = new SqlCommand("select RoomStatus from Room where RoomName='" + RName + "'", conn); string zt = Convert.ToString(cmd.ExecuteScalar()); if (zt.Trim() == "待用") { groupBox1.Enabled = false; groupBox2.Enabled = false; } }

groupBox3.Enabled = false; groupBox4.Enabled = false; } conn.Close(); GetData(); tvFood.ExpandAll(); } private void GetData()//以下代码用来将GuestFood表中信息查询出来捆绑到DataGridView上 { SqlConnection conn = connectToDatabase.restaurantManagementConn(); SqlDataAdapter sda = new SqlDataAdapter("select foodname,foodsum,foodallprice,waitername, textOfDetails,diningTable,datetime from GuestFood where diningtable='" + RName + "'order by ID desc", conn); DataSet ds = new DataSet(); sda.Fill(ds); dgvFoods.DataSource = ds.Tables[0]; } //对treeview上节点执行双击操作时会执行以下代码 private void tvFood_DoubleClick(object sender, EventArgs e) { string foodname = tvFood.SelectedNode.Text;//将双击项名称取出赋值给foodname if (foodname == "煲汤" || foodname == "肉菜" || foodname == "素菜" || foodname == "主食") { } else { SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("select * from food where foodname='" + foodname + "'", conn); SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); txtNum.Text = sdr["foodnum"].ToString().Trim(); txtName.Text = foodname; txtprice.Text = sdr["foodprice"].ToString().Trim(); conn.Close(); if (txtpnum.Text == "") { MessageBox.Show("数量不能为空"); return; } else {

txtallprice.Text = Convert.ToString(Convert.ToInt32(txtprice.Text) * Convert.ToInt32(txtpnum.Text)); } } } private void btnDelete_Click(object sender, EventArgs e)//单击删除按钮时执行如下代码 { if (dgvFoods.SelectedRows.Count > 0) { string names = dgvFoods.SelectedCells[0].Value.ToString(); SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("delete from GuestFood where foodname='" + names + "' and diningTable='" + RName + "'", conn); cmd.ExecuteNonQuery(); conn.Close(); GetData(); } } private void btnSave_Click(object sender, EventArgs e) { if (txtName.Text == "" || txtNum.Text == "" || txtprice.Text == "") { MessageBox.Show("请将选择菜系"); return; } else { if (txtpnum.Text == "") { MessageBox.Show("数量不能为空"); return; } else { if (Convert.ToInt32(txtpnum.Text) <= 0) { MessageBox.Show("请输入消费数量"); return; } else { SqlConnection conn = connectToDatabase.restaurantManagementConn();

conn.Open(); i++; SqlCommand cmd = new SqlCommand("insert into GuestFood(id, FoodNum,foodname,foodsum,foodallprice,waitername,textOfdetails,diningtable ,datetime) values('"+i +"','" + txtNum.Text.Trim() + "','" + txtName.Text.Trim() + "','" + txtpnum.Text.Trim() + "','" + Convert.ToDecimal(txtallprice.Text.Trim()) + "','" + cbWaiter.SelectedItem.ToString() + "','" + txtDetails.Text.Trim() + "','" + RName + "','" + DateTime.Now.ToString() + "')",conn); cmd.ExecuteNonQuery(); conn.Close(); GetData(); } } } }

实现代码
public string name; public string price; public string roomPrice; private void formInvoicing_Load(object sender, EventArgs e) { // TODO: 这行代码将数据加载到表 “restruantManageDataSet2.GuestFood” 中。您可以根据需 要 移动或移除它。 this.guestFoodTableAdapter.Fill(this.restruantManageDataSet2.GuestFood); this.Text = name + "结账";//将窗体标题显示当前哪一桌要结账 SqlConnection conn = connectToDatabase.restaurantManagementConn(); SqlDataAdapter sda = new SqlDataAdapter("selec tFoodName,FoodSum,FoodAllPrice ,WaiterName,TextOfDetails,DiningTable,dateTime from GuestFood where DiningTable='" + name + "'order by ID desc", conn); DataSet ds = new DataSet(); sda.Fill(ds); dgvRecord.DataSource = ds.Tables[0]; conn.Open(); SqlCommand cmd = new SqlCommand("select sum(foodallprice) from GuestFood where DiningTable='" + name + "'", conn);//将消费总额计算出来 price = Convert.ToString(cmd.ExecuteScalar());//用price接收总额 if (price == "")//无消费情况下 { lblprice.Text = "0";//将总消费后标签内容设为0 btnPay.Enabled = false;//结账按钮不可用 } else//存在消费情况下执行如下代码

{ cmd = new SqlCommand("select RoomPrice from Room where RoomName='" + name conn); roomPrice = cmd.ExecuteScalar().ToString(); if (roomPrice == "0") { btnPay.Enabled = true; lblprice.Text = price + "*95%" + "+" + roomPrice //菜品消费打九五折,包间不打折 } else { btnPay.Enabled = true; lblprice.Text = price + "*95%" + "+" + roomPrice Convert.ToDecimal(roomPrice )).ToString("C"); } conn.Close(); } } //收银文本框内容变化时会执行如下代码 private void txtmoney_TextChanged(object sender, EventArgs e) if (price == "") { lbl0.Text = "0"; } else { if (txtmoney.Text == "") { txtmoney.Text = "0"; lbl0.Text = "0"; } else { lbl0.Text = Convert.ToDecimal(Convert.ToDouble(txtmoney.Text.Trim()) - Convert.ToDouble(price) * Convert.ToDouble(0.95) Convert.ToDouble(roomPrice )).ToString("C");//显示找零值 } } } private void btnPay_Click(object sender, EventArgs e) { + "=" + (Convert.ToDecimal(Convert.ToDouble(price) * Convert.ToDouble(0.95)) + + "=" + (Convert.ToDecimal(Convert.ToDouble(price)*Convert.ToDouble(0.95))).ToString("C"); + "'",

{ if (txtmoney.Text == "" || lbl0.Text == "0") { MessageBox.Show("请先结账"); return; } else { if (lbl0.Text.Substring(1, 1) == "-") { MessageBox.Show("金额不足"); return; } else//结账完成后将结账后的顾客消费内容清除,将餐桌状况设置为待用 { SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("delete from GuestFood where DiningTable='" + name + "'", conn); cmd.ExecuteNonQuery(); cmd = new SqlCommand("update Room set RoomStatus='待用',Num=0,WaiterName='' where RoomName='" + name + "'", conn); cmd.ExecuteNonQuery(); conn.Close(); this.Close(); } } }

餐饮服务人员信息管理??榈纳杓?br />餐饮服务人员信息管理窗体主要是对服务人员信息进行管理。 可实现对服务 人员信息的查询、增加、改变与删除。 餐饮服务人员信息管理窗体运行结果如图 4.17 所示。

服务人员信息管理窗体

服务人员信息管理窗体的主要实现代码如下:
private void BindData()//将查询信息绑定到datagridview控件上 { SqlConnection conn = connectToDatabase.restaurantManagementConn(); SqlDataAdapter sda = new SqlDataAdapter("select WaiterName,CardNum,WaiterNum, Sex,Age,Tel,ID from Waiter order by ID desc", conn); DataSet ds = new DataSet(); sda.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { txtname .Text = dataGridView1.SelectedCells[0].Value.ToString(); txtID .Text = dataGridView1.SelectedCells[1].Value.ToString(); txtNum.Text = dataGridView1.SelectedCells[2].Value.ToString(); cmbGender .Text = dataGridView1.SelectedCells[3].Value.ToString(); txtAge .Text = dataGridView1.SelectedCells[4].Value.ToString(); txtTel .Text = dataGridView1.SelectedCells[5].Value.ToString(); btnNew.Enabled = true; btnRevise.Enabled = true; btnQuit.Enabled = true; } private void btnSave_Click(object sender, EventArgs e)//单击保存按钮会执行如下代码 {

SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("select count(*) from Waiter where WaiterName='" + txtname .Text if (i > 0) { //根据各个文本框中输入内容更新数据库中waiter表 cmd = new SqlCommand("update Waiter set WaiterName='" + txtname.Text + "',CardNum='" + txtID.Text + "',WaiterNum='" + txtNum.Text + "',Sex='" + cmbGender.SelectedItem.ToString() + "',Age='" + txtAge.Text + "',Tel='" + txtTel.Text + "' where ID='" + dataGridView1.SelectedCells[6].Value.ToString() + "'", conn); cmd.ExecuteNonQuery(); conn.Close(); BindData(); btnNew.Enabled = true; btnQuit.Enabled = true; btnSave.Enabled = true; } else { //应用sql语句向waiter表中添加一行数据 cmd = new SqlCommand("insert into Waiter(WaiterName,CardNum,WaiterNum, Sex,Age,Tel,ID) values('" + txtname.Text.Trim() + "','" + txtID.Text.Trim() + "','" + txtNum.Text.Trim() + "','" + cmbGender.SelectedItem.ToString() + "','" + txtAge.Text.Trim() + "','" + txtTel.Text.Trim() + "','" + txtNum.Text.Trim() + "')", conn); cmd.ExecuteNonQuery(); conn.Close(); BindData(); btnNew.Enabled = true; btnQuit.Enabled = true; btnSave.Enabled = true; } } private void btnDelete_Click(object sender, EventArgs e) { SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); //将单击选中的datagridview控件上的一行内容从数据表中删除 SqlCommand cmd = new SqlCommand("delete from Waiter where ID='" + dataGridView1.SelectedCells[6].Value.ToString() + "'", conn); cmd.ExecuteNonQuery(); conn.Close(); BindData(); + "'", conn); int i = Convert.ToInt32(cmd.ExecuteScalar());//执行查询语句,查看执行语句后影响的行数

}

代码不全,其他代码见源代码

数据库管理??榈纳杓?br />数据库管理??橹饕美炊允菘饨斜阜萦牖馗?,防止机器在down掉的 时候数据信息会全部丢失, 利用此功能可以大大减少损失,将数据恢复到最近记 录的数据备份。 本??槭迪质钡脑诵写疤迦缤?.18

4.18 数据库管理??榇疤?br />
数据库管理窗体的主要实现代码如下
private void button1_Click(object sender, EventArgs e) { try { string strg = Application.StartupPath.ToString();//获取启动了可执行文件的路径 strg = strg.Substring(0, strg.LastIndexOf("\\")); strg += @"\Data";//将路径字串和\Data连接,为了将备份文件存在\data根目录下 string sqltxt = @"BACKUP DATABASE restaurantManage TO Disk='" + strg + "\\" + txtDatabaseName .Text conn.Open(); SqlCommand cmd = new SqlCommand(sqltxt, conn); cmd.ExecuteNonQuery(); conn.Close(); if (MessageBox.Show("备份成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK) { this.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); + ".bak" + "'";//aql语句,实现数据库文件备份 SqlConnection conn = connectToDatabase.restaurantManagementConn();

} } private void btnQuit_Click(object sender, EventArgs e) { this.Close(); } private void tabPage2_Click(object sender, EventArgs e)//单击回复数据库选项卡会执行如下代码 { string strg = Application.StartupPath.ToString(); strg = strg.Substring(0, strg.LastIndexOf("\\")); strg += @"\Data"; txt2DataName.Text = strg + "\\" + "Backup.bak";//将备份文件路径显示到txt2DataName .Text上 } private void btnRecovery_Click(object sender, EventArgs e) { try { string str = "use master restore database restaurantManage from Disk='" + txt2DataName .Text .Trim () + "'";//sql语句用来执行数据库的恢复 SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand(str, conn); cmd.ExecuteNonQuery(); if (MessageBox.Show("恢复成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK) { this.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } }

程序设计方法课程设计评分表
评分项目 具 体 要 求 分值 评 分

选题质量

选题符合要求,体现综合训练基本要求;题 目难易适度。 概念清楚, 内容正确, 条理分明, 书写工整, 语言流畅,结构严谨;图纸、表格、插图绘 制规范准确; 栏目齐全合理, 格式符合规范。 代码正确,质量高;应用知识点多,控件应 用不单一。程序能够正确运行,易操作,界 面友好,健壮性强。

10

说明书质量

30

程序质量

30

工作量

程序功能完善,工作量饱满。

20

综合印象

设计态度认真;按时提交报告和源程序。

10

总分

五分制成绩

评阅教师签字:









推荐相关:
曾道免费资料大全正版l | 曾道免费资料大全正版l
All rights reserved Powered by 曾道免费资料大全正版l www.140827.com
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com