《毕业设计(论文)进销存管理系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)进销存管理系统的设计与实现.doc(40页珍藏版)》请在三一办公上搜索。
1、目 录一、进销存管理系统的基本定义1二、进销存管理系统的需求分析1(一)设计背景1(二)系统需求分析2三、数据库设计3(一)管理员表Admin3(二)服装进货表Fzjhb4(三)服装销售表Fzxsb5(四)会员信息表Hyxxb6四、系统功能模块的实现7(一)系统登录8(二)系统主界面9(三)系统管理10(四)服装查询13(五)服装管理14(六)服装销售18(七)窗口工具19(八)系统帮助19五、小结20六、附录:主程序的部分代码21进销存管理系统的设计与实现摘 要:近年来,随着企业的发展,客户的数量不断增多,财务工作复杂化,库存产品零乱等一系列问题也接踵而来,给企业经营者带来了很大的困扰。进销
2、存管理系统的出现解决了这些难题,把以往复杂的问题变得简单化。因此,本论文将研究进销存管理系统需求分析,功能设计,并且设计一个进销存管理系统,运用到商店柜台。关键词:进销存 系统管理 服装 销售 统计 一、进销存管理系统的基本定义进销存管理系统解决了商品的进、销、存、退、换、盘、损、残、调、借、赠等一系列操作流程中的数据信息的处理问题,提供了一系列的数据分析,帮助商家合理的调整各个经营环节的动作节奏,并对商品流转过程进行了全程跟踪管理、相应款项流通的全程记录和票据信息统计的管理。对于一些小的商店、超市,使用进销存管理系统,可以省去大量的时间和人力来管理商品信息,一次性将商品信息输入到计算机,以后
3、就直接使用、查看。通过对销存管理系统的理解,本人也经过自己的努力,做出了一个属于自己的进销存管理系统。二、进销存管理系统的需求分析(一)设计背景在大学的时间里,我们学习了Visual 程序设计这门必修课,本人对Visual C产生了浓厚的兴趣,通过在课程中的训练,我们需要完成老师布置的课程任务学生管理系统。本人在最短的时间里完成了课程任务,通过在课外的学习,对Visual 有了更进一步的了解。另外也学习了SQL Server 2000数据库,了解了数据库的强大存储功能,以及数据库在程序设计中的广泛应用。也一直想编写一个能够供别人真正使用的系统。一个很好的朋友新开了一家服装店,店里的规模不大,他
4、知道本人编写过几个管理系统,所以请本人来帮助设计一个进销存管理系统,正好也想借此机会锻炼一下自己,就没有理由拒绝了。运用所学的知识,编写出一个合适的进销存管系统,真正运用到生活中,这也是值得高兴的事。根据服装店的需求,设计系统时,考虑的问题必须严谨、周全,涉及到金钱方面的地方要严格保密。它不像我们做的课程任务的系统那样简单,那样的系统是经不起考验的。(二)系统需求分析通过对其他进销存管理系统的调查,也向朋友了解了服装的一些基本信息,然后进行分析整理,总结出了以下的系统设计方案。1、服装登记从批发商那里进回一批服装时,要对每一件服装进行登记,把服装的所有信息输入到计算机中,保存在数据库里。2、服
5、装管理通过数据库里的服装信息,可以查询指定类型的服装,统计服装的数量和库存情况。3、会员管理新会员注册后,在计算机里就可以查询出来,统计每个会员的积分和消费情况。4、服装销售每件服装销售后,计算机记录了销售的信息。5、营业额管理通过服装销售的信息,计算机可以统计指定时间段的服装盈利情况。6、系统设计系统前台用Visual Studio 2008软件来编写,后台需要SQL Server 2005数据库支持。三、数据库设计SQL Server 2005数据库作为程序的后台,所有的服装信息,管理员信息,以及会员信息等都记录在这里,数据库的安全关系到整个进销存系统的安全,所以在打开数据库时必须要通过用
6、户安全验证,同时,数据库的备份也同样重要,确保计算机在极端的情况下出现系统崩溃而导致数据无法恢复的麻烦。下面是进销存管理系统中数据库里的几张表。(一)管理员表Admin管理员是登录系统的主要人员,系统里有不止一个的管理员,每个管理员之间可以相互查看各个的基本情况,表中的字段有:管理员号AdminId、管理员姓名AdminName、管理员密码AdminPwd、管理员年龄AdminAge、管理员性别AdminSex、管理员电话AdminTel、管理员备注AdminRemarks。如图3-1所示。图3-1 管理员表(二)服装进货表Fzjhb记录服装的所有信息,每一批服装进货回来时,都要将服装的所有信
7、息输入到计算机,便于对服装的其他的操作,只有输入了服装的信息,在服装查询、销售时才能够找到该服装,服装进货表中的字段有:服装代码Fzdm、服装简码Fzbm、服装款号Fzkh、服装名称Fzmc、服装品牌Fzpp、品牌价Ppj、折扣Zk、折扣价Zkj、进货价Jhj、服装数量Fzsl、剩余数量Sysl、进货金额Jhje、服装主色Fzzs、进货时间Jhsj。如图3-2所示。图3-2 服装进货表(三)服装销售表Fzxsb 服装销售表记录每件销售的服装信息,并且记录每个消费者会员的信息,用于管理员查看服装销售记录以及统计服装的营业额,还可以统计会员的积分,可以根据会员的消费情况对其进行打折优惠等。其中的部
8、分字段都和服装进货表的字段相同,服装销售表的字段有:服装代码Fzdm、服装简码Fzbm、服装款号Fzkh、服装名称Fzmc、服装品牌Fzpp、服装主色Fzzs、品牌价Ppj、折扣Zk、折扣价Zkj、进货价Jhj、营业额Yye、进货时间Jhsj、销售时间Xssj、最终售价Zzsj、会员号HyNo、会员姓名HyName、会员电话Hytel。如图3-3所示。图3-3 服装销售表(四)会员信息表Hyxxb会员信息表中记录了会员的所有信息,在注册会员时添加了会员的初始情况,在以后会员每消费一笔,就会保存会员的消费记录,消费金额改变成相应的积分。会员信息表中的字段有:会员号HyNo、会员姓名HyName、
9、会员性别HySex、会员年龄HyAge、会员电话HyTel、会员QQ HyQQ、会员积分HyJf、注册时间Zcsj、会员备注HyBz。 如图3-4所示。图3-4 会员信息表四、系统功能模块的实现进销存管理系统的功能模块如图4-1所示:图4-1 系统功能模块图注:图中带*的部分表示此功能需要验证高级管理员密码。(一)系统登录管理员通过输入正确的管理员ID号和密码,进入系统主界面。输入三次错误的管理员ID号或密码,系统提示超过最大输入限度,系统将自动退出。系统登录界面如图4-2所示:图4-2 登录界面(二)系统主界面系统设计讲究直观实用,在设计系统的时候,考虑过要加入一些背景图片,让系统更美观,但
10、这样的话不能让每个用户都喜欢,而且过分艳丽的图片反会让用户感觉不踏实,毕竟系统是要体现它的管理价值,由于时间紧,任务重,所以只在系统必要的地方插入背景图片,其他的地方暂时都用是空白显示的。通过输入正确的管理员ID号和密码后,进入系统的主界面,主界面样式如图4-3所示;图4-3 系统主界面(三)系统管理系统管理分为三个部分:修改密码、管理员信息、安全退出。其中“管理员信息”中包括管理员修改个人信息、查看其他管理员信息、注册新管理员信息。1、修改密码管理员登录后,系统自动记录了管理员的ID号,直到下次退出时释放记录。管理员直接输入自己的初始密码,然后输入新的密码,确认新密码,最后点击“确认”按钮,
11、修改密码成功。因为每个管理员登录时系统记录了管理员的ID号,所以管理员不需要再输入ID号,系统直接可以确认管理员的原始密码是否正确。管理员修改密码成功后的界面如图4-4所示。图4-4 修改密码成功界面2、管理员信息查询管理员进入后直接看到个人的基本信息,如图4-5所示。图4-5 管理员信息界面管理员还可以点击上一个、下一个来查看系统中其他管理员的基本信息,管理员只能修改个人的信息,不能修改其他管理员的信息。另外如果需要增加新的管理员,可以点击新增按钮,将添加一个新的管理员。把新增管理员功能放在这里也是从安全方面考虑的,避免陌生人直接注册使用系统,必须在有一个管理员同意的情况下,才能注册新的管理
12、员账号。新增管理员界面如图4-6所示。图4-6 注册管理员界面3、安全退出安全退出可以保存本次登录情况,记录登录时间,建议退出系统时选择安全退出,不要利用资源管理员强行结束任务,避免对没有保存的数据造成混乱等。退出时系统给出提示,如图4-7所示。图4-7 系统退出时提示(四)服装查询1、查询服装信息服装查询可以对数据库中的所有服装进行查询统计,查询服装信息分为六种查询方式:全部服装列表、按服装编码查询、按进货时间查询、服装库存列表、按服装名称查询、按服装折扣价查询。按服装编码查询查出来的服装才会只有一条信息,因为每一件服装都有一个编码,有的相同的服装有几件,它们的编码是一样的,其他的所有服装的
13、编码都不会一样,所以在销售服装时,只能够按编码查找服装。其他的查询都属于模糊查询,把符合条件的所有服装按照指定的顺序显示出来,管理员可以统计指定类型的服装的数量、以及剩余情况等。查询服装信息如图4-8所示。图4-8 服装查询界面2、查询销售信息查询销售信息和查询服装信息类似,也列出了六种查询方法,不同的查询方法是,按销售时间查询、按售价查询。3、查询会员信息查询会员信息列出的是会员的基本情况,分为四种查询方式,可以查出会员的具体情况,这里包括会员的消费记录、会员的积分等。(五)服装管理服装管理关系到整个商店的服装信息的安全,它涉及到商家的商业机密,例如服装的进货价、商店的营业额、会员的积分等,
14、不可轻易让普通的管理员以及其他人员看到。所以在服装管理这些窗体中,都需要验证超级管理员密码,只有输入正确的超级管理员密码,才能够进入查看和修改里面的信息。1、添加服装信息每一次新服装进货回来,要必须将服装的所有信息输入到计算机里,存入数据库中,这样才能对服装进行其他的操作,比如查询服装,统计服装数量、以及销售服装等。服装的基本信息包括服装代码、服装款号、服装名称、服装品牌、品牌价、进货价、折扣、折扣价、服装数量、服装主色、进货时间等。服装的折扣、价格需要进行定位调整,必须由店长来完成。服装添加成功界面如图4-9所示。图4-9 添加服装界面2、管理服装信息管理服装信息和添加服装信息界面差不多,但
15、不同的是,先从查询服装界面,选择一个服装后,点击鼠标右键里有“修改”选项,系统将这个服装的信息显示在修改服装界面上,管理员直接进行修改或者删除该服装信息,删除服装时会弹出一个提示框,警告是否确定删除。3、管理销售信息管理销售信息界面添加了会员的信息,每销售一件服装,系统会提示是否保存相应的会员信息,如果选择了“是”,则会员的信息同服装信息一起保存在服装销售表里面。可以对其进行修改或删除操作。界面如图4-10所示。图4-10 管理服装界面4、管理会员信息管理会员信息同管理服装信息类似,具体操作步骤也和服装管理一样,这里就不再赘述。5、营业额查询它的界面和查询服装信息的界面很类似,但仔细看却发现在
16、“查询”按钮和服装信息中间却多了一些标签,这些标签显示的是这些服装信息的总和,包括进货金额、销售金额、营业额。这三项应该是管理员最需要知道的数据,有了这些数据,管理员很清楚地了解了某一时段的服装销售情况,以及盈利情况。界面效果如图4-11所示。图4-11 营业额统计界面进销存管理系统最大好处就是可以为商家省去大量的时间来统计整理数据。如果是在没有计算机的时代里,商家的营业额很难统计的那么清晰,也会花费大量的时间,而且统计的数据也很不准确,没有依据性。进销存管理系统轻易地完成了这些事情,每一笔交易都可以查出它的来龙去脉,让商家为此节省了很多的人力和物力。(六)服装销售1、服装销售主界面服装销售也
17、是进销存管理系统的重点部分,它是整个系统的门面,长时间它都呈现在电脑的画面上,销售每一件服装都要经过它来计算、统计。所以设计好它也是非常有必要的。在服装销售界面需要考虑的因素有很多,在设计时也观察过很多其他商店柜台上的销售系统,一般都有一个红外线扫描仪连接计算机,把商品的条形码扫描一下,计算机通过条形码查找出对应的商品信息,把商品的信息列出来,然后再继续扫描或者直接点击确认销售。扫描仪这部分可以省略掉,直接在销售主界面上输入服装的代码,然后按“Enter”直接查出服装的基本信息,把服装的基本信息显示出来,管理员可以点击销售或者其他操作。另外在主界面上添加了会员信息这一项,在主界面可以注册新的会
18、员,当会员要来购买服装时,在主界面的左边显示了服装的信息,右边则可以查找会员或者注册新的会员,最后结账时就选择保存会员消费记录或者不保存。服装销售主界面如图4-12所示。图4-12 服装销售主界面(七)窗口工具窗口工具里面放置了一些在使用系统时可能用到的工具,包括计算器、记事本、超链接网站等等,能够让用户在使用时更加方便、更人性化一些。(八)系统帮助系统帮助里面主要提到了在系统使用时的一些基本操作问题,包括疑难解答,还有一些操作捷径等,里面提到了使用系统时要注意的一些问题,包括一些非法数据的输入会导致系统无法实现而出现系统被迫关闭的情况。也提到了设计者在设计系统时的一些思路,没有解决的问题等。
19、五、小结进销存管理系统的实现,从开始策划到完成正式使用,一共花了半个月的时间,通过在课堂上的学习,以及课下在图书馆查阅资料,经常找任课老师请教问题,以及不断地努力下,终于大功告成。虽然系统只满足了用户最基本的需求,以后还需要升级和扩展,以及它的稳定性和安全性,都没能经过长时间的审核验证,但对于初级程序员来说,也算是一个小的收获吧!正是通过了对这个系统的编写,能够让自己把所学的知识用到实处,真正体现学习的价值。通过成功设计这个进销存管理系统,对自己又增加了几份自信,在以后的工作中,每当遇到困难和挫折,都会一笑而过。相信自己始终是最棒的。参考文献:1John Sharp:Visual C# 200
20、8 从入门到精通,清华大学出版社, 2009,901202Erik Brown:C# Windows Forms程序设计,清华大学出版社,2008,1582603郭郑州,陈军红:SQL Server 2008完全学习手册,清华大学出版社,2010,20444韦拉,杨大川,孙皓,马煜:SQL Server 2008编程入门经典,清华大学出版社,2010,581055宋智军,邱仲潘:Visual C# 2010从入门到精通, 电子工业出版社,2011,1638六、附录:主程序的部分代码(一)数据库连接代码namespace 商店管理系统 / 存放数据库连接字符串和数据库连接对象 class DBH
21、elper / 数据库连接字符串 public static string connStr = Data Source=.;Initial catalog=shop; Integrated Security= True; / 数据库连接对象 public static SqlConnection connection = new SqlConnection(connStr); (二)登录界面部分代码private void btnLogin_Click (object sender, EventArgs e) bool isValidUser = false; string message =
22、 ; if (ValidateInput () isValidUser = ValidateUser (txtAdminName.Text, txtAdminPwd.Text,ref message); if (isValidUser) UserHelper.AdminName = txtAdminName.Text; UserHelper.AdminPwd = txtAdminPwd.Text; Maininterface Maininterface = new Maininterface(); Maininterface.Show(); this.Visible = false; else
23、 MessageBox.Show(message, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); private bool ValidateInput() if (txtAdminName.Text.Trim() = ) MessageBox.Show(请输入管理员姓名!, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtAdminName.Focus(); return false ; else if (txtAdminPwd .Text .Trim ()=)
24、MessageBox .Show (请输入密码!,登录提示,MessageBoxButtons .OK, MessageBoxIcon .Information ); txtAdminPwd .Focus (); return false ; else return true ; private bool ValidateUser(string AdminName,string AdminPwd,ref string message ) string sql = string.Format(SELECT COUNT(*) FROM Admin where AdminName=0and Admi
25、nPwd=1, AdminName, AdminPwd); try SqlCommand command = new SqlCommand (sql,DBHelper.connection); DBHelper.connection.Open(); int count=(int)command .ExecuteScalar (); if(count1) message =管理员或密码错误!; txtAdminName.Text = ; txtAdminPwd.Text = ; txtAdminName.Focus(); return false ; else return true ; cat
26、ch (Exception ex) message = 操作数据库出错!; Console.WriteLine(ex.Message); return false; finally DBHelper.connection.Close(); message =管理员不存在!; return false ;(三)添加服装部分代码private void btnAdd_Click(object sender, EventArgs e) if (ValidateInput() if (Test() string Fzbm = txtFzdm.Text.Substring(txtFzdm.Text.Le
27、ngth - 5, 5); string Jhsj = txtJhsj.Text.Trim(); double Ppj = Convert.ToDouble(txtPpj.Text.Trim(); double Zk = Convert.ToDouble(cboZk.Text.Trim(); double Zkj = Convert.ToDouble(txtZkj.Text.Trim(); double Jhj = Convert.ToDouble(txtJhj.Text.Trim(); int Fzsl = Convert.ToInt16(txtFzsl.Text.Trim(); doubl
28、e Jhje = Jhj * Fzsl; string sql string.Format(INSERTINTO FZJHB (Fzdm,Fzbm,Fzkh,Fzmc,Fzpp, Ppj,Zk, Zkj, Jhj,Fzsl,Sysl,Jhje,Fzzs, Jhsj) values (0, 1, 2,3, 4, 5, 6, 7,8,9,10,11, 12, 13),txtFzdm.Text.Trim(), Fzbm, txtFzkh.Text.Trim(), cboFzmc.Text.Trim(), cboPpmc.Text.Trim(), Ppj, Zk, Zkj, Jhj, Fzsl, Fz
29、sl,Jhje,cboFzzs.Text.Trim(), Jhsj); SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); command.CommandText = sql; int result = command.ExecuteNonQuery(); if (result = 1) MessageBox.Show(增加服装信息成功, 操作提示, MessageBoxButtons.OK, MessageBoxIcon.Information); textcle
30、ar(); return; else MessageBox.Show(添加信息失败,请联系程序员!, 操作提示, MessageBoxButtons.OK, MessageBoxIcon.Error ); textclear(); return; DBHelper.connection.Close(); private void QueryFzmc() string sql = select distinct Fzmc from Fzjhb; try / 创建Command 对象 SqlCommand command = new SqlCommand(sql, DBHelper.connect
31、ion); DBHelper.connection.Open(); / 执行查询 SqlDataReader dataReader = command.ExecuteReader(); / 循环读取记录 while (dataReader.Read() cboFzmc.Items.Add(dataReaderFzmc.ToString(); dataReader.Close(); / 关闭 DataReader 对象 catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelper.connection.Close();
32、private void QueryFzpp() string sql = select distinct Fzpp from Fzjhb; try / 创建Command 对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); / 执行查询 SqlDataReader dataReader = command.ExecuteReader(); / 循环读取记录 while (dataReader.Read() cboPpmc .Items.Add(dataRea
33、derFzpp.ToString(); dataReader.Close(); / 关闭 DataReader 对象 catch (Exception ex) Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); private bool Test() string sql = string.Format(SELECT COUNT(*) FROM Fzjhb where Fzdm=0, txtFzdm .Text .Trim (); try SqlCommand command = new SqlCommand(
34、sql, DBHelper.connection); DBHelper.connection.Open(); int count = (int)command.ExecuteScalar(); if (count = 48 & e.KeyChar = 57) txtFzdm.Text = ; txtFzdm.Focus(); private void cboZk_SelectedIndexChanged(object sender, EventArgs e) if (txtPpj.Text.Trim() = ) txtPpj.Text = 0; double Ppj = Convert.ToD
35、ouble(txtPpj.Text.Trim(); double Zk = Convert.ToDouble(cboZk.Text.Trim() / 10; double Zkj = Ppj * Zk; txtZkj.Text = Zkj.ToString();(四)服装销售部分代码private void button1_Click(object sender, EventArgs e) if (txtFzbm.Text = ) MessageBox.Show(请输入服装尾码!, 操作提示, MessageBoxButtons.OK, MessageBoxIcon.Information);
36、 txtFzbm.Focus(); return; else string sql = string.Format(SELECT Fzdm, Fzkh, Fzmc, Fzpp, Fzzs, Sysl, Ppj, Zk,Zkj,Jhj,Jhsj FROM Fzjhb WHERE Fzbm=0,txtFzbm .Text .Trim (); try / 创建 Command 对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); / 打开数据库连接 DBHelper.connection.Open(); SqlDataRe
37、ader dataReader = command.ExecuteReader(); / 执行查询 while (dataReader.Read() lblFzdm.Text = dataReaderFzdm.ToString(); lblFzkh.Text = dataReaderFzkh.ToString(); lblFzmc.Text = dataReaderFzmc.ToString(); lblFzpp.Text = dataReaderFzpp.ToString(); lblFzzs.Text = dataReaderFzzs.ToString(); lblSysl.Text = dataReaderSysl.ToString(); Sysl = Convert.ToInt16(lblSysl.Text.Trim(); string Jhsj = dataReaderJhsj.ToString(); lblJhsj.Text = Jhsj.Remove(Jhsj.Length - 8, 8); string Ppj1 = dataReaderPpj.ToString(); lblPpj.Text = Ppj1.Remove(Ppj1.Length - 2, 2); lblZk.Text =
链接地址:https://www.31ppt.com/p-3985143.html