《数据库程序设计》实验指导书.doc

上传人:飞****2 文档编号:52771157 上传时间:2022-10-23 格式:DOC 页数:50 大小:388.50KB
返回 下载 相关 举报
《数据库程序设计》实验指导书.doc_第1页
第1页 / 共50页
《数据库程序设计》实验指导书.doc_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《《数据库程序设计》实验指导书.doc》由会员分享,可在线阅读,更多相关《《数据库程序设计》实验指导书.doc(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验十五 进销存:进货记录一、实验要求按照给出的操作步骤、代码及要求,编制进销存系统中的进货记录程序。程序包括:商品、商品类别、供应商信息维护,进货记录及库存信息处理,进货信息浏览及作废处理等功能。二、建立数据库表在“进销存数据库.mdb”中建立如下表:A商品类别表字段名称数据类型字段大小/格式其它类别文本32主键;必填;不为空序号数字整型状态文本16默认值:正常;有效性规则:正常 or 停用A商品表字段名称数据类型字段大小/格式其它商品编码文本32主键;必填;不为空类别文本32名称文本80上市日期日期/时间短日期库存量数字长整型进货价格货币固定备注文本255状态文本16默认值:正常;有效性规

2、则:正常 or 退市A供应商表字段名称数据类型字段大小/格式其它供应商文本32主键;必填;不为空序号数字整型联系人文本16联系电话文本16状态文本16默认值:正常;有效性规则:正常 or 停用A进货表字段名称数据类型字段大小/格式其它进货单号文本32主键;必填;不为空进货日期日期/时间短日期供应商文本32经办人文本16备注文本255状态文本16默认值:预写;有效性规则:预写 or 正常 or 作废作废原因文本80作废经办人文本16A进货明细表字段名称数据类型字段大小/格式其它进货单号文本32联合主键;必填;不为空商品编码文本32联合主键;必填;不为空进货数量数字长整型进货价格货币固定A退货表字

3、段名称数据类型字段大小/格式其它退货单号文本32主键;必填;不为空退货日期日期/时间短日期供应商文本32经办人文本16商品编码文本32退货数量数字长整型退货价格货币固定备注文本255状态文本16默认值:预写;有效性规则:预写 or 正常 or 作废作废原因文本80作废经办人文本16建立表之间的关系如下,各关系均勾选“实施参照完整性”、“级联修改相关字段”,不勾选“级联删除相关记录”。A商品类别表.类别A商品表.类别A商品表.商品编码A进货明细表.商品编码A商品表.商品编码A退货表.商品编码A供应商表.供应商A进货表. 供应商A供应商表.供应商A退货表. 供应商A进货表.进货单号A进货明细表.进

4、货单号用户表.用户名A进货表.经办人用户表.用户名A进货表.作废经办人用户表.用户名A退货表.经办人用户表.用户名A退货表.作废经办人三、建立/设置项目1. 建立项目运行VS2010;执行菜单项“文件新建项目”;在“新建项目”窗体中,选中模版“Visual C#Windows窗体应用程序”;点击“新建项目”窗体右下部的“浏览”按钮,将“位置”设置为本人文件夹;将“名称”文本框中的内容输入为“进货记录”;点击“确定”按钮。2. 主窗体设置将“From1.cs”改为“FormMain.cs”;将主窗体的“Text”属性值改为“进货记录(本人姓名)”;将主窗体的“Font”属性值设为“宋体,5号”;

5、将主窗体的“StartPosition”设为“CenterScreen”。3. 设置项目输出目录(很重要)在解决方案资源管理器中双击“Properties”;在编辑区域的“进货记录”页面,点击“生成”子页面;在“输出路径(O)”中,输入“.执行程序”;关闭“进货记录”页面。4. 设置对“公用类库”的引用执行VS菜单项:项目添加引用;在“添加引用”对话框中,切换到“浏览”页面;浏览到“.执行程序公用类库.dll”,双击该文件;在用到公用类库的cs文件中均添加引用语句:using 公用类库;四、编写主窗体代码1. 在主窗体中添加控件在主窗体中添加TreeView控件如下:将TreeView控件的“

6、(Name)”改为“treeViewMenu”,将“Dock”属性改为“Left”;将“ItemHeight”改为28;在控件上点右键,执行“编辑节点.”,将内容添加为如上图所示,将各节点的“Name”及“Text”设为相应的文本。2. 产生事件方法双击主窗体,产生Load事件方法;双击TreeView控件,产生AfterSelect事件方法;选中主窗体,将属性窗体转换到事件页面,找到“SizeChanged”事件,双击,产生主窗体的SizeChanged事件方法;找到“Move”事件,双击,产生主窗体的Move事件方法。3. 编写树状菜单代码在“FormMain.cs”文件中编写如下代码:u

7、sing System.Windows.Forms;using 公用类库;namespace 进货记录 public partial class FormMain : Form public FormMain() InitializeComponent(); treeViewMenu.ExpandAll(); /展开树状菜单 private void FormMain_Load(object sender, EventArgs e) Class安全.Init(); private void treeViewMenu_AfterSelect(object sender, TreeViewEven

8、tArgs e) Form curForm = null; /当前被打开的子窗体 int formWidth, formHeight; /当前窗体的原始宽度、高度 void OpenForm(Form fb) /打开给定的窗体fb if (curForm != null) /如果已打开有窗体 curForm.Hide(); /隐藏该窗体 curForm = fb; /将给定的窗体设为当前窗体 curForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; /将窗体设为无边框 AddOwnedForm(curForm);

9、/使子窗体属于主窗体,保证其总是显示在主窗体之上(不会被覆盖) formWidth = curForm.Width; /保存子窗体的原始宽度 formHeight = curForm.Height; /保存子窗体的原始高度 curForm.Show(); /打开或显示子窗体 SetFormLocation(); /设置子窗体的位置和尺寸 curForm.Focus(); void SetFormLocation() /在主窗体上设置子窗体的位置和尺寸 if (curForm = null) /如果没有已打开的子窗体 return; /返回 Rectangle cr = this.ClientR

10、ectangle; /获取主窗体客户区的尺寸 cr.Width -= treeViewMenu.Width; /宽度减去TreeView的宽度 Point lt = new Point(); /存放子窗体左上角位置 /计算子窗体左侧位置(相对于主窗体客户区) lt.X = (cr.Width - formWidth) / 2; if (lt.X 0) curForm.Width = cr.Width; lt.X = 0; else curForm.Width = formWidth; lt.X += treeViewMenu.Width; /计算子窗体上侧位置 lt.Y = (cr.Heigh

11、t - formHeight) / 2; if (lt.Y 0) curForm.Height = cr.Height; lt.Y = 0; else curForm.Height = formHeight; lt = PointToScreen(lt); /将客户区位置转换为屏幕位置 curForm.Top = lt.Y; /设置子窗体左侧位置 curForm.Left = lt.X; /设置子窗体上侧位置 private void FormMain_SizeChanged(object sender, EventArgs e) SetFormLocation(); /在主窗体尺寸改变时,重

12、设子窗体尺寸和位置 private void FormMain_Move(object sender, EventArgs e) SetFormLocation(); /在主窗体移动时,重设子窗体尺寸和位置 生成、运行程序,排除错误。4. 添加“退出”、“修改密码”功能在treeViewMenu_AfterSelect()事件方法中添加代码,实现退出程序、修改密码的功能。 private void treeViewMenu_AfterSelect(object sender, TreeViewEventArgs e) if (e.Node.Text = 退出) Application.Exit

13、(); else if (e.Node.Text = 修改密码) Form修改密码 frm = new Form修改密码(); frm.ShowDialog(); frm.Dispose(); treeViewMenu.SelectedNode = treeViewMenu.Nodes系统; /将被选中的节点设为“系统” 五、实现基础信息维护功能(一)商品类别维护1. 建立“商品类别”窗体点击VS菜单项“项目添加Windows窗体”;在“添加新项”窗体中,选中“Windows窗体”,将“名称”输入为“Form商品类别”,点击“添加”按钮;将窗体的“Text”输入为“商品类别”;将窗体的“Fon

14、t”设置为宋体五号字。2. 添加窗体控件在窗体中添加控件如下:DataGridView控件“(Name)”取为“dataGridView商品类别”;将BackgroundColor设为白色;勾选“启用添加”、“启用编辑”、“启用删除”、“启用列重新排序”;添加图中所示的三列,适当调整各列的宽度;将“状态”列的“ColumnType”设为“DataGridViewComboBoxColumn”,“DisplayStyle”设为“ComboBox”,在Items中输入“正常”、“停用”两行。建立“保存”按钮。用Label控件左下部的一行文字。3. 添加事件方法编写代码添加窗体的Load事件方法;添

15、加保存按钮的Click事件方法。添加如下代码:using System.Windows.Forms;using System.Data.OleDb;using 公用类库;namespace 进货记录 public partial class Form商品类别 : Form public Form商品类别() InitializeComponent(); private void Form商品类别_Load(object sender, EventArgs e) try OleDbConnection conn = new OleDbConnection(Class安全.StrDBConn);

16、OleDbCommand cmd = new OleDbCommand(); /定义数据库命令对象 cmd.Connection = conn; /将连接对象关联到命令对象 cmd.CommandText = select * From A商品类别表 ORDER BY 序号; DataTable dt = new DataTable(); /定义内存中的数据库表 OleDbDataAdapter da = new OleDbDataAdapter(cmd); /定义桥接器并关联到命令对象 da.Fill(dt); /通过桥接器将SQL语句的读入内容填入内存表 /对已定义列的数据网格,将各列对应

17、到所读入数据的各字段 dataGridView商品类别.Columns类别.DataPropertyName = 类别; dataGridView商品类别.Columns序号.DataPropertyName = 序号; dataGridView商品类别.Columns状态.DataPropertyName = 状态; dataGridView商品类别.DataSource = dt; /将内存表关联到数据网格 catch (Exception ex) MessageBox.Show(读入商品类别表错误rn + ex.ToString();/显示异常信息 private void button

18、保存_Click(object sender, EventArgs e) /注意,该段程序用于将数据网格中增、删、改的数据更新到数据库 try OleDbConnection conn = new OleDbConnection(Class安全.StrDBConn); OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = select * From A商品类别表 ORDER BY 序号; /提供读入数据时的SQL语句,以自动生成更新语句 OleDbDataAdapter da = new

19、OleDbDataAdapter(cmd); OleDbCommandBuilder cb = new OleDbCommandBuilder(da); /建立命令创建器对象,以自动生成更新数据库的语句 DataTable dt = (DataTable)dataGridView商品类别.DataSource; /将内存表连接到数据网格 da.Update(dt); /将内存表中的数据更新到数据库 catch (Exception ex) /操作出现异常 MessageBox.Show(更新商品类别异常rn + ex.Message); 4. 调用“商品类别”窗体在“FormMain.cs”文

20、件中添加如下代码。 private void FormMain_Load(object sender, EventArgs e) Class安全.Init(); Form frm商品类别 = null; private void treeViewMenu_AfterSelect(object sender, TreeViewEventArgs e) if (e.Node.Text = 退出) Close(); else if (e.Node.Text = 修改密码) Form修改密码 frm = new Form修改密码(); frm.ShowDialog(); frm.Dispose();

21、treeViewMenu.SelectedNode = treeViewMenu.Nodes系统; /将被选中的节点设为“系统” else if (e.Node.Text = 商品类别) if (frm商品类别 = null) frm商品类别 = new Form商品类别(); OpenForm(frm商品类别); 生成并运行程序,修改错误。对商品类别维护功能进行测试。(二)商品信息维护1. 建立“商品信息维护”窗体点击VS菜单项“项目添加Windows窗体”;在“添加新项”窗体中,选中“Windows窗体”,将“名称”输入为“Form商品”,点击“添加”按钮;将窗体的“Text”输入为“商品

22、信息维护”;将窗体的“Font”设置为宋体五号字。2. 添加窗体控件在窗体中添加控件如下:DataGridView控件“(Name)”取为“dataGridView商品”;将BackgroundColor设为白色;勾选“启用添加”、“启用编辑”、“启用删除”、“启用列重新排序”;添加图中所示的六列,适当调整各列的宽度;将“类别”列的“ColumnType”设为“DataGridViewComboBoxColumn”,“DisplayStyle”设为“ComboBox”;将“状态”列的“ColumnType”设为“DataGridViewComboBoxColumn”,“DisplayStyle

23、”设为“ComboBox”。建立“保存”按钮。用Label控件左下部的一行文字。3. 添加事件方法编写代码添加窗体的Load事件方法;添加保存按钮的Click事件方法;添加数据网格的DataError事件方法。添加如下代码:using System.Windows.Forms;using System.Data.OleDb;using 公用类库;namespace 进货记录 public partial class Form商品 : Form public Form商品() InitializeComponent(); private void Form商品_Load(object sende

24、r, EventArgs e) try OleDbConnection conn = new OleDbConnection(Class安全.StrDBConn); OleDbCommand cmd = new OleDbCommand(); /定义数据库命令对象 cmd.Connection = conn; /将连接对象关联到命令对象 cmd.CommandText = select 商品编码,类别,名称,上市日期,备注,状态 From A商品表 ORDER BY 商品编码; DataTable dt = new DataTable(); /定义内存中的数据库表 OleDbDataAdapt

25、er da = new OleDbDataAdapter(cmd); /定义桥接器并关联到命令对象 da.Fill(dt); /通过桥接器将SQL语句的读入内容填入内存表 /将数据网格的列关联到内存表的字段 dataGridView商品.Columns商品编码.DataPropertyName = 商品编码; dataGridView商品.Columns类别.DataPropertyName = 类别; dataGridView商品.Columns名称.DataPropertyName = 名称; dataGridView商品.Columns上市日期.DataPropertyName = 上市

26、日期; dataGridView商品.Columns状态.DataPropertyName = 状态; dataGridView商品.Columns备注.DataPropertyName = 备注; dataGridView商品.DataSource = dt; /将内存表关联到数据网格 /设定状态选择框中的内容 (DataGridViewComboBoxColumn)dataGridView商品.Columns状态).Items.Add(正常); (DataGridViewComboBoxColumn)dataGridView商品.Columns状态).Items.Add(退市); /将类别

27、选择框中的内容绑定到“A商品类别表” cmd.CommandText = select 类别,序号 From A商品类别表 Where 状态=正常 ORDER BY 序号; DataTable dt1 = new DataTable(); /定义内存中的数据库表 da.Fill(dt1); /通过桥接器将SQL语句的读入内容填入内存表 (DataGridViewComboBoxColumn)dataGridView商品.Columns类别).DataSource = dt1; (DataGridViewComboBoxColumn)dataGridView商品.Columns类别).Value

28、Member = 类别; (DataGridViewComboBoxColumn)dataGridView商品.Columns类别).DisplayMember = 类别; catch (Exception ex) MessageBox.Show(读入商品表错误rn + ex.ToString();/显示异常信息 private void button保存_Click(object sender, EventArgs e) try OleDbConnection conn = new OleDbConnection(Class安全.StrDBConn); OleDbCommand cmd =

29、new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = select 商品编码,类别,名称,上市日期,备注,状态 From A商品表 ORDER BY 商品编码; /提供读入数据时的SQL语句,以自动生成更新语句 OleDbDataAdapter da = new OleDbDataAdapter(cmd); OleDbCommandBuilder cb = new OleDbCommandBuilder(da); /建立命令创建器对象,以自动生成更新数据库的语句 DataTable dt = (DataTable)dataGr

30、idView商品.DataSource; /将内存表连接到数据网格 da.Update(dt); /将内存表中的数据更新到数据库 catch (Exception ex) /操作出现异常 MessageBox.Show(更新商品表异常rn + ex.Message); private void dataGridView商品_DataError(object sender, DataGridViewDataErrorEventArgs e) 4. 调用“商品信息维护”窗体在“FormMain.cs”文件中添加如下代码。 Form frm商品类别 = null; Form frm商品 = null

31、; private void treeViewMenu_AfterSelect(object sender, TreeViewEventArgs e) if (e.Node.Text = 退出) Close(); else if (e.Node.Text = 修改密码) Form修改密码 frm = new Form修改密码(); frm.ShowDialog(); frm.Dispose(); treeViewMenu.SelectedNode = treeViewMenu.Nodes系统; /将被选中的节点设为“系统” else if (e.Node.Text = 商品类别) if (fr

32、m商品类别 = null) frm商品类别 = new Form商品类别(); OpenForm(frm商品类别); else if (e.Node.Text = 商品) if (frm商品 = null) frm商品 = new Form商品(); OpenForm(frm商品); 生成并运行程序,修改错误。对商品信息维护功能进行测试。(三)供应商信息维护自己完成。(四)建立商品数据自己构想一个商品经营项目,需为实物型计件商品,可以是如:化妆品、日用品、文具、某类食品、电脑、手机、某类配件等。对所经营商品至少定义3种类别,输入到系统中。输入至少3条模拟的供应商数据。输入至少8种商品的数据,商

33、品编码自行设定,取46位;商品名称必须是实际名称,不能随意取名,商品的其它属性可虚拟。六、实现“进货录入”功能实现录入进货单功能。进货单分为进货整体情况和进货明细两部分内容,需写到不同的表中。在将进货数据写入数据库的同时,要更新相应商品的库存量及进货价格。(一)实现“进货录入”窗体的基本部分1. 建立“进货录入”窗体点击VS菜单项“项目添加Windows窗体”;在“添加新项”窗体中,选中“Windows窗体”,将“名称”输入为“Form进货录入”,点击“添加”按钮;将窗体的“Text”输入为“进货录入”;将窗体的“Font”设置为宋体五号字。2. 添加窗体控件在主窗体上添加控件如下:将各控件的

34、类型及(Name)属性值分别设为:textBox经办人(只读);dateTimePicker日期;comboBox供应商;textBox备注;dataGridView明细(取消“启用添加”、“启用删除”,保留“启用编辑”);button添加明细;button删除明细;button清除;button确认。3. 添加事件方法编写代码添加窗体的Load事件方法。编写如下代码:using System.Windows.Forms;using System.Data.OleDb;using 公用类库;using System.Collections;namespace 进货记录 public partial class Form进货录入 : Form public Form进货录入() InitializeComponent(); DataTable dt进货明细 = new DataTable();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁