数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx

上传人:b****3 文档编号:27186677 上传时间:2023-06-27 格式:DOCX 页数:52 大小:11.60MB
下载 相关 举报
数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx_第1页
第1页 / 共52页
数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx_第2页
第2页 / 共52页
数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx_第3页
第3页 / 共52页
数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx_第4页
第4页 / 共52页
数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx

《数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx》由会员分享,可在线阅读,更多相关《数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx(52页珍藏版)》请在冰豆网上搜索。

数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统.docx

数据库技术及应用课程设计项目设计报告说明书之校园一卡通查询转帐系统

 

同济大学

《数据库技术及应用》

项目设计报告

 

项目设计报告题目:

校园一卡通查询转帐系统

小组成员姓名:

许梦姬、冯圣洁、支慧、杨莹吉、钟毅婉

班级:

数据库

(一)班

姓名:

许梦姬学号:

042392

年级:

大二专业:

物流管理

指导教师:

袁科萍

日期:

2006年06月11日

 

一、

项目设计的背景、目的和意义

我校校园一卡通自2005年9月新学期开始正式启用以来,已经使用将近一年了。

在这一年的使用过程中,我们发现了校园一卡通使用上的两个不足之处:

1)校园一卡通的自助查询机(触摸屏式)和转帐机分离,均设立在食堂内,往往经常人满为患,需要排队等候查询和转帐,因此会造成对时间的浪费。

而且都没有挂失和解挂功能,需要到专门部门进行操作。

2)网上的校园卡网站的功能不够完全,只有基本的查询功能,不能实施转帐,而且知晓率不高。

我们此次项目正是针对这些问题而设计的,旨在运用《数据库》所学的知识以及VB.NET平台程序设计基础,设计出一个简单、易用、功能完善的自助在线一卡通帐户管理系统。

二、项目主要功能描述

在用户以正确的用户名和密码登陆后,可进入“欢迎”页面,有四大功能可供选择:

◆密码修改:

提供修改一卡通密码的服务。

◆挂失和解挂:

提供挂失和解挂的服务。

◆消费明细:

此功能中有3个分类功能。

✧卡内余额查询

✧历史消费充值记录的自定义日期查询

✧年度历史消费充值记录的统计与描绘

◆转帐充值:

提供对一卡通的充值服务,从银行卡转帐。

三、成员分工:

◆许梦姬:

组长,主要负责总的策划,程序总调试,部分板块程序的编写。

◆冯圣洁:

主要负责原始数据的录入,以及在原始数据上建立存储过程和触发器。

参与部分板块的程序编写。

◆杨莹吉:

主要负责“消费明细”板块中的“余额查询”程、“”明细查询“等的编写,参与其他板块程序的编写。

◆支慧:

主要负责“银行卡转帐”板块的程序编写,参与“消费统计图”等板块程序的编写。

◆钟毅婉:

主要负责程序总的设计,参与“欢迎”等部分板块的程序编写。

四、数据库设计

原始数据设计:

◆表一:

基本信息

设计:

内容:

◆表二:

设计:

帐号

内容:

数据说明:

状态中“0”表示卡处于活动状态,“1“表示卡处于挂失状态。

◆表三:

设计:

消费信息

内容:

◆表四:

银行卡帐号

设计:

内容:

存储过程、触发器设计:

在表消费信息上的触发器

createtriggerbalcontrolon消费信息

forinsert

as

declare@cashint,

@balint,

@markchar,

@accchar(10),

@stateint

select@bal=a.余额,@state=a.状态from帐号a

where@acc=帐号

begin

ifnotexists(select*from帐号

where帐号=(select帐号frominserted))

begin

raiserror('帐号不存在!

',1,1)

rollbacktransaction

end

else

begin

if@state=1

begin

raiserror('已挂失!

',1,1)

rollbacktransaction

end

else

begin

if@mark='存款'

begin

print'已存入'

update帐号set@bal=@bal+@cash

where@bal=(select存取金额frominserted)and@cash=(select[[存/取]]款]frominserted)

end

if@mark='取款'

begin

update帐号set@bal=@bal-@cash

where@bal=(select存取金额frominserted)and@cash=(select[[存/取]]款]frominserted)

if@bal<0

begin

raiserror('不能透支!

',1,1)

rollbacktransaction

end

end

end

end

end

在查询分析器输入命令以验证

对不存在的帐号禁止操作

命令:

结果:

对已经挂失的帐号禁止操作

命令:

结果:

五、窗口设计

此项目共有六个窗口:

◆Form1——登陆:

供输入帐号、密码和验证码,以和数据库中的“基本信息”表中的信息进行比对,以确定能否进入其余界面。

◆Form2——欢迎:

供选择不同的功能进入。

◆Form3——修改密码:

提供密码修改,需要输入原密码,以及新密码两次输入验证。

◆Form4——挂失解挂:

告知当前卡的状态,以进行相应的挂失或解挂操作。

◆Form5——消费记录:

查询与消费记录相关的内容。

✧余额查询:

提供余额查询服务。

✧消费明细:

根据选择的日期,列出历史消费和充值记录。

✧消费统计图:

根据选择的年份,画出消费和充值的直方图。

◆Form6——充值:

输入银行卡卡号、密码,以及需要充值的金额。

六、功能设计的程序与标注

模块中定义全局变量的代码

ModuleModule1

Publicf1=NewForm1

Publicf2=NewForm2

Publicf3=NewForm3

Publicf4=NewForm4

Publicf5=NewForm5

Publicf6=NewForm6

PublicsnumAsString'用户输入的帐号

PubliccodeAsString'用户输入的密码

PublicstateAsInteger'用户卡的状态

PublicsnameAsString'用户的姓名

EndModule

◆Form1——登陆:

'SqlConnection1

'

Me.SqlConnection1.ConnectionString="workstationid=""SNAIL-6ZY0NE5GF"";packetsize=4096;integratedsecurity=SSPI;datas"&_

"ource=""SNAIL-6ZY0NE5GF"";persistsecurityinfo=True;initialcatalog=fanka"

PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

Randomize()

Label4.Text=Int(Rnd()*9000+1000)

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

TextBox1.Focus()

'窗口1载入时,产生随机的4位验证码,并将原来各个输入框置空,定位于帐号输入

EndSub

PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

Randomize()

Label4.Text=Int(Rnd()*9000+1000)

TextBox1.Focus()

'按“取消”按钮后,重新产生随机的4位验证码,并将原来各个输入框置空,定位于帐号输入

EndSub

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

DimcheckcodeAsString

snum=TextBox1.Text

code=TextBox2.Text

'打开连接,到数据库读取该帐号的密码

Me.SqlConnection1.Open()

DimmySelectQuery1AsString="select密码from基本信息where帐号='"+TextBox1.Text+"'"

DimmyCommand1AsNew

DimmyReader1As

WhilemyReader1.Read()

checkcode=myReader1.GetString(0)

EndWhile

myReader1.Close()

'到数据库读取该帐号的姓名

DimmySelectQuery2AsString="select姓名from基本信息where帐号='"+TextBox1.Text+"'"

DimmyCommand2AsNew

DimmyReader2AstaReader=myCommand2.ExecuteReader()

WhilemyReader2.Read()

sname=myReader2.GetString(0)

EndWhile

myReader2.Close()

Me.SqlConnection1.Close()

'连接关闭

Ifcheckcode=""AndTextBox1.Text<>""Then

MsgBox("您输入的帐号不存在!

")

Randomize()

Label4.Text=Int(Rnd()*9000+1000)

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

TextBox1.Focus()'帐号不存在时

Else

IfTextBox1.Text=""Then

MsgBox("请输入学号!

")'未输入帐号时

Else

SelectCaseTextBox2.Text

Case""

MsgBox("密码不能为空,请输入!

")'密码为空时

Casecheckcode

SelectCaseTextBox3.Text

Case""

MsgBox("请输入验证码!

")'验证码为空时

CaseLabel4.Text

Me.Hide()'密码、验证码都正确时,进入下一界面

f2.show()

CaseElse

MsgBox("验证码输入错误!

")'验证码错误时

TextBox3.Text=""

Label4.Text=Int(Rnd()*9000+1000)

EndSelect

CaseElse

MsgBox("密码错误!

请重新输入!

")'密码错时

TextBox2.Text=""

TextBox3.Text=""

Label4.Text=Int(Rnd()*9000+1000)

EndSelect

EndIf

EndIf

EndSub

PrivateSubTextBox1_TextChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTextBox1.TextChanged

snum=TextBox1.Text

IfNotIsNumeric(snum)Andsnum<>""Then

MsgBox("输入错误:

学号均为数字,请输入数字")'控制帐号输入为数字

EndIf

EndSub

PrivateSubTextBox2_TextChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTextBox2.TextChanged

code=TextBox2.Text

EndSub

PrivateSubForm1_Activated(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.Activated

Randomize()

Label4.Text=Int(Rnd()*9000+1000)

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

TextBox1.Focus()

snum=0

sname=""

code=""

'窗口再次活跃后,重新产生随机的4位验证码,并将原来各个输入框置空,定位于帐号输入,所有变量也置空,等待下一位使用者

EndSub

◆Form2——欢迎:

PrivateSubMenuItem1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuItem1.Click

Me.Hide()

f1.Show()

EndSub

PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)

Me.Hide()

f1.Show()

EndSub

PrivateSubForm2_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

Timer1.Enabled=True

Timer2.Enabled=True

Label3.Text=Now

Label1.Text=Trim(sname)&"同学,欢迎进入校园一卡通查询系统"

'利用全局变量sname,在屏幕上打出使用者的姓名

EndSub

PrivateSubTimer1_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer1.Tick

IfLabel1.Left=-Label1.WidthThen

Label1.Left=f2.Width

Else

Label1.Left=Label1.Left-1

EndIf'字幕滚动

EndSub

PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click

Me.Hide()

f4.show()

EndSub

PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click

Me.Hide()

f5.show()

EndSub

PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click

Me.Hide()

f6.show()

EndSub

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

Me.Hide()

f3.show()

EndSub

PrivateSubTimer2_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer2.Tick

Label3.Text=Now'显示时间

EndSub

PrivateSubTimer3_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer3.Tick

StaticiAsInteger

i=i+1

Ifi=4Then

i=0

EndIf

'图片的滚动播放

EndSub

PrivateSubForm2_Activated(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.Activated

Timer1.Enabled=True、‘窗口再次活动时更新数据

Timer2.Enabled=True

Label3.Text=Now

Label1.Text=Trim(sname)&"同学,欢迎进入校园一卡通查询系统"

EndSub

◆Form3——修改密码:

PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

TextBox1.Focus()'按“取消”后,全部置空

EndSub

PrivateSubForm3_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

Button1.Enabled=True

Button2.Enabled=True'窗口载入时,按钮变为可操作

EndSub

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

DimocAsString,nc1AsString,nc2AsString

oc=TextBox1.Text

nc1=TextBox2.Text

nc2=TextBox3.Text

Ifoc<>codeThen

MsgBox("原始密码错误!

")'原始密码输入错误,重新输入

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

TextBox1.Focus()

Else

Ifnc2<>nc1Then

MsgBox("输入错误:

两次输入的新密码不一致!

")'匹配两次输入的新密码的一致性

TextBox2.Text=""

TextBox3.Text=""

TextBox2.Focus()

Else

IfTextBox2.Text=""AndTextBox3.Text=""Then

MsgBox("不设置密码存在安全隐患,请设置!

")'阻止不设置新密码的情况

TextBox2.Focus()

Else

Try

DimupdatestrAsString="update基本信息set密码='"&TextBox3.Text&"'where帐号='"&snum&"'"

DimmyCommand3AsNewClient.SqlCommand(updatestr,SqlConnection1)

Me.SqlConnection1.Open()

myCommand3.ExecuteNonQuery()

MsgBox("密码修改成功!

")'密码修改成功后提示,且按钮变为不可操作,防止连续多次操作

code=TextBox3.Text

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

Button1.Enabled=False

Button2.Enabled=False

CatchexAsException

MsgBox(ex.Message)

Finally

Me.SqlConnection1.Close()

EndTry

EndIf

EndIf

EndIf

EndSub

PrivateSubMenuItem1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuItem1.Click

Me.Hide()

f2.show()

Button1.Enabled=True

Button2.Enabled=True

EndSub

PrivateSubForm3_Activated(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.Activated

TextBox1.Text=""

TextBox2.Text=""

TextBox3.Text=""

Button1.Enabled=True

Button2.Enabled=True'窗口再次活动时,按钮可操作,置空

EndSub

◆Form4——挂失解挂:

PrivateSubMenuItem1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMenuItem1.Click

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1