版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1绪论 11.1课题研究背景 11.2系统开发意义 12需求分析 12.1系统功能分析 12.2系统用例分析 22.3系统E-R图 32.4运营环境 32.5可行性分析 42.5.1技术可行性 42.5.2经济可行性 43系统概要设计 43.1功能模块设计 43.2概念构造设计 53.2.1实体属性图 53.3数据表设计 94系统详细设计与实现 134.1功能模块详细实现 134.1.1登录模块 134.1.2系统主界面设计 154.1.3顾客管理模块 164.1.4修改密码模块 184.1.5药物信息管理模块 204.1.6入库登记模块 224.1.7销售登记模块 254.1.8药物退货模块 274.1.9药物报损模块 284.1.10药物调价模块 294.1.11报表中心界面 304.1.12系统某些公有类或办法设计与实现 345系统测试 355.1测试目的 355.2测试大纲 355.3测试成果及截图 366总结和道谢 466.1总结 466.2道谢 467参照文献 47
药物管理系统设计与实现专业:计算机科学与技术学号:姓名:指引教师:【内容摘要】社会在进步,随之而来尚有各种疾病,随着人们生活水平不断提高,人们越来越注重自己健康,这加速了医药行业发展。在当前“看病难,看病贵”社会背景下,诸多工薪一族在面对某些小疾病时候往往选取到附近药店购买非处方药进行治疗。在这种状况下,中小型便民药店越来越多,而中小型药店普遍存在药物管理混乱等问题,容易导致药物积压甚至失效,导致不必要损失。本药物管理系统重要环绕药物管理来操作,依照需求,系统重要实现药物库存管理、销售管理两大业务,为顾客提供任意时间段药物库存查询,设立药物库存下限查询。同步还向顾客提供了库存报表、销售报表、即将过期药物报表、利润报表等丰富报表。系统使用Microsoft公司VisualStudio平台,采用C#语言,结合SQLServer数据库进行设计与实现。系统通过测试基本达到了预期目的,操作界面较和谐,操作办法简朴,可以用于中小型药店药物管理。【核心词】中小型药店;药物管理;C#1绪论1.1课题研究背景药物管理系统可觉得药店管理者提供充分信息和快捷查询手段。但始终以来诸多中小型药店都使用老式手工方式进行管理,这种管理方式存在着许多缺陷,如效率低、数据易丢失等,容易导致药物积压甚至失效。此外时间一长,将产生大量纸质版数据,这对于查询、修改都导致很大不便。使用计算机对药物进行管理相对于手工管理而言,具备诸多长处。例如:查询以便快捷、数据存储量大等。这些长处可以极大地提高了药物管理效率,也能更好地保证药物效期安全,是对消费者负责态度体现。因而,开发一套合用于中小型药店药物管理系统管理软件很有必要。1.2系统开发意义中华人民共和国当前医药体系还不成熟,药物管理系统也不成熟。在国内有诸多软件公司开发药物管理系统,基本采用进销存模式,系统功能比较完善,但在安全、简捷、性能以及人性化设计方面还存在局限性。2需求分析2.1系统功能分析 药店正常运转货源要得到保证,这就必要有着良好进货入库管理功能,同步为了药物质量保证,以及在未知药物销量时可以保证药店不至于积存大量药物,对某些积存药物进行合理退货。作为药店赚钱机构,药店销售是非常重要,同步规定透明化,药店入库单、销售单、退货信息都必要合理记录记录。药物存货是药店进行正常运营保证同步合理库存量更好应对某些药物需求量变化,同步记录药物出库信息可以更好反映药物销售信息。在仓库中药物储藏浮现损失,通过记录信息可以精准核对药物量信息。同步在仓库储存中应设立药物库存下限,以便及时反映药物信息,为药物进货提供可靠根据。药物,是药店资源。药物管理直接影响药店经营,药物管理做得不好会引起药物混乱,容易导致药物失效,导致损失。为了维护消费者利益和药店自身信誉以及给药店创造更好效益,本系统应具备如下功能:
良好人机界面。药物入库及调价管理。药物销售及退货管理。药物报损管理。完善数据查询。丰富报表。数据导出到Excel、Word、PDF功能。2.2系统用例分析依照系统功能分析,可以将系统细分出药物信息管理、药店信息管理、修改密码、入库登记、药物调价、销售登记、药物退货、药物效期查询、药物报损、收入记录、支出记录、利润记录以及顾客管理13个子模块,管理员应为药店负责人,从药物入库到销售以及中间业务,管理员都可以使用,收银员可以使用某些功能,管理员用例图如图1所示,收银员用例图如图2所示。图1管理员用例图图2收银员用例图2.3系统E-R图图3系统E-R图2.4运营环境该系统采用了Client/Server模式软件构造技术,页面系统采用VisualStudio开发,数据库采用SQLServer作为数据库系统,系统平台为Windows7。MicrosoftVisualStudio集成化限度高,控件丰富,开发人员可以直接将各种控件拖放到视图设计器,由软件自动生成控件设计以及窗体布局设计代码,窗体视图设计更加以便高效MicrosoftSQLServer能以便地建立数据库对象,并且SQLServer结合VisualStudio和C#一起使用,能以便地对数据库对象进行数据操作。2.5可行性分析2.5.1技术可行性药店管理主线是药物,药物从入库到出库以及其他操作即从药店流向消费者过程,中间不用通过其她部门,没有繁琐流程。加上到药店理解,对于药物管理系统管理流程和管理内容都易于掌握。作为计算机专业学生,在平时课程设计基本上,加上自己练习以及同窗们协助,在系统实现上也是可行。计算机可以安装本系统所需开发环境SQLServer和Visualstudio。2.5.2经济可行性本系统重要面向中小型药店,解决数据量不是很大,属于小型系统,只需要购买打印机、电脑即可投入使用,成本低。系统投入使用后可以较好地对药物进行管理,在给药店创造更好效益同步有效避免药物积压甚至失效问题,减少药店损失。3系统概要设计 3.1功能模块设计依照系统需求分析可以将药物管理系统分为如下几种大模块:登录模块基本信息模块、入库管理模块、销售管理模块,以及库存管理模块、利润记录模块和关于咱们模块。整个系统以药物主线,入库管理模块是把药物信息存入库存表,其他药物管理有关模块是从库存表获得数据进行业务解决,系统模块构造图如图3所示。图4系统功能模块构造图3.2概念构造设计3.2.1实体属性图药物实体属性图,如图5所示。药物属性涉及药物基本信息,如药物编号、药物名称、拼音、药物规格、计量单位、库存低限等。其中药物编号可以唯一标记药物。图5药物实体属性图药店实体属性图,如图6所示。药店实体包括药店名称、固定电话、手机、药店地址4个基本属性,作为药店标记并用于打印小票。图6药店实体属性图药物入库单实体属性图,如图7所示。药物与普通商品稍有不同,诸多属性都关系到药物安全,因此入库单包括诸多属性,如入库编号、拼音码、药物名称、药物规格、计量单位、批号、批准文号、入库单价、入库数量、入库总额、入库时间、入库单位、生产厂家、生产日期、失效日期、操作员、备注等17个基本属性。其中入库编号可唯一标记药物入库信息。图7药物入库单实体属性图药物调价单实体属性图,如图8所示。药物调价单包括调价编号、入库编号、拼音码、药物名称、原单价、新单价、经办人、调价时间等基本属性。图8药物调价单实体属性图药物销售单实体属性图,如图9所示。药物销售单包括销售编号、入库编号、拼音码、药物名称、药物规格、计量单位、生产厂家、销售时间、销售单价、销售数量、销售总额、操作员等基本属性。图9药物销售单实体属性图药物退货单实体属性图,如图10所示。药物退货单包括退货编号、入库编号、拼音码、药物名称、进货单位、进货单价、退货因素、退货时间、退货数量、退货总额、操作员等基本属性。图10药物退货单实体属性图药物报损单实体属性图,如图11所示。药物报损单包括报损编号、入库编号、拼音码、药物名称、进货单价、报损因素、报损时间、报损数量、报损总额、操作员等基本属性。图11药物报损单实体属性图顾客实体属性图,如图12所示。顾客实体包括顾客编号、顾客名、密码、顾客姓名、与否管理员5个基本属性。图12顾客实体属性图3.3数据表设计本系统使用SQLServer作为后台数据库,在SQLServer中创立基本表对象。表对象要依照逻辑设计阶段设计关系模式来创立。本系统创立SQL数据库名称为DrugStore。包括如下9张表。Login(顾客信息表)顾客信息表用于顾客信息,该表构造如表1所示。表1顾客信息表字段名数据类型长度备注阐明u_idint4Notnull顾客编号(自动编号)usernamevarchar50主键顾客名pwvarchar50Notnull密码realnamevarchar50Notnull顾客姓名adminvarchar50Notnull与否管理员Store(药店信息表)药店信息表用于存储药店信息,该表构造如表2所示。表2药店信息表字段名数据类型长度备注阐明storenamevarchar50Notnull药店名称telvarchar50Notnull固定电话mobilevarchar50手机addressvarchar50Notnull药店地址Drug(药物信息表)药物信息表用于药物基本信息,该表构造如表3所示。表3药物信息表字段名数据类型长度备注阐明idint4主键药物编号(自动编号)pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物名称specvarchar50Notnull药物规格unitvarchar50Notnull计量单位lowwarningint4Notnull库存低限Ruku(入库信息表)入库信息表用于存储药物进货入库各项信息,该表构造如表4所示。表4入库信息表字段名数据类型长度备注阐明IDvarchar20主键入库编号(自动编号)pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物名称pihaovarchar50Notnull批号pizhunwenhaovarchar50Notnull批准文号specvarchar50Notnull药物规格unitvarchar50Notnull计量单位amountint4Notnull进货数量inpricedecimal(18,2)Notnull进货单价allpricedecimal(18,2)Notnull进货总额in_timedatetimeNotnull进货时间in_fromvarchar50Notnull进货单位factoryvarchar50Notnull生产厂家producedatedatetimeNotnull生产日期usefuldatedatetimeNotnull失效日期in_byvarchar50Notnull操作员remarkvarchar50备注Kucun(库存信息表)库存信息表用于存储药物库存各项信息,该表构造如表5所示。表5库存信息表字段名数据类型长度备注阐明IDvarchar20主键入库编号(自动编号)pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物名称factoryvarchar50Notnull生产厂家specvarchar50Notnull药物规格unitvarchar50Notnull计量单位amountint4Notnull入库数量pihaovarchar50Notnull批号pizhunwenhaovarchar50Notnull批准文号lowwarningint4Notnull库存低限inpricedecimal(18,2)Notnull进货单价sellpricedecimal(18,2)Notnull销售单价in_timedatetimeNotnull入库时间producedatedatetimeNotnull生产日期usefuldatedatetimeNotnull失效日期in_byvarchar50Notnull操作员Sell(销售信息表)销售信息表用于存储售出药物信息,该表构造如表6所示。表6销售信息表字段名数据类型长度备注阐明pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物名称factoryvarchar50Notnull生产厂家sellpricedecimal(18,2)Notnull销售单价sellamountint4Notnull销售数量allpricedecimal(18,2)Notnull销售总额s_idvarchar20Notnull销售编号(自动编号)selltimedatetimeNotnull销售时间sell_byvarchar50Notnull操作员IDvarchar20Notnull入库编号(自动编号)specvarchar50Notnull药物规格unitvarchar50Notnull计量单位ReturnG(退货信息表)退货信息表用于存储退货药物各项信息,该表构造如表7所示。
表7退货信息表字段名数据类型长度备注阐明r_idvarchar20主键退货编号(自动编号)ramountint4Notnull退货数量totalpricedecimal(18,2)Notnull退货总额rtimedatetimeNotnull退货时间return_byvarchar50Notnull操作员reasonvarchar50Notnull退货因素pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物名称IDvarchar20Notnull入库编号(自动编号)inpricedecimal(18,2)Notnull入库单价factoryvarchar50Notnull进货单位Breakage(报损信息表)报损信息表用于存储已报损药物各项信息,该表构造如表8所示。表8报损信息表字段名数据类型长度备注阐明b_idvarchar20主键报损编号bamountint4Notnull报损数量btimedatetimeNotnull报损时间breakage_byvarchar50Notnull操作员reasonvarchar50Notnull报损因素IDvarchar20Notnull入库编号pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物编号inpricedecimal(18,2)Notnull入库单价allpricedecimal(18,2)Notnull报损总额Adjustprice(调价信息表)调价信息表用于存储药物调价记录,该表构造如表9所示。
表9调价信息表字段名数据类型长度备注阐明adjust_idvarchar20主键调价编号IDvarchar20Notnull入库编号pinyinmavarchar50Notnull拼音码drugnamevarchar50Notnull药物名称oldpricedecimal(18,2)Notnull原单价newpricedecimal(18,2)Notnull新单价adjust_timedatetimeNotnull调价时间adjust_byvarchar50Notnull操作员4系统详细设计与实现4.1功能模块详细实现4.1.1登录模块为保证信息安全,设立必要进行辨认顾客才可进入系统主界面。顾客名及密码其中任一种错误都会有相应提示信息,并自动清空顾客名和密码。只有两者所有对的后方可进入管理系统主界面。顾客登录模块流程图如图13所示。图13顾客登录模块流程图
登录界面如图14所示。图14登录界面重要代码如下:publicstaticstringflagUsername=null;publicstaticstringflagPassword=null;publicstaticstringflagAdmin=null;privatevoidbtnLogin_Click(objectsender,EventArgse){stringstrUsn=this.userName.Text;stringstrPsw=this.txtpsw.Text;try{SqlConnectionsc=newSqlConnection(@"server=.\SQLEXPRESS;database=DrugStore;Trusted_Connection=true");stringsqlstring="select*fromLoginwhereusername='"+strUsn+"'";SqlCommandcmd=newSqlCommand(sqlstring,sc);sc.Open();SqlDataReaderdr=cmd.ExecuteReader();if(dr.Read()){if(dr["pw"].ToString()==strPsw){this.DialogResult=DialogResult.OK;flagUsername=strUsn;//获得登录顾客名flagPassword=strPsw;//获得登录密码,用于修改密码时对比flagAdmin=dr["admin"].ToString();//获得顾客类型,与否管理员}else{MessageBox.Show("密码错误!");}dr.Dispose();sc.Close();}else{if(userName.Text==""){MessageBox.Show("请输入顾客名");}else{MessageBox.Show("该顾客名不存在");}dr.Dispose();sc.Close();}}catch(Exceptionex){MessageBox.Show("点击按钮事件异常:\n"+ex.ToString());}this.userName.Text=null;this.txtpsw.Text=null;}4.1.2系统主界面设计系统主界面中,点击左侧不同按钮会在右侧panel容器中显示不同窗体,点击按钮时,会判断与否有权限,并且文字颜色会以红色突出显示,十分美观和谐,系统功能均有很明显入口。单击各功能按钮,会进入相应子窗口。如图15所示。图15系统主界面把窗体显示到panel容器代码(以利润记录按钮为例):privatevoidbtnReport_Click(objectsender,EventArgse)//只有管理员有权限{if(frm_Login.flagAdmin=="管理员"){ if(panel3.Tag!=null&&panel3.TagisForm){((Form)panel3.Tag).Close();}frm_Reportform5=newfrm_Report();form5.TopLevel=false;form5.Parent=panel3;panel3.Tag=form5;form5.Show();}else{MessageBox.Show("没有这个权限!");}}按钮文字颜色会以红色突出显示代码(以利润记录按钮为例):privatevoidbtnReport_Enter(objectsender,EventArgse){this.label6.Visible=true;btnReport.ForeColor=Color.Red;}privatevoidbtnReport_Leave(objectsender,EventArgse){this.label6.Visible=false;btnReport.ForeColor=Color.Blue;}4.1.3顾客管理模块顾客管理仅限管理员使用。顾客管理模块中,在添加顾客时,需填写顾客名和姓名以及选取顾客类型,顾客编号自动生成,初始密码自动设为123456,如果添加顾客名已存在,则提示顾客名已存在,不能添加,否则添加成功。此外,选定某一顾客后,右键菜单有删除顾客、重置密码、设为管理员、设为收银员四个选项,每个操作都设有相应提示,以防误操作。顾客管理模块流程图如图16所示。图16顾客管理模块流程图顾客管理界面如图17所示。图17顾客管理界面重要代码如下:privatevoidbtnAdd_Click(objectsender,EventArgse){stringstr2=txtUsername.Text;stringstr3=txtRealname.Text;stringstr4=radioButtonAdmin.Text;stringstr5=radioButtonCashier.Text;SqlConnectionconn=GetConnection();stringstrSelect="selectcount(*)fromLoginwhereusername=@username";SqlCommandcommSelect=newSqlCommand(strSelect,conn);commSelect.Parameters.Add("@username",SqlDbType.VarChar).Value=str2;conn.Open();if(Convert.ToInt32(commSelect.ExecuteScalar())==0){stringsqlstring=@"insertintoLogin(username,pw,realname,admin)values(@username,@pw,@realname,@admin)";SqlCommandcomn=newSqlCommand(sqlstring,conn);comn.Parameters.Add("@username",SqlDbType.VarChar).Value=str2;comn.Parameters.Add("@pw",SqlDbType.VarChar).Value=123456;comn.Parameters.Add("@realname",SqlDbType.VarChar).Value=str3;if(radioButtonAdmin.Checked==true){comn.Parameters.Add("@admin",SqlDbType.VarChar).Value=str4;}if(radioButtonCashier.Checked==true){comn.Parameters.Add("@admin",SqlDbType.VarChar).Value=str5;}comn.ExecuteNonQuery();Binddgv();}else{MessageBox.Show("该顾客名已存在!");}Clear();conn.Close();}4.1.4修改密码模块修改密码时为了安全起见,需要输入登录密码。此外,新密码需要输入两次,两次输入相似则修改成功,以免顾客输入出错而丢失密码。如图18所示。图18修改密码界面重要代码如下:privatevoidbtnSave_Click(objectsender,EventArgse){stringstrNew=txtConfirm.Text;SqlConnectionconn=GetConnection();try{if(txtOldpsw.Text==""||txtOldpsw.Text!=frm_Login.flagPassword){MessageBox.Show("原密码错误!");}else{if(txtNewpsw.Text==""||txtConfirm.Text==""){MessageBox.Show("密码不能为空!");}else{if(txtNewpsw.Text!=txtConfirm.Text){MessageBox.Show("两次密码不一致!");txtNewpsw.Text=null;txtConfirm.Text=null;}else{SqlCommandcmd=newSqlCommand(@"updateLoginsetpw=@pwwhereusername=@username",conn);conn.Open();cmd.Parameters.Add("@username",SqlDbType.VarChar).Value=frm_Login.flagUsername;cmd.Parameters.Add("@pw",SqlDbType.VarChar).Value=strNew;cmd.ExecuteNonQuery();MessageBox.Show("修改成功!");conn.Close();txtOldpsw.Text=null;txtNewpsw.Text=null;txtConfirm.Text=null;}}}}catch(Exceptionex){MessageBox.Show("点击按钮事件异常:\n"+ex.ToString());}}4.1.5药物信息管理模块药物信息管理模块可进行药物信息增、删、改,存储药物基本信息,添加药物时编号以及拼音码自动生成。输入药物名称后,系统会自动获得由首字母构成拼音码。计量单位选取框在窗体加载时会查询药物信息表里所有计量单位以供选取,顾客也可自行录入。查询选取药物后,如果要删除已经入库商品,为了保证数据完善性,系统提示制止删除,但可以修改库存低限。药物信息管理模块流程图如图19所示。图19药物信息管理模块流程图药物管理界面如图20所示。图20药物信息管理界面窗体加载时会查询显示药物信息表里所有计量单位代码如下:SqlConnectionconn=GetConnection();conn.Open();//依照数据库里数据绑定到计量单位选取框********************this.cboUnit.DataSource=null;this.cboUnit.Items.Clear();stringsqlstring=@"selectunitfromDruggroupbyunit";SqlDataAdaptersda=newSqlDataAdapter(sqlstring,conn);DataSetds=newDataSet();sda.Fill(ds);cboUnit.DataSource=ds.Tables[0];cboUnit.DisplayMember="unit";cboUnit.ValueMember="unit";ds.Dispose();//**********************************************************系统自动获得拼音码代码如下://usingMicrosoft.International.Converters.PinYinConverter;//引用微软有关类库后会有GetFirstPinyin(stringstr)办法publicstaticstringGetFirstPinyin(stringstr){stringr=string.Empty;foreach(charobjinstr){try{ChineseCharchineseChar=newChineseChar(obj);stringt=chineseChar.Pinyins[0].ToString();r+=t.Substring(0,1);}catch{r+=obj.ToString();}}returnr;}privatevoidtxtName_Leave(objectsender,EventArgse){//txtPYM.Text=Components.HZPY.Convert(txtName.Text);txtPYM.Text=GetFirstPinyin(txtName.Text).ToUpper();}4.1.6入库登记模块入库登记是系统重要构成某些。进入入库登记窗口后,需填写必要信息。入库编号、入库时间和操作员由系统提取生成。进货单位下拉框自动查询显示之迈进货单位记录。填写药物拼音码后,则把药物信息表里存在相应药物信息显示到辅助录入区,同步把也许生产厂家绑定到生产厂家下拉框。填写有关信息后,入库总额由系统自动计算。保存时运用事务解决把有关信息保存到入库信息表以及库存表中,保存后如果发现信息有误,在已入库药物尚未发生业务前可以删除相应记录并重新录入。入库登记模块流程图如图21所示。图21入库登记模块流程图入库登记界面如图22所示。图22入库登记界面自动编号存储过程proc_AutoID如下:USE[DrugStore]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERproc[dbo].[proc_AutoID](@newIDvarchar(20)output)asdeclare@idvarchar(20)set@id=(selectMAX(ID)fromRuku)if(@idisnullORsubstring(@id,5,8)!=substring(convert(varchar,getdate(),112),1,8))set@id=(select'RKBH'+(substring(convert(varchar,getdate(),112),1,8)+'0000'))set@newID=(select'RKBH'+(substring(convert(varchar,getdate(),112),1,8)+(selectSTUFF(CONVERT(int,10000+(substring(@id,13,4)+1)),1,1,''))))调用存储过程proc_AutoID代码如下:privatevoidAutoID(){SqlConnectionconn=GetConnection();//实例化数据库连接类对象conn.Open();//打开数据库连接Binddgv();SqlCommandsqlcmd=newSqlCommand("proc_AutoID",conn);//实例化SqlCommand对象sqlcmd.CommandType=CommandType.StoredProcedure;//指定执行存储过程//为存储过程添加参数SqlParameteroutValue=sqlcmd.Parameters.Add("@newID",SqlDbType.VarChar,20);outValue.Direction=ParameterDirection.Output;//定义存储过程输出参数sqlcmd.ExecuteNonQuery();//执行存储过程conn.Close();//关闭数据库连接txtInid.Text=outValue.Value.ToString();}点击保存按钮代码如下:stringstrSql=null;List<string>strSqls=newList<string>();//插入到入库表strSql="……";//省略某些代码strSqls.Add(strSql);//将执行SQL语句添加到List泛型集合中//插入到库存表strSql="……";//省略某些代码strSqls.Add(strSql);//将执行SQL语句添加到List泛型集合中//如何输入拼音码在药物信息表找不到记录,则插入到药物信息表stringsqlstring1=@"selectcount(*)fromDrugwherepinyinma='"+txtPYM.Text+"'";SqlCommandcomn=newSqlCommand(sqlstring1,conn);if(Convert.ToInt32(comn.ExecuteScalar())==0)//所输入拼音码在药物信息表找不到记录{strSql="insertintoDrug(pinyinma,drugname,spec,unit,lowwarning)values('"+txtPYM.Text+"','"+txtDName.Text+"','"+txtSpec.Text+"','"+txtUnit.Text+"',"+Convert.ToInt32(txtLowwaning.Text)+")";strSqls.Add(strSql);}try{if(Tran.ExecDataBySqls(strSqls))//调用事务{MessageBox.Show("添加成功!","软件提示");}else{MessageBox.Show("添加失败!","软件提示");}}catch(Exceptionex){MessageBox.Show(ex.Message,"软件提示");}4.1.7销售登记模块销售登记是系统重要构成某些。考虑到销售药物应简朴快捷,在药物销售登记窗体,只需填写药物拼音码、销售数量以及实收金额,其他信息则只需从辅助录入区选取或由系统自动生成。同步设立各种提示,如:销售数量不不大于库存数时提示。同一笔销售销售单号相似,在结算前都可以选中相应药物点击鼠标右键菜单移除,结算时运用事务解决把有关信息保存到销售信息表以及更新库存信息,并运用报表打印小票。销售登记模块流程图如图23所示。图23药物销售登记模块流程图销售登记界面如图24所示,打印小票设计如图25所示。图24销售登记界面图25小票设计点击结算按钮后打印小票代码如下://传值到报表打印小票stringsqlstr1=@"selectdrugnameas药物名称,sellamountas数量,sellpriceas单价,allpriceas金额fromSellwheres_id='"+txtSellid.Text.ToString()+"'";SqlDataAdaptersda1=newSqlDataAdapter(sqlstr1,conn);DataTabledt1=newDataTable();sda1.Fill(dt1);table=dt1;//获得单笔销售药物信息sellid=txtSellid.Text.ToString();printdate=DateTime.Now.ToString("yyyy-MM-dd");//获得当前日期格式:-09-04printtime=DateTime.Now.ToShortTimeString().ToString();//获得当前时间格式:20:16sellby=txtSellby.Text.ToString();moneyYF=txtYF.Text.ToString();//获得应付金额moneySS=txtSS.Text.ToString();//获得实收金额moneyZL=txtZL.Text.ToString();//获得找零金额frm_Printf=newfrm_Print();//小票打印窗体f.Owner=this;f.ShowDialog();f.Dispose();conn.Close();dt.Clear();//清空datatableds.Clear();//清空datasetthis.dgvDetail.DataSource=ds.Tables[0];//清空销售明细datagridviewtxtYF.Text="";txtSS.Text="";txtZL.Text="";AutoID();//自动生成下一笔销售单号4.1.8药物退货模块进入药物退货窗口后,退货时间、编号和操作员自动生成,填写药物拼音码后,则把库存表里相应药物信息显示出来,选取需要退货药物并填写退货数量以及退货因素后点击确认退货即可成功录入到退货信息表,同步更新药物库存数量。药物退货模块流程图如图26所示。图26药物退货模块流程图药物退货界面如图27所示。图27药物退货界面4.1.9药物报损模块药物报损流程和药物退货流程相似,进入药物报损窗口后,报损时间、编号和操作员自动生成,填写药物拼音码后,则把库存表里相应药物信息显示出来,选取需要报损药物并填写报损数量以及报损因素后点击确认报损即可成功录入到报损信息表,同步更新药物库存数量。药物报损模块流程图如图28所示。图28药物报损模块流程图药物报损界面如图29所示图29药物报损界面4.1.10药物调价模块药物调价在药物管理系统里是很有必要。进入药物调价窗口后,调价时间、编号和操作员自动生成,填写药物拼音码后,则把库存表里相应药物信息显示出来,选取需要调价药物并填写新价格后点击更新价格即可即调价成功并把调价记录保存到调价信息表,同步更新药物库存中销售单价。药物调价模块流程图如图30所示。图30药物调价模块流程图药物调价界面如图31所示。图31药物调价界面4.1.11报表中心界面报表中心界面可以显示入库明细、调价记录、销售明细、药物库存以及利润记录等12个表,在显示入库明细表时可以选定相应记录点击鼠标右键菜单进行删除(如果该药物已经发生其他业务则提示不能删除)。界面上方按钮相应主界面各个按钮,每个按钮实现功能都分为管理员和收银员两种权限。同步提供各种查询方式,例如按拼音码、按药物名称、按编号、准时间查询。更多入口更以便更安全。点击生成报表按钮会获得当前显示表信息传到报表预览窗口,只有管理员才干预览报表,在报表预览窗口可以实现数据导出到Word、Excel、PDF,也可以连接打印机直接打印。报表中心界面如图32所示,.RDLC报表设计有关DataTable如图33所示。图32报表中心界面图33.RDLC报表设计有关DataTable实现多条件查询核心代码如下:privatevoidSearch(stringstrSQL,stringstrIdColumn,stringstrPYMColumn,stringstrNameColumn,stringstrTimeColumn,stringstrOther){stringstr1=txtKeywords.Text;stringstr2=dateBegin.Value.ToString("yyyy-MM-dd");stringstr3=dateEnd.Value.ToString("yyyy-MM-dd");if(checkBoxKey.Checked==true&&checkBoxTime.Checked==true){if(cboKeywords.Text=="编号"){stringsqlstr=@""+strSQL+"where"+strIdColumn+"='"+str1+"'and"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="拼音码"){stringsqlstr=@""+strSQL+"where"+strPYMColumn+"='"+str1+"'and"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="药物名称"){stringsqlstr=@""+strSQL+"where"+strNameColumn+"='"+str1+"'and"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}}elseif(checkBoxKey.Checked==true&&checkBoxTime.Checked==false){if(cboKeywords.Text=="编号"){stringsqlstr=@""+strSQL+"where"+strIdColumn+"='"+str1+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="拼音码"){stringsqlstr=@""+strSQL+"where"+strPYMColumn+"='"+str1+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="药物名称"){stringsqlstr=@""+strSQL+"where"+strNameColumn+"='"+str1+"'"+strOther+"";Binddgv(sqlstr);}}elseif(checkBoxKey.Checked==false&&checkBoxTime.Checked==true){stringsqlstr=@""+strSQL+"where"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}}实现报表预览核心代码如下:privatevoidbtnCreate_Click(objectsender,EventArgse){if(frm_Login.flagAdmin=="管理员"){table=dgvShow.DataSourceasDataTable;frm_Reportsrf=newfrm_Reports();rf.Owner=this;rf.ShowDialog();rf.Dispose();}else{MessageBox.Show("没有这个权限!");}}//strPath为相应报表privatevoidBindReportViewer(stringstrPath,stringstrDataSet){frm_AllReportfm=(frm_AllReport)this.Owner;//this.reportViewer1.LocalReport.ReportPath=@"H:\DrugStore\DrugStore\DrugStore\"+strPath+"";//用绝对途径//取相对途径stringpath=System.Windows.Forms.Application.StartupPath+@"../../../";System.IO.Directory.SetCurrentDirectory(path);stringstrFilePath=System.IO.Directory.GetCurrentDirectory()+@"\"+strPath+"";//用相对途径this.reportViewer1.LocalReport.ReportPath=strFilePath;this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);this.reportViewer1.LocalReport.DataSources.Clear();this.reportViewer1.LocalReport.DataSources.Add(newReportDataSource(""+strDataSet+"",fm.table));this.reportViewer1.RefreshReport();}privatevoidfrm_Reports_Load(objectsender,EventArgse){switch(frm_AllReport.tag1){case1:{BindReportViewer("ReportIn.rdlc","DataSet1");break;}case2:{BindReportViewer("ReportAdjust.rdlc","DataSet2");break;}case3:{BindReportViewer("ReportSell.rdlc","DataSet3");break;}case4:{BindReportViewer("ReportReturnG.rdlc","DataSet4");break;}case5:{BindReportViewer("ReportKucun.rdlc","DataSet5");break;}case6:{BindReportViewer("ReportKcDetail.rdlc","DataSet6");break;}case7:{BindReportViewer("ReportBreakage.rdlc","DataSet7");break;}case8:{BindReportViewer("ReportXiaoqi.rdlc","DataSet8");break;}case9:{BindReportViewer("ReportWarning.rdlc","DataSet9");break;}case10:{BindReportViewer("ReportEarn.rdlc","DataSet10");break;}case11:{BindReportViewer("ReportExpense.rdlc","DataSet11");break;}case12:{BindReportViewer("ReportProfit.rdlc","DataSet12");break;}}}4.1.12系统某些公有类或办法设计与实现连接数据库publicSqlConnectionGetConnection(){returnnewSqlConnection(@"server=.\SQLEXPRESS;database=DrugStore;Trusted_Connection=true");}事务解决publicboolExecDataBySqls(List<string>strSqls)//事务解决{SqlConnectionconn=GetConnection();SqlCommandcomn=newSqlCommand();boolbooIsSucceed;if(conn.State==ConnectionState.Closed){conn.Open();}SqlTransactionsqlTran=conn.BeginTransaction();try{comn.Connection=conn;comn.Transaction=sqlTran;foreach(stringiteminstrSqls){comn.CommandType=CommandType.Text;comn.CommandText=item;comn.ExecuteNonQuery();}sqlTran.Commit();booIsSucceed=true;}catch{sqlTran.Rollback();booIsSucceed=false;}finally{conn.Close();strSqls.Clear();}returnbooIsSucceed;}//事务解决5系统测试5.1测试目的登录功能:当顾客输入顾客名和密码为空或不相符时与否有有关提示,输入对的时能成功登录系统,且登录成功后能对的判断其顾客权限。添加药物记录功能:对的输入药物各项信息后能成功向数据库添加新记录,输入信息为空时有出错提示。修改药物信息功能:修改药物信息时能对的判断该记录业务状况并成功修改相应内容。删除药物记录功能:删除药物记录时能对的判断该记录业务状况来判断该记录能否被修改,对于不能被删除记录有相应提示,对于能删除记录能成功删除。药物入库登记功能:对的填写药物入库登记所需各项信息后,能成功地向数据库写入相应入库记录。药物调价功能:选取药物并对的填写药物新价格后,能成功地修改药物售价。药物退货功能:选取药物并对的填写药物退货各项信息后,能成功地退货并更新该药物库存数量。药物报损功能:选取药物并对的填写药物报损各项信息后,能成功地报损该药物并更新该药物库存数量。药物销售功能:选取药物并对的填写药物销售各项信息后,能成功地售出药物并更新该药物库存数量。生成销售小票功能:售出药物结算时能对的地生成销售小票。查询销售明细记录功能:查询销售明细记录时能否进行单条件查询和多条件查询并查询出对的记录生成利润记录报表功能:能对的计算收入和支出并得出利润,生成报表5.2测试大纲登录功能Case1:输入对的顾客名和密码Case2:输入错误顾客名或密码Case3:不输入顾客名或密码添加药物记录功能Case1:所有信息填写对的Case2:信息填写不完整修改药物信息功能Case1:修改已发生业务药物信息Case2:修改未发生业务记录删除药物记录功能Case1:删除已发生业务记录Case2:删除未发生业务记录药物入库登记功能药物调价功能药物退货功能药物报损功能药物销售功能生成销售小票功能查询销售明细记录功能Case1:只按编号或拼音码或药物名称查询Case2:只准时间查询Case3:多条件查询生成利润记录报表功能5.3测试成果及截图登录功能Case1:输入对的顾客名和密码成果:成功登录,进入系统主界面,与预期效果相符。Case2:输入错误顾客名或密码成果:提示顾客名不存在或提示密码错误,与预期效果相符。图34顾客名或密码输入错误时系统提示截图Case3:不输入顾客名或密码成果:提示请输入顾客名或提示密码错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆人文科技学院《移动终端软件开发》2022-2023学年期末试卷
- 重庆人文科技学院《图形创意》2022-2023学年第一学期期末试卷
- 重庆人文科技学院《风景园林设计原理》2021-2022学年第一学期期末试卷
- 重庆人文科技学院《传统文化艺术合》2021-2022学年第一学期期末试卷
- 重庆三峡学院《公共空间专题设计》2022-2023学年第一学期期末试卷
- 重庆三峡学院《电气测试技术综合设计》2023-2024学年期末试卷
- 重庆人文科技学院《教师礼仪与形体训练》2022-2023学年第一学期期末试卷
- 策略产品运营插画课程设计
- 重庆财经学院《城镇地籍调查》2023-2024学年第一学期期末试卷
- 仲恺农业工程学院《庄子与中国艺术精神》2022-2023学年第一学期期末试卷
- 如何面对挫折-心理健康教育课件
- 常见临床研究分级
- 机械设备定期检查维修保养使用台账
- 丽声北极星分级绘本第四级上 Stop!Everyone Stop!教学设计
- 希尔顿酒店市场营销环境的swot分析 2
- 消化道穿孔课件
- 可编辑修改中国地图模板
- 最新电大市场调查与商情预测作业1-4参考答案小抄汇总
- CJJ-T 34-2022 城镇供热管网设计标准
- 人教版小学数学一年级上册20以内加减法口算题汇编
- 为先祖立碑祭文五篇
评论
0/150
提交评论