论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
3.3.5 表的结构
以主要几个数据库表结构为例,列示如下:
表3.1 个人卡帐户信息(GRKZHXX)
字段代码 字段名称 类型 宽度 是否主键
Grzh 个人帐号 Varchar 16 YES
Kyyxlh 卡应用序列号 Char 8
Cjrq 创建日期 Datetime
Zjlxbs 证件类型标识 Char 2
Zjhm 证件号码 Varchar 32
Yj 押金 Decimal (5,2)
Jtzhje 交通帐户金额 Decimal (8,2)
Zhztbs 帐户状态标识 Integer
Ztxgrq 状态修改日期 Datetime
表3.2 卡信息(KXX)
字段代码 字段名称 类型 宽度 是否主键
Kh 卡号 Char 8 YES
Kztbs 卡状态标识 Char 2
Klxbs 卡类型标识 Char 2
Yhcs 优惠次数 Integer
Yhbl 优惠比例 Integer
Yj 押金 Decimal (5,2)
Je 金额 Decimal (6,2)
表3.3 营业记录(YYJL)
字段代码 字段名称 类型 宽度 是否主键 (转载自http://www.NSEAC.com中国科教评价网)
Rq 日期 Datetime YES
Sj 时间 Datetime YES
Yhlx 用户类型 Varchar 30
Yhbh 用户编号 Char 8
Jyfs 交易方式 Varchar 50
Je 金额 Decimal (8,2)
表3.4 单位信息(DWXX)
字段代码 字段名称 类型 宽度 是否主键
Dwbh 单位编号 Char 8 YES
Dwmc 单位名称 varchar 50
Lxdh 联系电话 Char 12
Fzrxm 负责人姓名 Varchar 20
Ypde 月票定额 Decimal (8,2)
Yj 押金 Decimal (8,2)
Khrq 开户日期 Datetime
Zhzt 帐户状态 Varchar 20
Xhrq 销户日期 Datetime
表3.5 营业收支日报表(YYSZRBB)
字段代码 字段名称 类型 宽度 是否主键
Jyrq 交易日期 Datetime YES
Srze 收入总额 Decimal (8,2)
Srbs 收入笔数 Integer
Zcze 支出总额 Decimal (8,2)
Zcbs 支出笔数 Integer
表3.6 支票信息(ZPXX)
字段代码 字段名称 类型 宽度 是否主键
Zph 支票号 Char 10 YES
Gpdwbh 供票单位编号 Char 8
Sqzprq 收取支票日期 Datetime
Zpje 支票金额 Decimal (8,2)
Zpdzrq 支票到帐日期 Datetime
表3.7 车载机信息(CZJXX)
字段代码 字段名称 类型 宽度 是否主键
Bh 编号 Char 12 YES
Zt 状态 Varchar 8
Clbh 车辆编号 Char 6
表3.8 个人卡交易明细(GRKJYMX)
字段代码 字段名称 类型 宽度 是否主键
Kh 卡号 Char 8
Rqsj 日期时间 Datetime YES
Scye 上次余额 Decimal (6,2)
Jffse 借方发生额 Decimal (6,2)
Dffse 贷方发生额 Decimal (6,2)
Ye 余额 Decimal (6,2)
表3.9 卡交易记录(KJYJL)
字段代码 字段名称 类型 宽度 是否主键
Jyrq 交易日期 Datetime YES
Xfdbh 消费点编号 Char 6 YES
Jyxh 交易序号 Char 8 YES
Kh 卡号 Char 8
Jyje 交易金额 Decimal (5,2)
Sfje 实付金额 Decimal (5,2)
表3.10 客运分公司运营日报表(KYFGSYYRBB)
字段代码 字段名称 类型 宽度 是否主键
Gzrq 工作日期 Datetime YES
Cjrq 采集日期 Datetime YES
Fgsbh 分公司编号 Char 4 YES
Dryye 当日营业额 Decimal (8,2)
Drxfbs 当日消费笔数 integer
表3.11 消费日报表(XFRBB)
字段代码 字段名称 类型 宽度 是否主键
Czzdh 车载终端号 Char 12 YES
Gzrq 工作日期 Datetime YES
Cjrq 采集日期 Datetime
Dryye 当日营业额 Decimal (8,2)
Drxfbs 当日消费笔数 Integer
表3.12 车队运营日报表(CDYYRBB)
字段代码 字段名称 类型 宽度 是否主键
表3.13 客运返回消费明细(KYFHXFMX)
字段代码 字段名称 类型 宽度 是否主键
Czzdh 车载终端号 Char 12 YES
Kyyxlh 卡应用序列号 Char 8
Kjylsh 卡交易流水号 Integer YES
Jyrq 交易日期 Datetime YES
Klx 卡类型 Varchar 50
Jyje 交易金额 Decimal (5,2)
Xflb 消费类别 Varchar 50
3.4 安全性设计
数据库SQL Server 2000 的安全性功能是强大的,相对来说也是复杂的,在本设计中从实际情况出发,对系统安全行进性有针对性的设计。
(1) 采用模拟加密方式对密码进行加密,即采用将密码转化为ASCII码的形式对其进行加密,从而以不可字辨的形式存入后台数据库。
(2) 通过前台的数据库开发工具VisualBasic 6.0对用户登录权限进行严格的控制管理。在系统用户表中见登录用户划分为三类:总管理员、系统管理组和操作组。
① 总管理组员是系统的最高管理者,对其他人员具有添加权和删除权,对系统内的所有菜单具有操作权限。
② 系统管理组内的人员是系统的较高管理者,对其他人员具有添加权限,对系统内的除删除用户外的所有菜单具有操作权限。
③ 操作组内设定的人员,具有操作数据的权限。
(3) 第一次进入系统时,默认总管理员名称为AAA,密码为aaa。由总管理员AAA负责添加操作组人员和系统管理组其他人员。
3.5 界面设计
考虑到实际情况及应用需求,在本系统中,采用了传统的基于菜单选择、填写文本框和简单回答等人机交互方式。界面本着友好、美观、清晰的原则进行设计。下面介绍系统中部分界面及其业务说明。
图3.3 用户登录界面:
业务说明:用户输入名称和密码,输入正确则进入系统,不正确则系统给出提示警告。
(2) 系统主界面:
图3.4 系统主界面
业务说明:进入系统后,不同类型的用户可分别根据类型权限通过各个菜单项对系统进行操作管理。
(3) 个人卡租卡界面:
图3.5 个人卡租卡界面
业务说明:输入用户信息及押金数额,进行租卡。若所用证件与后台已有记录重复,则系统给出提示警告。
(4) 个人卡充值界面
图3.6 个人卡充值界面
业务说明:输入卡号后,显示卡信息,若卡状态不符,则系统提示不能充值。输入充值金额确定,若充值超额,则系统给出提示。
(5) 单位集体预充值
图3.7 单位集体预充值界面
业务说明:输入单位编号并选择支付方式,进行充值业务,系统显示单位充值信息,若选择支票方式支付,则系统查对记录,如果未到帐支票金额总数将超过押金总额,系统会提示不能充值。
(6) 个人卡账户更改界面:
图3.8 个人卡账户更改界面
业务说明:本界面应用于检查消费是否合法,若合法则更改用户帐户信息。并在此基础上统计合法消费和非法消费情况。单击界面左上方按钮逐条显示本日消费记录并提示非法或合法,单击执行按钮将信息写入后台数据库。
(7) 卡消费交易统计
图3.9 卡消费统计界面
业务说明:本界面模拟卡脱机交易,输入卡号及交易金额,系统读卡信息并显示并计算实付金额,然后记录此次交易信息。
(8) 营业收支日报
图3.10 营业收支日报界面 (科教作文网http://zw.ΝsΕac.cOM编辑)
业务说明:进入本界面后,自动显始当日收入支出信息,操作员可查对营业记录以保证数据的正确性,单击录入按钮即将数据写入后台数据库。若需修改,应首先单击修改按钮,才可改动数据。
(9) 客运分公司运营日报表
图3.11 客运分公司运营日报界面
业务说明:输入分公司编号,显示该分公司当日运营信息。
(10) 车载非法消费日报表
图3.12 车载非法消费日报界面
业务说明:输入车载终端号,显示该车载机基本信息及当日运营信息。
(11) 应付账款划拨
图3.12 应付账款拨划界面
业务说明:显示各科目帐款划拨情况,若有记录,可以查看记录。
(12) 支票入帐
图3.14 支票入帐界面
业务说明:单位预充值若以支票方式,则系统记录支票信息,在界面中确定支票到帐。
(13) 个人卡信息查询
图3.15 个人卡信息查询界面
业务说明:本界面提供个人卡信息查询功能。输入卡号及租卡证件信息,显示卡信息。
(14) 联机交易统计查询
图3.16 联机交易统计查询界面
业务说明:输入交易日期并选择卡类型,可查询指定日期特定卡的各种联机交易信息。
(15) 车载机信息查询
图3.17 车载机信息查询界面
业务说明:本界面提供车载机基本信息查询功能。输入车载终端号,单击查询按钮,显示指定车载机信息;单击全部信息按钮显示全部车载机信息。
(16) 客运返回消费明细
图3.18 客运返回消费明细界面
业务说明:根据每日脱机交易统计记录,按时间段返回个人卡消费明细。
(17) 会计科目收支信息显示
图3.19 会计科目收支信息显示界面 (科教作文网http://zw.nseAc.com)
业务说明:在会计科目收支查询主界面中输入工作日期并选择科目类别,则在此界面中显示所查询内容,并可以通过单击界面右边的按钮查看在此日期前后的记录。
(18) 客运分公司运营信息
图3.20 客运分公司运营信息界面
业务说明:输入分公司编号并选择日期,查询各分公司的运营情况。
4. 系统实现
4.1 开发工具的选择
4.1.1 前端软件工具的选择
(1) Visual Basic 6.0
Visual Basic 6.0 是Visual Studio 6.0 可视化应用程序开发工具组件中的一个成员,是目前最流行的可视化编程工具。在本次设计中,我选择了它作为前台开发工具,因为它拥有许多其他编程工具所不具有的特点和功能。下面对此作以介绍。
Visual Basic 既继承了BASIC 语言具有的语法简单、易学、易用、数据处理能力强的特点,又引入了面向对象的编程机制和可视化程序设计方法,大大降低了开发应用程序的难度,有效地提高了应用程序的效率。同时,Visual Basic 还兼顾了高级编程技术,其编程系统采用了面向对象、事件驱动的编程机制,具有面向对象程序设计语言所具有的对象的创建、对象的继承性、对象的多态性及对象的可预见性的特征。应用Visual Basic 不仅可以编写功能强大的数据库应用程序、多媒体处理程序,还可以用来建立客户与服务器应用程序、创建ActiveX控件以及与其他应用程序紧密集成。因此,Visual Basic 6.0 已经成为最受欢迎的Windows应用程序开发工具。
Visual Basic作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得非常简单。选择Visual Basic作为开发数据库前端应用程序的工具,可以和多种数据库连接。也就是说,目前较为流行的大多数数据库都可以与Visual Basic连接,因而可以用Visual Basic开发相应的前端应用程序,而且使用ODBC驱动程序,可以建立与几乎任何数据库管理系统连接的应用程
(转载自中国科教评价网www.nseac.com )
(科教范文网 lw.nSeAc.com编辑发布)
4.1.2 后台数据库的选择
Microsoft SQL Server 是Microsoft 公司开发的一个基于结构化查询语言(SQL)和客户机/服务器模型的高性能的关系数据库管理系统,SQL Server 2000是MS SQL Server 的最新版本。SQL Server 2000的应用可以稳定运行在小到台式机、笔记本,具有8—16个处理器、若干G字节的内存、若干T字节的外部存储器的对称的多处理服务器。
应该指出的是,SQL Server 2000是一种企业级的数据库管理系统、主要是被设计来支持大容量的事物处理,例如超级市场的销售系统、银行管理系统、网络中的数据库支持应用软件以及其他方面的企业级的应用。尽管SQL Server 2000 可以稳定高效地运行于单机或文件共享系统中,但是需要指出的是,这不是SQL Server 2000在这方面的主要应用领域。目前,随着Internet和Intranet应用的发展,SQL Server 2000在这方面的应用受到越来越多的重视。开发企业级的数据管理已经和Internet 和 Intranet 密不可分了。
在本次设计中,为达到学习并锻炼自己的目的,我选择了SQL Server 2000 作为自己的后台数据库。
4.2 后台数据库的选择
(1) 公用数据库连接
Public Sub cnOpen(ByRef cn As ADODB.Connection) (科教作文网http://zw.ΝsΕAc.Com编辑整理)
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=帐务清算;Data Source=LIYAN"
End Sub
业务说明:打开到数据源的连接。
(2) 公用密码加密
Public Sub changecode(ByVal str1 As String, ByRef str2 As String)
Dim i As Integer
Dim a(10) As String
i = Len(str1)
For j% = 0 To i - 1
a(j%) = Asc(Mid(str1, j% + 1, 1))
str2 = str2 + a(j%)
Next j%
End Sub
业务说明:模拟数据加密功能。具体方法是将密码的每一位分别转化ASCII码写入后台数据库。
(3) 个人卡租卡
Private Sub Form_Load()
lbldate.Caption = Date ‘显示日期
cmdrec.Enabled = False
cmddel.Enabled = False
Call cnOpen(cnk) ‘连接数据库
Set rs6 = New ADODB.Recordset
s6 = "select * from KXX"
rs6.Open s6, cnk, adOpenKeyset, adLockOptimistic
Dim qq As Integer
If rs6.EOF Then
qq = 1
Else
rs6.MoveLast
qq = (Val(rs6!kh) + 1)
End if
Dim X As Integer
X = Len(str(Val(qq)))
txtxh.Text = String((9 - X), "0") & (qq) ‘显示本次租卡卡号
rs6.Close
End Sub
Private Sub Timer1_Timer() ‘显示时间
lbltime.Caption = Time$
End Sub
d = " insert into GRZHXX values('" & (f) & "','" & (txtxh.Text) & "','" & (Now) & "','" & (ee) & "','" & Trim(txth.Text) & "','" & Trim(txtyj.Text) & "','0','0','" & (Date) & "','" & (rr) & "')"
rsh.Open d, cnk, adOpenKeyset, adLockOptimistic
‘建立个人帐户
f = "insert into KXX values('" & (txtxh.Text) & "','00','" & (rr) & "','" & (s3) & "','" & (s4) & "','" & Trim(txtyj.Text) & "','0')"
xx = MsgBox("租卡成功!", vbExclamation, "消息")
‘返回信息
Set rsyy = New ADODB.Recordset
yy = "insert into YYJL values('" & (Date) & "','" & (Time) & "','个人','" & (txtxh.Text) & "','租卡押金','" & Trim(txtyj.Text) & "')"
‘记录交易信息
(4) 个人卡充值
d = "select * from KXX where kh='" & Trim(txtkh.Text) & "'"
rsk.Open d, cnk, adOpenKeyset, adLockOptimistic
X = rsk!je ‘查询帐户现有金额
If (Val(txtc.Text) + X) > 1000 Then
X = (1000 - X) ‘计算本次充值最高额
xx = MsgBox("充值超额!本次充值不应超过“" & (X) & "”元!", vbExclamation, "消息") ‘提示充值超额
gg = "select * from GRZHXX where kyyxlh='" & Trim(txtkh.Text) & "'"
rss.Open gg, cnk, adOpenKeyset, adLockOptimistic
a = rss!jtzhje
b = (a + Val(txtc.Text)) ‘计算帐户更新后金额
g = "update GRZHXX set jtzhje='" & (b) & "' where kyyxlh='" & (txtkh.Text) & "'"
rsh.Open g, cnk, adOpenKeyset, adLockOptimistic‘更改帐户信息
f = "update KXX set je='" & (b) & "' where kh='" & (txtkh.Text) & "'"
rsh.Open f, cnk, adOpenKeyset, adLockOptimistic‘更改卡信息
e = "insert into GRKJYMX values('" & Trim(txtkh.Text) & "','" & (Now) & "','" & (a) & "','0','" & Trim(txtc.Text) & "','" & (b) & "')"
rsh.Open e, cnk, adOpenKeyset, adLockOptimistic‘记录交易信息
(5) 个人卡挂失
e = " update KXX set kztbs='01' where kh='" & (txtkh.Text) &am