资源描述
目录1.背景21.1 应用背景21.2 国内外研究现状31.3 课题背景32.技术可行性分析与社会可行性分析42.1 技术可行性分析42.2 社会可行性分析42.3 可行性研究结论43.系统分析43.1 组织结构43.2 管理功能分析53.3 业务流程分析73.4 数据流流程分析73.5 数据字典84.系统设计94.1 登陆界面94.2 主界面114.3 入库单界面134.4 客户订书单处理164.5 购书处理214.6 记账处理234.7 客户信息265.设计感想28参考资料281.背景1.1 应用背景在当今的Internet时代,电子商务发展日新月异,它已成为商业系统不可缺少的一部分。电子商务是在Internet的广阔联系与传统信息技术系统的丰富资源相互结合的背景下,所产生的一种相互关联的动态商务活动,是一种通过电子方式进行的商务活动,不是传统意义上的通过面对面的交换或面对面的交谈方式进行的交易方式,而是一种系统的、完整的电子化运作。如今,Internet已经成为电子商务应用的一个核心平台,它的进步将会推进电子商务的全面发展。如今电子商务已经成长为日常生活中的应用,大大改变了人们进行商业活动的方式、时间、地点。为商家提供了更为广阔的商业市场,为消费者提供了更多可选择的商品和更便捷的购物方式。1.2 国内外研究现状电子商务这个概念起源于20世纪70年代。现在大家公认的“电子商务”的概念是由著名的IBM公司于 1998年率先提出并迅速得到广泛认同。随着时代的发展,计算机及网络产品、互联网技术(Web技术)、完全支付等电子商务的支撑技术在电子商务应用的大潮中产生质的飞跃,电子商务的概念正在得到不断的补充和完善。电子商务提出了一种全新的商业机会、需求、规划和挑战,正是新世纪全球经济与社会发展的朝阳领域。作为亚洲最大的贸易大国之一,我国内地的电子商务模式是从1994年开始出现的,并且发展相当迅速。据中国互联网信息中心(CNNIC)公布的数据表明,网上商店已经发展到近10万余家。另外,证券公司、金融结算机构、民航定票、信用卡发放等机构和领域也成功迈入电子商务,并已经可以进行大量可靠的交易了。虽然从总体而言,我国的电子商务仍处在初级阶段,企业和企业之间的网络交易、企业和消费者之间、消费者和消费者之间的网上的购物尚处于起步发展阶段,但我们有理由相信,随着Internet的迅速发展,电子商务将成为现在和未来国内互联网建设的一大热点。1.3 课题背景该书店为中等规模的书店。读者覆盖面占全市20%。书书店设有管理部门、财务部门、销售部、库存管理部门。管理部门有监察审计部,客户顾客基本信息管理,书店内部人力资源管理,综合管理部门。销售部门主要负责销售计划管理和销售统计管理。财务部门主要负责成本核算,利润核算,账目管理。库存管理部门主要包括入库管理,出库管理,库存统计,图书基本信息管理。具体分解为: 1)最方便地供读者阅读和购买图书,减少30%的读者购书时间; 2)近三年每年增加30%的新图书品种; 3)书店能够快速掌握国内最新出版的各类图书; 4)能够快速统计和掌握本市读者的购书要求,及时掌握畅销书、滞销书的信息;5)每年建立一个分店,五年内实现全市图书连锁销售。2.技术可行性分析与社会可行性分析2.1 技术可行性分析 (1) 信息系统开发方法:在开发小组中有熟练掌握面向对象方法开发软件系统的资深的系统分析员和程序员。在信息系统开发方法上不存在任何问题。 (2) 数据库技术:开发小组有丰富的应用数据库开发经验。 综上,本系统开发技术是完全可行的。 2.2 社会可行性分析 目前已有很多成功开发书店信息系统的先例,社会需要书店管理的现代化和信息化。书店信息系统开发和运行与国家的政策法规不存在任何冲突和抵触之处。另外,书店信息系统所采用的操作和工作方式符合工作人员和读者的日常习惯,而且操作方便灵活,便于学习,具有可行性。2.3 可行性研究结论 通过技术和社会等方面的可行性分析,可以确定本系统的开发完全必要,而且是可行的,可以立项开发。3.系统分析3.1 组织结构该书店的组织结构如下图所示:图3-1 组织结构图3.2 管理功能分析 管理功能图如下:图3-2管理功能图3.3 业务流程分析 图3-3 业务流程图3.4 数据流流程分析 根据对整个业务流程的调查分析以及计算机管理的需要(即购书开发票工作),设计出有关图书数量方面的数据在书店和仓库之间的流动过程。数据流程分析如下图所示:图3-4 数据流程图3.5 数据字典 数据字典是对描述数据流程图中的数据项、数据流、数据存储、加工处理逻辑等组成部分的严格定义,下面是本系统的数据字典 表1 数据库信息书名描述M_Book_Store(入库单)书店采购一批属图书的明细项目M_Book_Bill(书店发票)顾客购买时书店开出的证明M_Book_BKBill)(客户订书单)客户订购图书的明细M_Book_Purchase(采购单)采购部门人员需要采购的数目及数量M_Book_CurAcc(入库流水账)每次图书入库的相关记录M_Book_All(库存帐)仓库中现有图书的明细M_Administrator(管理人员)管理人员操作口令明细M_user(客户)客户操作口令明细以书店入库单来进行说明,此表记录了每一本书的单价及数量。 表2 入库单的数据字典字段名数据类型字段大小小数点是否允许空值ISBN文本120No书名文本120No作者文本120No出版社数字120No出版日期备注120No数量数字122No定价货币120No4.系统设计下面是该系统的部分界面以及主要代码的介绍:4.1 登陆界面登陆界面有两个frame容器,当用户忘掉密码时可以修改密码,密码是用代码和表连接起来的,当修改密码时第一个表会隐藏。客户和管理人员输入自己的账号和密码对应于相应的权限。选择自己的身份,然后输入信息,如果密码忘记了,可以点击修改密码,出现另一个frame修改密码,如果两次修改密码时输入不一致时会弹出消息。 图4-1 登陆界面图示登陆界面主要实现代码如下:Private Sub CheckPwd()Dim strSql As StringDim strPwd As StringSelect Case M_UserType Case 1 strSql = select * from M_Administrator where M_Usr_Name = & Replace(Trim(UsrName.Text), , ) & Case 2 strSql = select * from M_user where M_custom_name = & Replace(Trim(UsrName.Text), , ) & End SelectErr.ClearSet rec = M_Conn.Execute(strSql)If rec.EOF Or Err.Number 0 Then MsgBox 该用户名不存在!, 0 + 16, 图书销售管理系统 Exit Sub End IfstrPwd = rec(M_Usr_Pwd).ValueIf strPwd Pwd.Text Then MsgBox 密码不正确!, 0 + 16, 图书销售管理系统 Pwd.Text = Pwd.SetFocus Exit Sub End IfM_UserName = UsrName.TextUnload MefrmMain.ShowEnd Sub图4-2 修改密码界面图示密码错误时修改密码主要实现代码如下:Private Sub ModfiyPwd()Dim strSql1 As StringDim strSql2 As StringDim strMark As String strSql1 = select * from M_Administrator where M_Usr_Name = & Replace(Trim(UsrName1.Text), , ) & Err.ClearSet rec = M_Conn.Execute(strSql1)If rec.EOF Or Err.Number 0 Then MsgBox 该用户名不存在!, 0 + 16, 图书销售管理系统 Exit Sub End IfstrMark = rec(M_Usr_Remark).ValueIf strMark key.Text Then MsgBox 密钥错误!请输入自己的管理密钥!, 0 + 16, 图书销售管理系统 Exit Sub End If key.SetFocus strSql2 = UpDate M_Administrator set M_Usr_Pwd = & Replace(Trim(password.Text), , ) & & where M_Usr_Name = & Replace(Trim(UsrName1.Text), , ) & Err.Clear M_Conn.Execute (strSql2) If Err.Number = 0 Then MsgBox 密码修改成功!请返回重新登录!, 0 + 64, 图书销售管理系统 Else MsgBox 数据库操作错误,请重试!, 0 + 16, 图书销售管理系统 Exit Sub End IfEnd Sub4.2 主界面主界面用了一个toobar部件,里面添加了17个按钮,并用imagelist部件给里面加入了几张小图片,看起来比较美观。点击相应的按钮会进入对应的模块里。而且在主界面的底端用了一个statusbar的控件,可以显示欢迎语和当前操作人员的一些简单信息,登录时间。 图4-3 主界面图示其主要实现代码如下:Private Sub Form_Load()If M_UserType = 2 Then Dim i As IntegerFor i = 1 To 12 Step 2 Toolbar1.Buttons.Item(i).Visible = False NextEnd IfEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index Case 1 frm_rkcl.ShowCase 3 frm_dsd.ShowCase 5 frm_gscl.ShowCase 7 frm_jzcl.ShowCase 9 frm_cxcl.ShowCase 11 frm_tjcl.ShowCase 13 frm_tsgl.ShowCase 15 frm_khxx.ShowCase 17 Dim c c = MsgBox(您确认退出系统?, 33, 提示信息) If c = vbOK Then Unload Me End IfEnd SelectEnd Sub4.3 入库单界面在里面可以加入新书,如果新书信息输入不完整系统会提示你输入完整的信息。输入完整的信息后,点击确认添加,系统会提示成功记入入库流水账。添加完一本以后想要再添加,点击重新填写,以前的会清空。新书入库完以后点击刷新,库存里的数据会自动刷新,如果没有自动刷新点击刷新,表里面的数据会自动刷新。而且库存里的数据可以进行删除。输入查询条件选择查询类别点击查询就可以快速找出所要查询的书,如果查询信息输入不完整系统会弹出信息提示框,提示你输入完整的信息。表的连接是用代码实现的。 图4-4 入库处理界面图示其主要实现代码如下:Private Sub insertdata()Dim strIn, strAll As StringstrIn=insert into M_Book_Store(M_Book_ID,M_Book_CheckMan,M_Book_ISBN,M_Book_Name,M_Book_Author,M_Book_Press,M_Book_Prise,M_Book_Num,M_Book_Date,M_Book_PrsDate) values( + Text1.Text + , & _ Text3.Text + , + Text4.Text + , + Text5.Text + , + Text6.Text + , + Text9.Text + , + Text7.Text + , + Text8.Text + , + CStr(DTPicker1.Value) + , + CStr(DTPicker2.Value) + ) strAll = insert into M_Book_All(M_Book_ISBN,M_Book_Date,M_Book_Total_In) values( + Text4.Text + , + CStr(DTPicker1.Value) + , + Text8.Text + )On Err GoTo ERR_CONN M_Conn.Execute (strIn) M_Conn.Execute (strAll) MsgBox 入库信息更新完毕!, 33, 入库处理系统 Exit SubERR_CONN: MsgBox Err.Description, vbInformation, 入库处理系统 Exit SubEnd SubPrivate Sub AddCurrentAccount() Dim strSql As String strSql = insert into M_Book_CurAcc(M_Book_ID,M_Book_ISBN,M_Book_Prise,M_Book_Num) values( + Text1.Text + , + Text4.Text + , + Text7.Text + , + Text8.Text + ) Err.Clear Set rec = M_Conn.Execute(strSql) If Err.Number = 0 Then MsgBox 成功加入流水账!, vbOKOnly, 入库信息提示 Else MsgBox 数据插入错误,请重试!, vbInformation, 入库信息提示 Exit Sub End IfEnd SubPrivate Sub Command3_Click()If Text2.Text = Then MsgBox 请输入查询条件!, 33, 入库处理系统 ElseIf Combo2.ListIndex = -1 Then MsgBox 请选择查询类别!, 33, 入库处理系统 Else Dim strselect1 As String Select Case Combo2.ListIndex Case 0 strselect1 = select * from M_Book_Store where M_Book_ISBN = Case 1 strselect1 = select * from M_Book_Store where M_Book_Author = Case 2 strselect1 = select * from M_Book_Store where M_Book_Press = Case 3 strselect1 = select * from M_Book_Store where M_Book_Name = End Select strselect1 = strselect1 & Replace(Trim(Text2.Text), , ) & Adodc1.CommandType = adCmdText Adodc1.RecordSource = strselect1 Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 If Adodc1.Recordset.RecordCount = 0 Then MsgBox 数据库中暂无记录! End If End IfEnd SubPrivate Sub Form_Load()Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & M_database.mdb;Persist Security Info=FalseDim strselect As Stringstrselect = select * from M_Book_Store order by M_Book_ID ascAdodc1.CommandType = adCmdTextAdodc1.RecordSource = strselectAdodc1.RefreshSet DataGrid1.DataSource = Adodc1 If Adodc1.Recordset.RecordCount = 0 Then MsgBox 数据库中暂无记录! End If End Sub4.4 客户订书单处理这个窗体里面也是用代码将窗体与订书单连接起来,在这里可以看见订书单的客户,根据客户的订书单来开发票或者是生成采购单,这里发票和采购单用了两个frame窗体,当一个出现的时候另一个会隐藏。点击开发票会出现让你输入折扣率。如果输入的折扣率类型不匹配系统会提示。如果采购单或是发票已存在系统会提示你已经存在。 图4-5 订书单处理数量足够开发票界面图示 图4-6 订书单处理数量不足生成采购单界面图示其主要实现代码如下:Private Sub Command1_Click()Dim i As IntegerIf List1.ListIndex = -1 Then MsgBox 请选择订单客户, vbInformation, 信息提示 End IfDim str, str1 As StringDim name As StringDim isbn As Stringname = List1.List(List1.ListIndex) str = select M_Book_ISBN,M_Book_Num from M_Book_BKBill where M_Book_CuName= str = str & Trim(name) & Set rec = M_Conn.Execute(str) If rec.BOF ThenExit Sub Else isbn = rec(M_Book_ISBN).Value End If str1 = select M_Book_ISBN,M_Book_Num from M_Book_All where M_Book_ISBN = & isbn & Set rec1 = M_Conn.Execute(str1) If rec1.BOF Then isnot.Caption = 无 Command3.Visible = True Frame3.Visible = True enough.Visible = False Command2.Visible = False ElseIf rec(M_Book_Num).Value 0 Then Adodc2.Recordset.MoveFirst For i = 1 To Adodc2.Recordset.RecordCount List1.AddItem Adodc2.Recordset.Fields(M_Book_CuName) Adodc2.Recordset.MoveNext Next i End If Command1.Visible = FalseEnd SubPrivate Sub List1_Click()Call Command1_ClickEnd Sub4.5 购书处理在这个过程中,用代码连接发票单和窗体,然后选择要打印的发票,点击查看发票信息,然后显示发票,就会出现打印预览。 图4-7 购书处理界面图示 其主要实现代码如下:Private Sub Form_Load()Adodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & M_database.mdb;Persist Security Info=FalseDim strselect As Stringstrselect = select * from M_Book_Bill order by M_Book_ID ascAdodc1.CommandType = adCmdTextAdodc1.RecordSource = strselectAdodc1.RefreshSet DataGrid1.DataSource = Adodc1 If Adodc1.Recordset.RecordCount = 0 Then MsgBox 数据库中暂无记录! End If Do While Adodc1.Recordset.EOF = FalseCombo1.AddItem Adodc1.Recordset.Fields(M_Book_ID) Adodc1.Recordset.MoveNext LoopEnd Sub 图4-8 打印发票界面图示其主要实现代码如下:Private Sub Command1_Click() Command2.Visible = True Command3.Visible = True If Adodc1.Recordset.RecordCount 0 Then Adodc1.Recordset.MoveFirst Print Font.Size = 14 Font.name = 华文行楷 CurrentY = 200 Print Tab(38); Year(Date) & 年 & Month(Date) & 月 & 图书订购发票单 CurrentY = 500 Font.Size = 9 Font.name = 宋体 Print Tab(15); 编号:; Adodc1.Recordset.Fields(M_Book_ID); Tab(45); 收银员:; Adodc1.Recordset.Fields(M_Book_ChargeMan); Tab(75); 日期: & Adodc1.Recordset.Fields(M_Book_Date) Print Tab(14); String(75, -) Print Tab(15); ISBN; Tab(35); 书名; Tab(60); 单价; Tab(80); 数量 Print Tab(14); String(75, _) Print Tab(14); String(75, ) Print Tab(15); Adodc1.Recordset.Fields(M_Book_ISBN); Tab(30); Adodc1.Recordset.Fields(M_Book_Name); Tab(60); Adodc1.Recordset.Fields(M_Book_Prise); Tab(80); Adodc1.Recordset.Fields(M_Book_Num) Print Tab(14); String(75, _) Print Tab(14); String(75, ) Print Tab(15); “合计金额:; Adodc1.Recordset.Fields(M_Book_TMoney); Tab(40); 折扣金额:; Adodc1.Recordset.Fields(M_Book_HMoney); Tab(70); 实收金额:; Adodc1.Recordset.Fields(M_Book_FMoney)Else MsgBox wrong, vbInformation, i End IfEnd SubPrivate Sub Command2_Click()Command3.Visible = False On Error GoTo err_report Me.PrintFormerr_report: MsgBox Err.Description, vbInformation, 错误提示 Command3.Visible = TrueEnd SubPrivate Sub Form_Load()Dim str As StringAdodc1.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & M_database.mdb;Persist Security Info=False str = select * from M_Book_Bill where M_Book_ID = & frm_gscl.Combo1.List(frm_gscl.Combo1.ListIndex) & Adodc1.CommandType = adCmdTextAdodc1.RecordSource = strAdodc1.Refresh Command2.Visible = FalseCommand3.Visible = FalseEnd Sub4.6 记账处理这部分功能是根据入库流水账和卖书发票信息更新一次库存,这个窗体里会显示库存书籍的ISBN,然后选择要查询的日期,就会知道图书销售和入库情况。也会显示当前库存量,如果当前的库存数量有错,可以点击更新。这时库存数量就正确了。图4-9 记账处理界面图示其主要实现代码如下:Private Sub Command1_Click()Dim i As IntegerDim str As String i = Val(Text1.Text) - Val(Text2.Text) str = update M_Book_All set M_Book_Num = + CStr(i) + where M_Book_ISBN = & List1.List(List1.ListIndex) & M_Conn.Errors.Clear M_Conn.Execute (str) If M_Conn.Errors.Count = 0 Then MsgBox 库存更新完毕!, vbInformation, 信息提示 Text3.Text = CStr(i) Else MsgBox M_Conn.Errors, vbInformation, 信息提示 End If End SubPrivate Sub List1_Click()Dim i, j, s1, s2 As Integer s1 = 0 s2 = 0Dim str1, str2, str3 As String str1 = select * from M_Book_CurAcc where M_Book_ISBN = & List1.List(List1.ListIndex) & Set rs1 = M_Conn.Execute(str1) List2.Clear If rs1.RecordCount 0 Then rs1.MoveFirst For i = 1 To rs1.RecordCount List2.AddItem (ISBN为 & List1.List(List1.ListIndex) & 的书于 & DTPicker1.Value & 进货 & rs1(M_Book_Num).Value & 本) List2.AddItem () s = s + CInt(rs1(M_Book_Num).Value) rs1.MoveNext Next i Else MsgBox 对不起,暂无入库记录!, vbInformation, 信息提示End IfText1.Text = CStr(s)rs1.CloseSet rs1 = Nothingstr2 = select * from M_Book_Bill where M_Book_ISBN = & List1.List(List1.ListIndex) & Set rs2 = M_Conn.Execute(str2) List3.Clear If rs2.RecordCount 0 Then rs2.MoveFirst For j = 1 To rs2.RecordCount List3.AddItem (ISBN为 & List1.List(List1.ListIndex) & 的书于 & DTPicker1.Value & 售出 & rs2(M_Book_Num).Value & 本) List3.AddItem () s2 = s2 + CInt(rs2(M_Book_Num).Value) rs2.MoveNext Next j Else MsgBox 对不起,此书暂无售出记录!, vbInformation, 信息提示End IfText2.Text = CStr(s2) rs2.CloseSet rs2 = Nothingstr3 = select * from M_Book_All where M_Book_ISBN = & List1.List(List1.ListIndex) & Set rs3 = M_Conn.Execute(str3) Text3.Text = rs3(M_Book_Num).Value If Val(Text3.Text) = Val(Text1.Text) - Val(Text2.Text) Then Command1.Caption = 库存量正确,无需更新 Command1.Enabled = False Else Command1.Caption = 库存量不正确,可更新 Command1.Enabled = True End If rs3.CloseSet rs3 = NothingEnd Sub4.7 客户信息这是管理员可以操作的客户信息,可以对客户数据进行删除,修改,查询,添加等功能。图4-10 客户信息管理界面图示其主要实现代码如下:Private Sub Command1_Click(Index As Integer)If Text1.Text = Then MsgBox 请输入查询条件!, 33, 信息提示 ElseIf Combo1.ListIndex = -1 Then MsgBox 请选择查询类别!, 33, 信息提示 Else Dim str As String str = Text1.Text Select Case Combo1.ListIndex Case 0 Adodc1.Recordset.Filter = M_custom_phone = + str + Case 1 Adodc1.Recordset.Filter = M_custom_name = + str + Case 2 Adodc1.Recordset.Filter = M_custom_ID = + str + End SelectEnd IfIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox 数据库中无此客户信息, vbInformation, 信息提示End IfEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.DeleteAdodc1.Recordset.UpdateEnd SubPrivate Sub Command4_Click()Adodc1.RefreshEnd SubPrivate Sub Command5_Click() If Text3.Text = Or Text4.Text = Or Text5.Text = Or Text6.Text = Or Text7.Text = Then MsgBox 客户基本信息不完整!请检查数据!, 33, 信息提示 Exit Sub End If Call insertuser Call TRefreshEnd SubPrivate Sub TRefresh()Adodc1.RefreshEnd SubPrivate Sub insertuser()Dim strIn As StringstrIn = insert into M_user(M_custom_name,M_custom_address,M_custom_phone,M_custom_Email,M_Usr_Pwd) values( & _ Text3.Text + , + Text4.Text + , + T
展开阅读全文