桌面应用生产性实训课程设计-超市进销存销售管理系统.doc_第1页
桌面应用生产性实训课程设计-超市进销存销售管理系统.doc_第2页
桌面应用生产性实训课程设计-超市进销存销售管理系统.doc_第3页
桌面应用生产性实训课程设计-超市进销存销售管理系统.doc_第4页
桌面应用生产性实训课程设计-超市进销存销售管理系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

桌面应用生产性实训 课程设计【题目】超市进销存销售管理系统【开发背景】随着超市行业竞争日益激烈,提高进销存管理的工作效率,改善超市内部以及整个供应链各个环节的管理、调度及资源配置成为了超市当前必须考虑的问题。而解决这些问题的途径之一,就是将计算机引入到管理机制中来。随着技术的发展,超市会有很多连锁店,使用此超市管理系统,可以进行连网管理。【需求分析】用户对进销存系统的需求具有普遍性。此超市管理系统适用于超市的采购、销售和仓库部门,对超市采购、销售及仓库的业务全过程进行有效控制和跟踪。使用此超市管理系统可有效减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,提升超市的市场竞争力。此系统采用人机交互的方式,界面美观友好。信息查询灵活、操作方便,数据存储安全可靠。能够对进货信息进行有效的管理。对用户输入的数据,进行严格的数据校验,尽可能避免人为错误。能够对商品销售信息进行有效的管理。允许顾客退货。能够准确、详细地管理商品库存信息。当库存的商品数量达到一定程序,给出提示。可以对数据库进行备份和还原。系统应最大限度地实现易维护性和易操作性。【系统运行环境】系统开发平台: Microsoft Visual Studio C#3.5系统开发语言: Visual C#.NET数据库管理软件:Microsoft SQL Server 2005 运行平台: Windows窗体应用程序运行环境:Microsoft Visual Studio 2008【界面设计】 1. 登录界面2. 主窗体3. 员工信息4. 供应商信息5. 商品进货信息6. 进货信息查询7. 商品销售信息8. 商品退货信息9. 库存警报10. 库存查询11. 数据备份12. 数据还原 13. 超市管理系统功能结构图 超市进销存销售管理系统商品销售商品退货库存警报库存查询数据备份数据还原商品查询商品进货供应商信息员工信息系统维护基本档案销售管理库存管理进货管理 14. 14. 系统业务流程图 登录 验证用户 基本档案进货管理系统维护库存管理销售管理系统主窗体 【逻辑结构设计】1. 员工信息表字段名数据类型长度主键描述EmpIDnvarchar20是员工编号EmpNamenvarchar20否员工姓名EmpLoginNamenvarchar20否登录IDEmpLoginPwdnvarchar20否登录密码EmpSexnvarchar4否员工性别EmpBirthdaydatetime8否员工生日EmpDeptnvarchar20否所属部门EmpPostnvarchar20否员工职位EmpPhonenvarchar20否家庭电话EmpPhoneMnvarchar20否手机号码EmpAddressnvarchar200否家庭住址EmpFlagint1否是否发布 2. 供应商信息表字段名数据类型长度主键描述CompanyIDnvarchar50是供应商编号CompanyNamenvarchar100否供应商姓名CompanyDirectornvarchar50否联系人姓名CompanyPhonenvarchar20否联系人电话CompanyFaxnvarchar20否传真CompanyAddressnvarchar200否地址CompanyRemarknvarchar400否备注ReDateTimedatetime8否加入日期Flagint1否是否发布3. 进货信息表字段名数据类型长度主键描述GoodIDnvarchar20是商品编号EmpIdnvarchar20否操作员编号JhCompNamenvarchar100否供应商名称DepotNamenvarchar20否仓库名称GoodsNamenvarchar50否商品名称GoodsNumint4否商品数量GoodsUnitnvarchar20否商品计量单位GoodsJhPricenvarchar8否进货单价GoodsSellPricenvarchar8否销售单价GoodsNeedPricenvarchar8否应付金额GoodsNoPricenvarchar8否实付金额GoodsRemarknvarchar200否备注GoodsTimedatetime8否进货时间Flagint4否删除标记4. 商品销售信息表字段名数据类型长度主键描述SellIDnvarchar20是销售编号KcIDnvarchar50否库存编号GoodsIDnvarchar20否商品编号EmpIDnvarchar20否员工编号GoodsNamenvarchar50否商品名称SellGoodsNumint4否销售数量SellGoodsTimedatetime8否销售时间SellPricenvarchar8否销售单价SellNeedPaynvarchar8否应付金额SellHasPaynvarchar8否实付金额SellRemarknvarchar200否备注SellFlagint4否删除标记5. 商品退货信息表字段名数据类型长度主键描述ThGoodsIDnvarchar50是退货商品编号KcIDnvarchar50否库存编号GoodsIDnvarchar50是商品编号SellIDnvarchar50否销售编号EmpIDnvarchar20否操作员编号ThGoodsNamenvarchar50否商品名称ThGoodsNumint4否退货数量ThGoodsTimedatetime8否退货日期ThGoodsPricenvarchar8否退货单价ThNeedPaynvarchar8否应付金额ThHasPaynvarchar8否已退款金额ThGoodsResultnvarchar200否退货原因6. 库存信息表字段名数据类型长度主键描述KcIDnvarchar50否库存编号GoodsIDnvarchar50是商品编号JhCompNamenvarchar100否供应商名称KcDeptNamenvarchar20否仓库名称kcGoodsNamenvarchar20否商品名称KcNumint4否库存数量KcAlarmNumint4否警报数量KcUnitnvarchar20否商品计量单位KcTimedatetime8否进货时间KcGoodsPricenvarchar8否进货价格KcSellPricenvarchar8否销售价格KcEmpnvarchar50否进货人KcRemarknvarchar200否备注7. 员工信息实体ER图8. 供应商信息实体ER图9. 进货信息实体ER图10. 库存信息实体ER图【概要设计与实现过程】1. 项目的概要设计:此系统的登录界面有验证用户的信息,只要登录成功,才可进入超市管理系统的主窗体。主窗体可以连接到系统的所有功能菜单,包括基本档案,进货管理,销售管理,库存管理,系统维护。基本档案包括员工信息和供应商信息。员工信息表是因为开发过程中要考虑系统的安全性,不是任何人都可以操作系统的,才设置存储管理系统的员工信息表;供应商信息表是因为超市的经营离不开与供应商的合作,而每件商品对应不同的供应商,此时必须在数据库中建立一个供应商信息表,用于存储所有供应商信息。进货管理包括商品进货信息和进货信息查询,建立一个进货信息表是因为超市的运营离不开货物往来,日常货物的购买是非常重要的,此用于存储进货的详细信息。销售管理分为商品销售信息和商品退货信息,商品销售信息表为了时刻了解超市销售利润,需要对商品的销售情况有所了解;商品退货信息表是因为当顾客对某件商品不满意时,可以要求进货,同时超市经营者也要详细地了解退货信息。库存管理分为库存警报和库存查询。因为超市定期要对货物进行补充,在进货之前要了解剩余货物的数量,此时需要在数据库中建立一个库存信息表用于存储剩余货物的情况。系统维护包括数据备份和数据还原,以防数据丢失,所以需要备份数据和还原数据。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控件,显示一个对话框,提示用户打开文件。【总结】注:以下所说的“完整”指实现窗体的所有功能(增,删,改,查)。 数据库:孙旭南(完整) 登录界面:孙旭南(完整并有创新) 超市管理主界面:孙旭南(完整并有创新) 员工信息表:田艳(完整并有创新) 供应商信息:田艳(完整并有创新) 商品进货:孙旭南(完整) 商品查询:孙旭南(完整) 商品销售:田艳(窗体载入成功,可以删除数据,但添加和修改功能未实现) 商品退货:田艳(窗体载入成功,但添加和修改和删除功能未实现) 库存警报:孙旭南(窗体载入成功,但无法在数据库中更新) 库存查询:田艳(完整) 数据备份:孙旭南(完整,向同学请教的) 数据还原:孙旭南(完整,上网查的) 单元测试:孙旭南(完整) 安装与部署:孙旭南(做得很完全,但在安装程序时出现意外错误,因为是基于“画板”做的,最后出现的快捷方式是一个类似“画板”的窗体)。 此桌面应用生产性实训的文档设计与编写:孙旭南自评:此超市管理系统做的还是挺成功的,有一种成就感。大体实现各个窗体的增删改查功能,只有个别的窗体不太完整。希望再接再厉,争取做得更好。【创新及其他】孙旭南的创新: 1.登录界面有普通员工和管理员,普通员工需要输入用户名和密码,管理员只需输入用户名即可进入。(从刘铁英老师给发的“客户角色”的文档学到的) 2.超市管理系统主界面有一个“欢迎光临”的滚动条。(从刘铁英老师给发的“状态栏的文字滚动”的文档改编的) 3.员工信息表和供应商信息表的查找按钮,鼠标只要一接触,便可自动查询,而不需要点击鼠标。(利用查找按钮事件的MouseEnter实现的) 4.关闭超市管理系统主界面时,需要弹出一个对话框,是否需要关闭此系统。(通过登录界面验证用户的提示下,考虑到关闭此系统时是否确定需要关闭)【产品使用说明书】1. 产品的特点:使用此超市管理系统可有效减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,提升超市的市场竞争力。2. 此系统发布成功。用户可以通过安装来实现环境的搭建和系统运行。3. 指导用户使用产品。在“超市管理系统的安装”文件夹下,打开Debug文件夹,有个setup的安装盘,即可安装。产品是以URL部署的,打开此系统,可以实现各个窗体的增,删,改,查功能。【附录】实现员工信息表功能的主要代码:(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(); daEmpBirthday.Value = Convert.ToDateTime(sqldr5.To

温馨提示

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

评论

0/150

提交评论