1 / 57

软件开发技术

软件开发技术. 学习情境一:涉及录入与查询类系统开发. 访客管理系统开发步骤. 需求分析 数据库设计 界面设计 程序代码 运行与调试 系统测试 项目文档. 需求分析. 软件需求可分为四个不同的层次: 1 、业务需求 2 、用户需求 3 、功能需求 4 、非功能需求. 企业调研. 获取需求的方法: 访谈和场景分析 确定需求优先级. 业务需求. 本系统的开发目标主要是针对天津飞宏网络科技发展有限公司的访客做出研究,以及来访人员的信息情况整理;系统开发的总任务是为公司访客管理提供及时而方便的电子信息业务联系、信息处理、来访人员的情况查询。. 业务需求.

berke
Télécharger la présentation

软件开发技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件开发技术 学习情境一:涉及录入与查询类系统开发

  2. 访客管理系统开发步骤 • 需求分析 • 数据库设计 • 界面设计 • 程序代码 • 运行与调试 • 系统测试 • 项目文档

  3. 需求分析 • 软件需求可分为四个不同的层次: 1、业务需求 2、用户需求 3、功能需求 4、非功能需求

  4. 企业调研 • 获取需求的方法: • 访谈和场景分析 • 确定需求优先级

  5. 业务需求 本系统的开发目标主要是针对天津飞宏网络科技发展有限公司的访客做出研究,以及来访人员的信息情况整理;系统开发的总任务是为公司访客管理提供及时而方便的电子信息业务联系、信息处理、来访人员的情况查询。

  6. 业务需求 主要解决的情况如下: 1、使来访人员有效管理。 2、使不同的操作用户根据密码进入系统进行管理。 3、系统管理员可以修改密码也可以创建新用户。 4、根据对来访人员的不同类型来进行各种操作,如删除信息、查看信息等。

  7. 功能需求 1、对飞宏公司的访客来访情况提高可靠、准确的凭据。 2、为公司或个人等提供有效简单的信息收集与应用。 3、安全管理人员配合公安机关对危害国家安全案件进行调查取证。 4、对管理者的交班制度提高管理,对操作员的详细记录的保存,若出现问题,追究当班人员责任。 5、随时掌握进出公司人员情况,对来访人员登记作详细记录,并能准确记录其来访时间。

  8. 性能需求 1、访客管理系统的操作简单性 2、系统的安全有效性 3、规范性 4、访问高效性 5、系统强大的查询性 6、及时浏览来访人员信息 7、安全保密性

  9. 系统功能模块 访客登记 访客管理系统 访客管理 访客查询 用户登记 用户管理 用户管理 权限管理 自动添加记录 记录管理 记录查询

  10. 数据库设计 • 本系统设计过程最重要的一环是数据库结构的设计,因为它与系统的性能、程序的结构紧密相关,数据库结构的好坏决定了本系统的成功与否。在进行数据库的需求分析时,不但要考虑到软件系统当前要实现的功能,更要注重软件的可维护性和可扩展性,即考虑到以后可能增长的需求。本软件使用Access 2003数据库。

  11. UserInfo表设计 • UserInfo表用于存储管理员信息

  12. UserRecord表设计 • UserRecord表用于存储记录者信息

  13. GustInfo表设计 • GustInfo表用于存放访客信息

  14. 系统各模块功能 用户登录功能 用户通过在系统用户表中保存的用户名和密码,登录“访客管理系统”,并具有与登录用户名和密码配套的使用权限。

  15. 系统各模块功能 访客操作管理功能 能够完成对访客表中的数据记录进行增加。 系统管理功能 能够完成对用户的增加增加、删除、修改和 保存的操作。

  16. 系统各模块功能 访客查询功能 能够通过输入访客的姓名、性别、来访的时 间、来访的原因、接待的记录员进行查询。 操作记录管理功能 能够以表格的方式按照操作记录进行查询, 即每个人在班的时间,接待了多少访客。

  17. 访客管理系统用例图

  18. 访客管理系统中的类

  19. 学号 课程 成绩 990001 数学 85 学号 姓名 性别 专业 出生日期 990001 万林 男 物理 82-1-11 990002 庄前 女 物理 82-9-21 。。。 。。。 。。。 。。。 。。。 (表一) 数据库 记录集 学号 姓名 专业 课程 成绩 990001 万林 物理 数学 85 990002 庄前 物理 外语 90 。。。 。。。 。。。 。。。。。 记录集的概念: 记录集:可以将一个或几个表中的数据构成记录集Recordset对象,记录集也由行和列构成,它与表类似。

  20. ADO数据控件 1. ADO对象模型 ADO是Microsoft处理数据库信息的技术,它是一种ActiveX对象,采用了被称为OLE DB的数据访问模式。它是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。ADO对象模型更为简化,不论是存取本地的还是远程的数据,都提供了统一的接口。 2. 使用ADO数据控件 在使用ADO数据控件前,必须先通过“工程/部件”菜单命令选择“Microsoft ADO Data Control 6.0(OLE DB)”选项,将ADO数据控件添加到工具箱。ADO数据控件与Visual Basic的内部数据控件很相似,它允许使用ADO数据控件的基本属性快速地创建与数据库的连接。

  21. 工具箱内ADO控件图标形状 画在窗体上的外观 能够利用三种记录集对象访问数据库中的数据,连接方法:

  22. 单击 连接操作------鼠标右击ADO控件,选择快捷菜单 “ADODC属性”命令,打开ADO控件属性页窗:

  23. 使用ADO对象变量访问数据库 使用ADO对象访问数据库比DAO对象模型更为简化,不论是存取本地的还是远程的数据,都提供了统一的接口。

  24. 利用ACCESS创建数据表

  25. 编写模块创建数据库对象 • '定义全局变量UserNow为UserType类型 • Public UserNow As UserType • '自定义用户类型 • Type UserType • ID As String '用户ID • Type As Integer '用户类型 • End Type • '******************************************************************** • '用户操作记录入库函数 AddRec • '功能:将操作记录入库,以便查询。输入:操作类型RecType,Integer类型 • ‘ 1=登记访客资料 2=查询访客资料 3=更改密码 4=添加新用户 5=查看用户资料 ‘6=查看操作记录 '输出:无 • '******************************************************************** • Public Sub AddRec(ByVal RecType As Integer) • Dim AddUserRec As New ADODB.Recordset • Dim DBstr As String • DBstr = "select * from UserRecord" • '打开数据集 • AddUserRec.Open DBstr, DBCnn, adOpenForwardOnly, adLockOptimistic • '添加新记录 • AddUserRec.AddNew • AddUserRec.Fields("UserID") = UserNow.ID • AddUserRec.Fields("UserTime") = Now • AddUserRec.Fields("UserOperate") = RecType • '更新数据集 • AddUserRec.Update • '关闭数据集 • AddUserRec.Close • End Sub

  26. 用户登录界面的设计

  27. 界面设计—主窗体、访客登记

  28. 访客查询界面设计

  29. 访客查询结果显示界面

  30. 主菜单名 快捷键 热键 下级子菜单标记 菜单项 主菜单条 子菜单名 分隔线 菜单的设计 下拉式菜单系统的组成结构 :

  31. 菜单项属性 操作按钮 菜单列表框 • 菜单编辑器的使用 • 工具/菜单编辑器(CTRL+E) • 窗体上快显菜单/菜单编辑器 常用属性: 1. 标题(Caption) 热键:前面加& 2. 名称(Name)文本框 分隔符也应有名称。 3. 快捷键(Shortcut) 菜单名没有快捷键 4. 复选(Checked)检查框 TRUE 有 5. 有效(Enabled)检查框 6. 可见(Visible)检查框

  32. 工具栏 “Microsoft Windows Common Controls 6.0”将控件添加到工具箱, 通过ToolBar、ImageList组合使用建立工具栏,步骤: 1.在ImageList控件中添加所需的图象 2.在ToolBar控件中创建Button对象。 3.在ButtonClick事件中用Select Case语句对各按钮进行相应的编程 在ImageList控件中添加图象 ImageList控件不单独使用,专门为其它控件提供图像库. 索引(Index)、 关键字(Key) 在ToolBar中引用 图象文件的扩展名为: .ico、.bmp、.gif、 .jpg 等

  33. ToolBar与 ImageList的连接 工具栏样式 在ToolBar控件中添加按钮 1.为工具栏连接图象

  34. 索引(Index)、关键字(Key)每个按钮的编号、标识,ButtonClick事件中引用;索引(Index)、关键字(Key)每个按钮的编号、标识,ButtonClick事件中引用; 样式(Style),共6种 图象(Image) ImageList对象中的图象,值可以是Key或Index 除菜单按钮(5)外的5种样式 为工具栏增加按钮

  35. 响应ToolBar控件事件 ToolBar控件常用的事件有两个:ButtonClick和ButtonMenuClick。前者对按钮样式为0-2,后者对样式为5的菜单按钮。 (1)用索引Index确定按钮 (2)用关键字Key确定按钮 • Private Sub Toolbar1_ButtonClick(Byval Button As ComctlLib.Button) • Select Case Button.Index • Case 1 • FileNewProc • Case 2 • FileOpenProc • …… • End Select • End Sub • 注意:第1个按钮的Index值为1。用Index还是用Key比较,Key 可读性好,可维护性好。 • Select Case Button.Key • Case "TNew" • FileNewProc • Case "TOpen" • FileOpenProc • .....

  36. 程序实例讲解访客登记 Private Sub CmdRecord_Click() '添加新访客记录 Dim AddGuest As New ADODB.Recordset Dim SqlStr As String Dim GuestSex As String Dim Remark As String Dim sNow As String Dim GuestName As String Dim GuestReson As String Dim UsrID As String

  37. '检查输入 • If Me.TextName.Text = "" Then • MsgBox "请输入访客姓名!" • Exit Sub • ElseIf Len(Trim(Me.TextName.Text)) > 4 Then • MsgBox "访客姓名长度超出范围!" • Exit Sub • ElseIf Me.TextReason.Text = "" Then • MsgBox "请输入来访原因!" • Exit Sub • ElseIf Len(Me.TextReason.Text) > 50 Then • MsgBox "来访原因过长!" • Exit Sub • End If

  38. GuestName = Replace(Trim(Me.TextName.Text), "'", "''") • GuestReson = Replace(Trim(Me.TextReason.Text), "'", "''") • UsrID = Replace(UserNow.ID, "'", "''") • '访客信息入库 • If Option1.Value = True Then • GuestSex = "男" • Else • GuestSex = "女" • End If

  39. '备注项可选 • If Me.TextRemark.Text = vbNullString Then '没有备注项 • sNow = Format(Now, "yyyy-mm-dd hh:mm:ss") • SqlStr = "INSERT INTO GuestInfo" • SqlStr = SqlStr & "(GuestName,GuestSex,GuestTime,GuestReason,GuestRecID) " • SqlStr = SqlStr & "VALUES ('" & GuestName & "'," • SqlStr = SqlStr & "'" & GuestSex & "'," • SqlStr = SqlStr & "#" & sNow & "#," • SqlStr = SqlStr & "'" & GuestReson & "'," • SqlStr = SqlStr & "'" & UsrID & "');" • DBCnn.Execute SqlStr

  40. Else '有备注项 • Remark = Replace(Trim(Me.TextRemark.Text), "'", "''") • sNow = Format(Now, "yyyy-mm-dd hh:mm:ss") • SqlStr = "INSERT INTO GuestInfo" • SqlStr = SqlStr & "(GuestName,GuestSex,GuestTime,GuestReason,GuestRecID,Remark) " • SqlStr = SqlStr & "VALUES ('" & GuestName & "'," • SqlStr = SqlStr & "'" & GuestSex & "'," • SqlStr = SqlStr & "#" & sNow & "#," • SqlStr = SqlStr & "'" & GuestReson & "'," • SqlStr = SqlStr & "'" & UsrID & "'," • SqlStr = SqlStr & "'" & Remark & "');" • DBCnn.Execute SqlStr • End If

  41. '清空界面 • Me.TextName.Text = "" • Me.TextReason.Text = "" • Me.TextRemark.Text = "" • '记录该操作 • AddRec (1) • '提示用户 • MsgBox "添加记录成功!" • End Sub

  42. 用程序实例讲解查询的方法 • Dim i As Integer • Dim LtItm As ListItem • Dim UserQuery As New ADODB.Recordset • Dim QueryDate1 As Date • Dim QueryDate2 As Date • Dim DBstr As String • Dim GuestName As String • Dim GuestReason As String • Dim UsrID As String • If UserNow.Type <> 0 And UserNow.Type <> 2 Then • MsgBox "对不起,您的权限不能查询访客记录!" • Exit Sub • End If

  43. ‘''按姓名查询 • If Me.OptionQuery(0).Value = True Then • If Me.TxtQueryName.Text = "" Then • MsgBox "请输入要查询的访客姓名!" • Exit Sub • ElseIf Len(Trim(Me.TxtQueryName.Text)) > 4 Then • MsgBox "访客姓名长度超出范围!" • Exit Sub • End If • '替换单引号 • GuestName = Replace(Trim(Me.TxtQueryName.Text), "'", "''") • '读用户资料 • DBstr = "select * from GuestInfo where GuestName Like " • DBstr = DBstr & "'%" & GuestName & "%'" • '打开数据集 • UserQuery.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic

  44. '按性别查询 • ElseIf Me.OptionQuery(1).Value = True Then • If Me.CmbQuerySex.Text = "" Then • MsgBox "请选择查询性别!" • Exit Sub • End If • '读用户资料 • DBstr = "select * from GuestInfo where GuestSex='" • DBstr = DBstr & Me.CmbQuerySex.Text & "'" • UserQuery.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic

  45. '按时间查询 • ElseIf Me.OptionQuery(2).Value = True Then • QueryDate1 = Format(DTPickerQuery, "yyyy-mm-dd") • QueryDate2 = DateAdd("d", 1, QueryDate1) • '读用户资料 • DBstr = "select * from GuestInfo where GuestTime>#" • DBstr = DBstr & QueryDate1 • DBstr = DBstr & "# and GuestTime<#" & QueryDate2 & "#" • UserQuery.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic

  46. '按来访原因查询 • ElseIf Me.OptionQuery(3).Value = True Then • If Me.TxtQueryRes.Text = "" Then • MsgBox "请输入要查询的来访原因!" • Exit Sub • End If • GuestReason = Replace(Trim(Me.TxtQueryRes.Text), "'", "''") • '读用户资料 • DBstr = "select * from GuestInfo where GuestReason Like" • DBstr = DBstr & "'%" & GuestReason & "%'" • UserQuery.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic

  47. '显示查询结果 • If UserQuery.EOF Then • MsgBox "数据库中没有符合要求的记录!" • Exit Sub • End If • Me.LvResult.ListItems.Clear '清空列表 • '数据集指针指向第一个记录 • UserQuery.MoveFirst • For i = 1 To UserQuery.RecordCount • Set LtItm = Me.LvResult.ListItems.Add() • LtItm.Text = UserQuery.Fields("GuestName").Value • LtItm.SubItems(1) = UserQuery.Fields("GuestSex").Value • LtItm.SubItems(2) = UserQuery.Fields("GuestTime").Value • LtItm.SubItems(3) = UserQuery.Fields("GuestReason").Value • LtItm.SubItems(4) = UserQuery.Fields("GuestRecID").Value • If UserQuery.Fields("Remark").Value <> "" Then • LtItm.SubItems(5) = UserQuery.Fields("Remark").Value • End If

  48. '数据集指针指向下一条记录 • UserQuery.MoveNext • Next i • '关闭数据集 • UserQuery.Close • Me.FrameQuery.Visible = False • Me.FrameResult.Visible = True • '记录该操作 • AddRec (2)

More Related