1、专业实践net课程实践报告课程设计报告( / 学年 第 学期)课程名称.NET专业实践设计名称进销存管理信息系统设计时间年月日指导单位指导教师学生姓名班级学号学院(系)专 业目 录第一章 系统需求分析 31.1需求概述 31.2数据流图 3第二章 进销存系统结构 52.1系统功能结构图 52.2系统登录界面 52.3系统主界面 72.4总E-R图设计 8第三章 系统详细设计 83.1 基本资料维护功能 83.1.1操作员资料维护 83.1.2商品资料维护 93.1.3供应商资料维护 103.1.4品牌资料维护 113.2 采购管理功能 123.2.1采购入库 123.2.2采购退货 133.3
2、 销售管理功能 143.3.1销售出库 143.3.2销售退货 153.4 库存统计功能 163.4.1库存查询 163.4.2销售统计 173.4.3采购统计 19第四章 数据库设计 214.1数据库逻辑设计 214.2表设计 22第五章 系统调试 24第六章 结束语 25第一章 系统需求分析1.1需求概述 这里对商品的管理包括进、销、存3个方面。可以建立一个超市进销存管理系统,对超市的管理者、营业员、库存管理员等减轻其工作量,便于经营管理。功能需求:采购管理功能模块:采购计划、采购订单、采购入库、采购退货、应付款、采购付款。销售管理功能模块:、报价单、销售订单、销售出库、销售退货、应收款、
3、销售收款。库存管理功能模块:其它入库、其它出库、库存警报、库存报表、基本资料设计。商品管理需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。它最主要的特点是能够实时的和准确的控制店内的销售情况。1.2数据流图图1.1 第0层数据流图图1.2 进销存管理系统数据流图(第一层)说明:每一个处理也均可由外部实体直接输入数据图1.3 销售管理数据流程图(第二层)图1.4 仓库管理数据流程图(第二层)图1.5 采购管理数据流程图(第二层)第二章 进销存系统结构2.1系统功能结构图2.2系
4、统登录界面 用户登录系统时,系统会对其身份进行验证,如果系统中不存在该用户,会提示用户名或密码错误!不同的登录类型对系统的访问权限不一样。由于软件界面在整个软件生命周期的重要作用,根据社会工程学、国家标准等相关规范,确定软件界面时要遵循以下原则: 布局合理,界面简洁。 配色合理,图像和显示效果要统一。 整个软件界面风格应该保持一致。 减少用户的操作负担,界面尽可能少的使用鼠标。 所有界面文字清晰明了,不产生歧义。用户身份验证代码: public void loginValidate() UserInfo u = null; SqlConnection con = new SqlConnecti
5、on(DBHelper.conStr); try con.Open(); int userRole = cbo_loginType.SelectedIndex; string sql = string.Format(select * from userInfo where UserloginId=0 and UserPass=1 and UserRole=2, txt_UserloginId.Text, txt_UserPass.Text, userRole); SqlCommand com = new SqlCommand(sql, con); SqlDataReader dr = com.
6、ExecuteReader(); if (dr.Read() u = new UserInfo(); u.UserId = Convert.ToInt32(drUserId); u.UserloginId = drUserloginId.ToString(); u.UserName = drUserName.ToString(); u.UserPass = drUserPass.ToString(); u.UserRole = drUserRole.ToString(); dr.Close(); if (u != null) LoginInfo.LoginUserInfo = u;/保存登录用
7、户信息 this.Visible = false; Frm_Main fm = new Frm_Main(); fm.Show(); else MessageBox.Show(用户名或密码错误!, 登录提示); catch (Exception) MessageBox.Show(请注意数据库连接字符串!, 登录提示); finally con.Close(); 上面代码的cbo_loginType.Text.Trim()中的Trim()方法用于去除字符串两端的空格,代码string.IsNullOrEmpty(cbo_loginType.Text.Trim()用于验证非空。2.3系统主界面当用
8、户进入主界面后,可以选择需要操作的菜单,单击菜单项后会跳转到相应的窗体。在进销存系统中主窗体为MDI窗体,在其下所打开的窗体都会在关闭主窗体之后关闭。要实现让主窗体为MDI窗体,首先要设置主窗体的IsMdiContainer属性为True,再指定子窗体的父窗体是主界面窗体。具体实现代码如下: private void tsmi_StoreQuery_Click(object sender, EventArgs e) fsq.MdiParent = this; if (fsq.Visible) fsq.Focus(); return; else fsq = new Frm_StoreQuery(
9、); fsq.MdiParent = this; fsq.Show(); 2.4总E-R图设计在分析清除系统功能需求之后,总要的就是把系统功能划分成为相对独立的模块或者子系统,便于集中讨论和确定需求,并且需要确定出操作用户,可以直观的表现出该系统的业务流程。第三章 基础功能设计开发3.1 基本资料维护功能3.1.1操作员资料维护提供对操作员添加、删除、修改、查询功能,该界面只有管理员有权进入。为方便管理员查找用户的详细信息,程序提供了根据用户名查询用户详细信息的功能。若要修改用户信息,先选中待修改的项,然后单击“修改”按钮,系统会自动将选中项显示到基本信息文本框中,这时管理员可以修改用户资料,
10、之后点击“保存”按钮,在确定操作后,系统会检测操作员的数据输入。点击“添加”, 系统会自动启动基本信息文本框,输入之后点击保存即完成。选中要删除的项,点击“删除”,然后确定,即可成功删除用户信息。以下代码实现了查询功能:private void tsb_Btn_Lookup_Click(object sender, EventArgs e) if (tsb_Txt_Lookup.Text.Trim() = | String.IsNullOrEmpty(tsb_Txt_Lookup.Text) MessageBox.Show(请输入查询条件, 提示); else lp = GetProductI
11、nfoByProt_Name(tsb_Txt_Lookup.Text); dgv_PrdouctInfo.DataSource = lp; 3.1.2商品资料维护当单击“商品资料维护”选项后,在商品资料维护窗体加载时应该将所有的商信息都显示出来。使用列表控件展现概要信息,附加文本框和下拉列表框显示详细信息,当用户单击列表时需要显示详细信息。可对商品信息进行添加、修改、删除、和查询等操作。以下是实现删除功能的代码:private void tsb_Btn_Delete_Click(object sender, EventArgs e) if (dgv_PrdouctInfo.SelectedRo
12、ws.Count 0) int pId = Convert.ToInt32(dgv_PrdouctInfo.SelectedRows0.Cells0.Value); string sql = delete from productInfo where ProtId= + pId; DialogResult dr = MessageBox.Show(你确定要删除此商品信息吗? 删除之后所有关于该商品的记录将会全部清空, 提示, MessageBoxButtons.OKCancel); string sqlStoreCount = select StoreSum from storeRoom wh
13、ere protid= + pId; int storeCount = 0; SqlConnection con = new SqlConnection(conStr); con.Open(); SqlCommand cmd = new SqlCommand(sqlStoreCount, con); storeCount = Convert.ToInt32(cmd.ExecuteScalar(); if (storeCount 0) MessageBox.Show(该商品还有库存,请先将货物清理出库再删除商品, 提示); return; else string sqlDelStoreCount
14、 = delete from storeRoom where protid= + pId; string sqlDelDetial = delete from orderdetails where protid= + pId; string sqlDelReturn = delete from returnproduct where protid= + pId; ExecuteQuery(sqlDelStoreCount); ExecuteQuery(sqlDelDetial); ExecuteQuery(sqlDelReturn); con.Close(); if (dr = DialogR
15、esult.OK) int result = ExecuteQuery(sql); if (result 0) MessageBox.Show(删除成功!, 提示); lp = GetProductInfoByProt_Name(); dgv_PrdouctInfo.DataSource = lp; 3.1.3供应商资料维护在供应商资料维护窗体加载时,保存按钮和文本框处于禁用状态,与此同时系统会将所有的供应商信息查询出来并显示。可对供应商资料进行添加、修改、删除、和查询等操作。当对供应商资料进行添加、修改和删除操作时,保存按钮和文本框处于启用状态。单击删除按钮系统会弹出“你确定要删除此条信息吗
16、?”的对话框。单击“确定”按钮系统会删除成功或失败。一般涉及数据删除的操作必须给予客户提示,以免操作在客户大意之下发生。以上代码实现了添加功能:private void tsb_Btn_Add_Click(object sender, EventArgs e) type = 0; tsb_Btn_Amend.Enabled = false; tsb_Txt_Lookup.Enabled = false; tsb_Btn_Delete.Enabled = false; tsb_Btn_Lookup.Enabled = false; tsb_Btn_Save.Enabled = true; Dis
17、play(); txt_Prot_Name.Focus(); 3.1.4品牌资料维护为方便查找特定品牌的详细信息,程序提供了根据品牌名称查询品牌详细信息的方法。品牌编号是自动产生,无法修改。可对品牌信息进行添加、修改、删除、和查询等操作。以上代码实现了修改功能。private void tsb_Btn_Amend_Click(object sender, EventArgs e) type = 1; tsb_Btn_Add.Enabled = false; tsb_Btn_Save.Enabled = true; tsb_Btn_Delete.Enabled = false; tsb_Txt_
18、Lookup.Enabled = false; tsb_Btn_Lookup.Enabled = false; Display(); txt_Store_LastNum.Enabled = false; txt_Prot_Name.Focus(); lb_Prot_id.Text = dgv_PrdouctInfo.CurrentRow.Cells0.Value.ToString(); txt_Prot_Name.Text = dgv_PrdouctInfo.CurrentRow.Cells1.Value.ToString(); txt_Prot_Retailprice.Text = dgv_
19、PrdouctInfo.CurrentRow.Cells2.Value.ToString(); txt_Prot_Tradeprice.Text = dgv_PrdouctInfo.CurrentRow.Cells3.Value.ToString(); txt_Prot_Bigunit.Text = dgv_PrdouctInfo.CurrentRow.Cells4.Value.ToString(); txt_Prot_Smallunit.Text = dgv_PrdouctInfo.CurrentRow.Cells5.Value.ToString(); txt_Prot_Rate.Text
20、= dgv_PrdouctInfo.CurrentRow.Cells6.Value.ToString(); cbb_Cards_Name.Text = dgv_PrdouctInfo.CurrentRow.Cells7.Value.ToString(); cbb_Priv_Name.Text = dgv_PrdouctInfo.CurrentRow.Cells8.Value.ToString(); dtp_Prot_Date.Value = Convert.ToDateTime(dgv_PrdouctInfo.CurrentRow.Cells9.Value); 3.2 采购管理功能3.2.1采
21、购入库当将需要采购的商品放入采购商品信息列表中后,系统会自动进行计算总采购数量和总价钱。采购入库时要记录商品基本信息。可对入库的商品基本信息进行保存和删除操作。以上代码实现了保存功能。private void tsb_Btn_Save_Click(object sender, EventArgs e) Save(); lp = GetProductInfoByProt_Name(); dgv_PrdouctInfo.DataSource = lp; Clear(); Conceal(); tsb_Btn_Amend.Enabled = true; tsb_Btn_Delete.Enabled
22、= true; 3.2.2采购退货当商品库存量为0时,想要彻底地删除该商品,需要两步:首先要确保库存中该商品数量为0,其次需要到基本信息维护菜单中选择商品信息维护选项,单击该选项系统会弹出维护商品信息窗体,在其上的商品信息列表中找到要彻底删除的商品,单击“删除”按钮,若显示删除成功,至此才彻底删除了需要删除的商品。private void txt_Out_Num_KeyDown(object sender, KeyEventArgs e) if (e.KeyCode = Keys.Enter) try StoreRoom s = common.s; if (Convert.ToInt32(tx
23、t_Out_Num.Text) s.Store_sum) MessageBox.Show(库存不够,请进货或减少销售); txt_Out_Num.SelectAll(); return; if (Convert.ToInt32(txt_Out_Num.Text) var.Store_sum) MessageBox.Show(库存不够,请进货,或减少销售); txt_Out_Num.SelectAll(); return; var.In_Out_StoreRoom += Convert.ToInt32(txt_Out_Num.Text); sum += Convert.ToInt32(txt_O
24、ut_Num.Text); money += Convert.ToInt32(txt_Out_Num.Text) * var.Prot_tradeprice; if (var.Store_sum - var.In_Out_StoreRoom var.Store_lastNum) MessageBox.Show(请注意该商品销售后,该商品库存小于库存下线,请尽快进货, 警告, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); b = false; break; common.s = null; dgv_Store.DataSource = nu
25、ll; dgv_Store.DataSource = ls; Clear(); txt_Prot_Name.Focus(); lb_money.Text = money.ToString(); lb_num.Text = num.ToString(); lb_sum.Text = sum.ToString(); catch (Exception) MessageBox.Show(请输入正确的数字格式); txt_Out_Num.SelectAll(); 3.3 销售管理功能3.3.1销售出库当光标进入商品名称文本框时,按下Enter键,选择要销售的商品。按下Enter键,输入销售数量,按下En
26、ter键。之后单击“保存”按钮,提示销售成功或失败!当销售的商品数量小于该商品的库存警报数量时,提示该商品已经到达销售警报位置,需要进货。系统提供了按商品名称查询商品的详细信息,并且支持模糊查询。其中品牌名称和供应商绑定到了下拉列表框中,以备客户选择。实现退出功能的代码: private void tsb_Btn_Exit_Click(object sender, EventArgs e) this.Close(); 窗体加载: private void Frm_SellOut_Load(object sender, EventArgs e) dgv_Store.AutoGenerateCol
27、umns = false; cbb_Cards_Name.DisplayMember = Cardsname; cbb_Cards_Name.ValueMember = Cardsid; cbb_Cards_Name.DataSource = LoginInfo.GetCardsByCards_name(); cbb_Priv_Name.DisplayMember = Priv_name; cbb_Priv_Name.ValueMember = Priv_id; cbb_Priv_Name.DataSource = LoginInfo.GetProvidersByPriv_name(); 这是
28、连接数据库的代码:private static readonly string conStr = DBHelper.conStr;这是商品信息集合:List lp = new List(); 3.3.2销售退货光标进入商品名称文本框时,按下Enter键后系统将弹出库存信息查询窗体,与此同时将该窗体上的修改、删除、取消和查询按钮设为隐藏,并显示所有的商品信息列表。商品名称按键事件: private void txt_Prot_Name_KeyDown(object sender, KeyEventArgs e) try if (e.KeyCode = Keys.Enter) common.Prot_name = txt_Prot_Name.Text; Frm_StoreQuery fs = new Frm_StoreQuery(); common.Prot_EnterAndOut = true; fs.ShowDialog(); StoreRoom s = common.s; txt_Prot_Bigunit.Text = s.Prot_Bigunit; txt_Prot_Name.Text = s.Prot_name; txt_Prot_Rate.Text = s.Prot_rate.ToString(); txt_Prot_Retailpri
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1