超市进销系统实验报告.doc_第1页
超市进销系统实验报告.doc_第2页
超市进销系统实验报告.doc_第3页
超市进销系统实验报告.doc_第4页
超市进销系统实验报告.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

数据库系统课程设计报告题目: 超市进销存销售管理系统课程代号: 课程名称: 数据库系统课程设计 学号: 姓名: 班级: 指导教师: 完成日期: 39 / 40第一章 引言1.1 设计开发的意义随着超市行业竞争日益激烈,提高进销存管理的工作效率,改善超市内部以及整个供应链各个环节的管理、调度及资源配置成为了超市当前必须考虑的问题。而解决这些问题的途径之一,就是将计算机引入到管理机制中来。随着技术的发展,超市会有很多连锁店,使用此超市管理系统,可以进行连网管理。1.2 设计应用系统的任务及目标登录界面有普通员工和管理员,普通员工需要输入用户名和密码,管理员只需输入用户名即可进入。超市管理系统主界面有一个“欢迎光临”的滚动条。员工信息表和供应商信息表的查找按钮,鼠标只要一接触,便可自动查询,而不需要点击鼠标。(利用查找按钮事件的MouseEnter实现的)关闭超市管理系统主界面时,需要弹出一个对话框,是否需要关闭此系统。(通过登录界面验证用户的提示下,考虑到关闭此系统时是否确定需要关闭)1.3 设计开发及运行的软硬件环境系统开发平台: Microsoft Visual Studio C#3.5系统开发语言: Visual C#.NET数据库管理软件:Microsoft SQL Server 2005 运行平台: Windows窗体应用程序运行环境:Microsoft Visual Studio 2008第二章 系统分析与设计2.1 系统需求分析用户对进销存系统的需求具有普遍性。此超市管理系统适用于超市的采购、销售和仓库部门,对超市采购、销售及仓库的业务全过程进行有效控制和跟踪。使用此超市管理系统可有效减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,提升超市的市场竞争力。此系统采用人机交互的方式,界面美观友好。信息查询灵活、操作方便,数据存储安全可靠。能够对进货信息进行有效的管理。对用户输入的数据,进行严格的数据校验,尽可能避免人为错误。能够对商品销售信息进行有效的管理。允许顾客退货。能够准确、详细地管理商品库存信息。当库存的商品数量达到一定程序,给出提示。可以对数据库进行备份和还原。系统应最大限度地实现易维护性和易操作性。登录2.1.1 数据流图验证用户系统主窗体系统维护基本档案库存管理销售管理进货管理 图2.1Fig. 数据字典此系统的登录界面有验证用户的信息,只要登录成功,才可进入超市管理系统的主窗体。主窗体可以连接到系统的所有功能菜单,包括基本档案,进货管理,销售管理,库存管理,系统维护。基本档案包括员工信息和供应商信息。员工信息表是因为开发过程中要考虑系统的安全性,不是任何人都可以操作系统的,才设置存储管理系统的员工信息表;供应商信息表是因为超市的经营离不开与供应商的合作,而每件商品对应不同的供应商,此时必须在数据库中建立一个供应商信息表,用于存储所有供应商信息。进货管理包括商品进货信息和进货信息查询,建立一个进货信息表是因为超市的运营离不开货物往来,日常货物的购买是非常重要的,此用于存储进货的详细信息。销售管理分为商品销售信息和商品退货信息,商品销售信息表为了时刻了解超市销售利润,需要对商品的销售情况有所了解;商品退货信息表是因为当顾客对某件商品不满意时,可以要求进货,同时超市经营者也要详细地了解退货信息。库存管理分为库存警报和库存查询。因为超市定期要对货物进行补充,在进货之前要了解剩余货物的数量,此时需要在数据库中建立一个库存信息表用于存储剩余货物的情况。系统维护包括数据备份和数据还原,以防数据丢失,所以需要备份数据和还原数据。2.2 数据库概念结构设计1. 员工信息实体ER图图 2.2Fig.2.22.进货信息实体ER图图2.3Fig. 2.33.供应商信息实体ER图图 2.3Fig. 2.34.库存信息实体ER图图2.4Fig. 2.42.3 数据库逻辑,物理结构设计2.3.1 关系模式 Emp(EmpID,EmpName,EmpLoginName,EmpLoginPwd,EmpSex,EmpBirthday,EmpDept,EmpPost,EmpPhone,EmpPhoneM,EmpAddress,EmpFlag)其中EmpID为主码;Company(CompanyID,CompanyName,CompanyDirector,ompanyPhoCne,CompanyFax,CompanyAddress,CompanyRemark,ReDateTime,Flag)其中CompanyID为主码;2.3.2 关系的属性设计表2.1 员工信息表Table 2.1 Empfrom字段名数据类型长度主键描述EmpIDnvarchar20是员工编号EmpNamenvarchar20否员工姓名EmpLoginNamenvarchar20否登录IDEmpLoginPwdnvarchar20否登录密码EmpSexnvarchar4否员工性别EmpBirthdaydatetime8否员工生日EmpDeptnvarchar20否所属部门EmpPostnvarchar20否员工职位EmpPhonenvarchar20否家庭电话EmpPhoneMnvarchar20否手机号码EmpAddressnvarchar200否家庭住址EmpFlagint1否是否发布 表2.2供应商信息表Table 2.2 Companyfrom字段名数据类型长度主键描述CompanyIDnvarchar50是供应商编号CompanyNamenvarchar100否供应商姓名CompanyDirectornvarchar50否联系人姓名ompanyPhoCnenvarchar20否联系人电话CompanyFaxnvarchar20否传真CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddress CompanyAddressnvarchar200否地址CompanyRemarknvarchar400否备注ReDateTimedatetime8否加入日期Flagint1否是否发布表2.3进货信息表Table 2.3 Goodfrom字段名数据类型长度主键描述GoodIDnvarchar20是商品编号EmpIdnvarchar20否操作员编号JhCompNamenvarchar100否供应商名称DepotNamenvarchar20否仓库名称GoodsNamenvarchar50否商品名称GoodsNumint4否商品数量GoodsUnitnvarchar20否商品计量单位GoodsJhPricenvarchar8否进货单价GoodsSellPricenvarchar8否销售单价GoodsNeedPricenvarchar8否应付金额GoodsNoPricenvarchar8否实付金额GoodsRemarknvarchar200否备注GoodsTimedatetime8否进货时间Flagint4否删除标记表2.4 商品销售信息表Table 2.4 Sellfrom字段名数据类型长度主键描述SellIDnvarchar20是销售编号KcIDnvarchar50否库存编号GoodsIDnvarchar20否商品编号EmpIDnvarchar20否员工编号GoodsNamenvarchar50否商品名称SellGoodsNumint4否销售数量SellGoodsTimedatetime8否销售时间SellPricenvarchar8否销售单价SellNeedPaynvarchar8否应付金额SellHasPaynvarchar8否实付金额SellRemarknvarchar200否备注SellFlagint4否删除标记表2.5 商品退货信息表Table 2.5 Thfrom字段名数据类型长度主键描述ThGoodsIDnvarchar50是退货商品编号KcIDnvarchar50否库存编号GoodsIDnvarchar50是商品编号SellIDnvarchar50否销售编号EmpIDnvarchar20否操作员编号ThGoodsNamenvarchar50否商品名称ThGoodsNumint4否退货数量ThGoodsTimedatetime8否退货日期ThGoodsPricenvarchar8否退货单价ThNeedPaynvarchar8否应付金额ThHasPaynvarchar8否已退款金额ThGoodsResultnvarchar200否退货原因表2.6 库存信息表Table 2.6 Kcfrom字段名数据类型长度主键描述KcIDnvarchar50否库存编号GoodsIDnvarchar50是商品编号JhCompNamenvarchar100否供应商名称KcDeptNamenvarchar20否仓库名称kcGoodsNamenvarchar20否商品名称KcNumint4否库存数量KcAlarmNumint4否警报数量KcUnitnvarchar20否商品计量单位KcTimedatetime8否进货时间KcGoodsPricenvarchar8否进货价格KcSellPricenvarchar8否销售价格KcEmpnvarchar50否进货人KcRemarknvarchar200否备注2.4 数据库的创建 2.5 系统总体结构设计图2.5Fig. 2.5第三章 系统开发及实现3.1 界面设计效果1. 登录界面2. 员工信息3.供应商信息4.商品进货信息5.进货信息查询6.商品销售信息7.商品退货信息8.库存警报9.库存查询10.数据备份11.数据还原 3.2 实现方法以员工信息表为例:1.使用的控件:ToolStrip,Label,TextBox , DateTimePicke ,ComboBox,DataGridView.2.保存,取消,添加,修改,删除按钮的互斥更改。3.用于初始化组件,将控件恢复到原始状态。4.点击保存,取消,添加,修改,删除按钮时,可以实现数据的添加,修改和删除操作。5.根据查询条件,并输入关键字,便可查询你想要查询的内容。6.点击退出按钮,即可退出此窗体。7. Label为控件提供运行时信息或说明性文字。8. TextBox允许用户输入文本,并提供多行编辑和密码字符掩码功能。9.DateTimePicker控件,允许用户选择日期和时间,并以指定的格式显示。10.ToolStrip控件为此表提供工具栏。11.ComboBox显示一个可编辑的文本框,其中包括一个允许值下拉列表,需要指出的是当性别只有男女时,我们需要设它的DropDownStyle属性为DropDown,这样,才不允许用户更改性别信息。12. DataGridView是为了显示表的数据。13.在员工信息表的方法里,做三个查询,一是用于登陆验证的查询,二是用于窗体载入的查询,三是用于DataGridView单元格触发时索引的数据中记录返回。14.有添加,修改和删除的方法,来实现数据库的更新。15.有一个自动生成客户编号的方法,而无需自己添加编号以商品进货信息表为例:1.同员工信息表一样,可以实现增删改查的功能,但其中多了一个控件TreeView。2.TreeView控件,填充商品类别信息。3.在添加商品进货单价和数量时,会自动算出商品应付的金额。以数据备份为例:1.添加一个folderBrowserDialog控件,显示一个对话框,提示用户选择文件夹。以数据还原为例:1.添加一个OpenFileDialog控件,显示一个对话框,提示用户打开文件。 第四章 总结 三个星期的时间非常快就过去了, 这三个星期我不敢说有很大的进步,蛋黄还是了解了一些项目开发的过程。以前没有亲身经历过相关的设计课程,这次提供了一个很好的机会。 这次的课程设计可以说是为毕业设计做的一个预演,真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。从需求分析阶段,想充分了解自己所做的课题在客户或者超市中的需求,由于软件工程这门课大二时学的不深,画数据流图等等软件设计流程做起来很生疏,翻阅课本,和软件工程课老师上课的讲解,总算整了一个像样点的需求分析,但是也不知道是不是正确,根据数据流图,不断修改需求,由于这个课程设计没有连接外部设备,比如打印机,等,所以做的都是在实践阶段,根据设计的大概模式展开一步步的模块构造。经过不断地测试,不断地改进,其中还是发下了不少问题,第一次做这些工作,没有任何经验,甚至无从下手,还是很谢谢老师和同学的帮忙,从中也学到了一些代码的写法。我们学习并应用了SQL语言,对数据库的创建,删除,修改有了一定的了解。通过导入表和删除表,更改表学会了一些对表的操作。这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.NET的核心技术就是XML我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,justdoit!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!参考文献1. 钱雪忠 数据库原理及应用 北京: 邮电大学出版社 2007,8 第二版2 Bain T SQL server 2000数据仓库与Analysis Services 中国电力出版社 20033 王珊 数据库技术与联机分析处理 北京: 科学出版社 19984. 肖遥JSP的SQLServer数据库访问技术 20095. 史志国 基于JSP的教务管理系统设计 2008 第五章 附录(1)、员工信息表窗体frmEmpInfo的代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using Shop.GoodMenthod;using Shop.ClassInfo;namespace Shop public partial class frmEmpInfo : Form public frmEmpInfo() InitializeComponent(); tb_EmpInfo EmpClass = new tb_EmpInfo(); tb_EmpInfoMenthod tbMenthod = new tb_EmpInfoMenthod(); /窗体载入时,将全部记录载入到控件中 private void frmEmpInfo_Load(object sender, EventArgs e) tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); this.cbxCondition.Text = 员工姓名;/窗体载入时默认的查询条件索引 / / 点击查询按钮 / private void txtOK_Click(object sender, EventArgs e) string P_Str_selectcondition = this.cbxCondition.Text;/查询类别索引 if (P_Str_selectcondition = null) MessageBox.Show(请选择查询条件!); return; if (this.txtKeyWord.Text = ) MessageBox.Show(输入查询关键字!); return; switch (P_Str_selectcondition) case 员工姓名: /员工姓名字段在dataGridView1索引值为1 tbMenthod.tb_EmpInfoFind(txtKeyWord.Text, 1, dataGridView1); break; case 员工性别:/员工性别字段在dataGridView1引值为2 tbMenthod.tb_EmpInfoFind(txtKeyWord.Text, 2, dataGridView1); break; case 所属部门:/ 所属部门字段在dataGridView1引值为3 tbMenthod.tb_EmpInfoFind(txtKeyWord.Text, 3, dataGridView1); break; case 员工职位:/ 员工职位字段在dataGridView1引值为4 tbMenthod.tb_EmpInfoFind(txtKeyWord.Text, 4, dataGridView1); break; default: break; public static int intFlag = 0;/控件方法状态 / / 用于按钮的互斥更改 / private void ControlStatus() this.toolSave.Enabled = !this.toolSave.Enabled; this.toolAdd.Enabled = !this.toolAdd.Enabled; this.toolCancel.Enabled = !this.toolCancel.Enabled; this.toolAmend.Enabled = !this.toolAmend.Enabled; this.toolDelete.Enabled = !this.toolDelete.Enabled; / / 用于初始化组件,将控件恢复到原始状态 / private void ClearControls() txtEmpAddress.Text = null; txtEmpPhone.Text = null; txtEmpName.Text = null; txtEmpLoginPwd.Text = null; txtEmpPhoneM.Text = null; txtEmpLoginName.Text = null; cmbEmpPost.SelectedIndex = 0; cmbEmpDept.SelectedIndex = 0; comSex.SelectedIndex = 0; this.daEmpBirthday.Value = DateTime.Now; / / 点击添加按钮 / private void toolAdd_Click(object sender, EventArgs e) ControlStatus();/点击添加按钮后控件状态相反 ClearControls();/清空控件内容 intFlag = 1;/添加标记为1 / / 点击保存按钮 / private void toolSave_Click(object sender, EventArgs e) if (getPan() = 1) if (intFlag = 1) if (tbMenthod.tb_EmpInfoFind(txtEmpLoginName.Text, 1)=1 ) MessageBox.Show(登录名称已被占用!!); txtEmpLoginName.Text = ; txtEmpLoginName.Focus(); return; if (tbMenthod.tb_EmpInfoFind(txtEmpName.Text, , 1) = 1) MessageBox.Show(员工姓名已被占用!!); txtEmpName.Text = ; txtEmpName.Focus(); return; if (tbMenthod.tb_EmpInfoAdd(EmpClass) = 1) MessageBox.Show(添加成功); intFlag = 0; tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); ClearControls(); ControlStatus(); else MessageBox.Show(添加失败); intFlag = 0; /tbMenthod.tb_EmpInfoFind(2,dataGridView1); ClearControls(); ControlStatus(); if (intFlag = 2) if (tbMenthod.tb_EmpInfoUpdate(EmpClass) = 1) MessageBox.Show(修改成功); intFlag = 0; tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); ClearControls(); ControlStatus(); else MessageBox.Show(修改失败); intFlag = 0; /tbMenthod.tb_EmpInfoFind(2,dataGridView1); ClearControls(); ControlStatus(); if (intFlag = 3) if (tbMenthod.tb_EmpInfoDelete(EmpClass) = 1) MessageBox.Show(删除成功); intFlag = 0; tbMenthod.tb_EmpInfoFind(, 5, dataGridView1); ClearControls(); ControlStatus(); else MessageBox.Show(删除失败); intFlag = 0; ClearControls(); ControlStatus(); /end / / 用于判断 / / public int getPan() int intFlag1 = 0; if (intFlag != 3)/添加,修改状态 if (txtEmpName.Text = ) MessageBox.Show(员工姓名不能为空!, 提示); txtEmpName.Focus(); return intFlag1; if (txtEmpLoginName.Text = ) MessageBox.Show(登录名称不能为空!, 提示); return intFlag1; if (intFlag != 2)/添加状态 if (txtEmpLoginPwd.Text = ) MessageBox.Show(登录密码不能为空!, 提示); return intFlag1; if (intFlag = 2)/修改状态 EmpClass.EmpId1 = this.dataGridView10, this.dataGridView1.CurrentCell.RowIndex.Value.ToString(); /当时单元格的行索引 /this.dataGridView1列索引=0,行索引 else EmpClass.EmpId1= tbMenthod.tb_EmpInfoID(); else if (txtEmpName.Text = ) MessageBox.Show(请在下面选择要删除的记录, 提示); return intFlag1; else EmpClass.EmpId1 = this.dataGridView10, this.dataGridView1.CurrentCell.RowIndex.Value.ToString(); EmpClass.EmpName1 = txtEmpName.Text; EmpClass.EmpLoginName1 = txtEmpLoginName.Text; EmpClass.EmpLoginPwd1 = txtEmpLoginPwd.Text; EmpClass.EmpSex1 = comSex.Text; EmpClass.EmpBirthday1 = daEmpBirthday.Value; EmpClass.EmpDept1 = cmbEmpDept.Text; EmpClass.EmpPost1 = cmbEmpPost.Text; EmpClass.EmpPhoneM1 = txtEmpPhoneM.Text; EmpClass.EmpPhone1 = txtEmpPhone.Text; EmpClass.EmpAddress1 = txtEmpAddress.Text; if (intFlag != 3) EmpClass.EmpFlag1 = 0; else EmpClass.EmpFlag1 = 1; intFlag1 = 1; return intFlag1; / / 点击取消按钮 / private void toolCancel_Click(object sender, EventArgs e) ControlStatus(); ClearControls(); / / 点击退出按钮 / private void toolExit_Click(object sender, EventArgs e) this.Close(); private void FillControls() try SqlDataReader sqldr = tbMenthod.tb_EmpInfoFind(this.dataGridView10, this.dataGridView1.CurrentCell.RowIndex.Value.ToString(), 1); sqldr.Read(); if (sqldr.HasRows) txtEmpLoginName.Text = sqldr2.ToString(); txtEmpName.Text = sqldr1.ToString(); comSex.Text = sqldr4.ToString(); daEmpBirthda

温馨提示

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

评论

0/150

提交评论