数据库课程设计.docx
- 文档编号:28625172
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:40
- 大小:1MB
数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(40页珍藏版)》请在冰豆网上搜索。
数据库课程设计
数据库系统课程设计报告
题目:
虚拟银行系统
课程代号:
0688116
课程名称:
数据库系统课程设计
学号:
姓名:
班级:
指导教师:
完成日期:
第一章引言
1.1ATM虚拟银行系统概述
1.1.1系统概述
随着时代的发展、科技的进步,现如今人们可以足不出户,通过网络来进行消费,并且查询自己的银行信息。
所以,这次课程设计题目是:
ATM虚拟银行系统,但是由于时间紧迫,另外作者本身能力也十分有限,业务知识接触的也少,所以只能完成该系统中的少量功能,还有很多有待扩充及完善的地方,有不妥善的地方还请老师指点。
这次课程设计只是达到训练、牢固知识的目的,熟悉数据库的前台和后台编程、sql语句的使用、C#的图形界面编程及其控件的使用、如何访问数据库等方面的知识,所以实现的功能也很有限,待以后随着知识的积累,慢慢地扩充完善该系统。
本系统采用了可视化的集成开发环境VisualStudio2010编辑用户操作界面、以SQLSever2008为后台数据库,该系统能够完成用户帐号的建立、用户存取款、用户查询、用户转账、用户销户等基本功能。
1.1.2开发应用系统的任务、意义及目的
ATM虚拟银行系统:
该系统要求建立的表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,但由于涉及到金钱问题,所以细节、逻辑方面的要求就要十分仔细。
所以完成这个题目,能更好的训练数据库设计和C#.net的编程能力以及逻辑细节的思考。
1.1.3应用系统的软硬件运行环境
硬件环境:
硬件要求不高,近1~2年内的电脑均可运行。
软件要求:
操作系统windowsXP及更高版本、SQLserver2008及更高版本、VisualStudio2010及更高版本。
第二章系统分析与设计
2.1系统分析
2.1.1系统需求分析
对于用户功能,能够新建用户,进入界面后,可以更改用户密码、注销登录;对于业务功能,用户能够查询账户信息、查询存取记录、查询转帐记录、存取款操作、转账操作、销户操作。
系统数据流图
以客户信息为例,其数据词典包括数据项、数据结构、数据流、数据存储和数据处理等五个部分:
数据项:
数据项表
数据项名
数据项含义
数据类型
长度
lno
帐号
Varchar
20
lname
开户人姓名
Varhcar
20
lpassword
登录密码
Char
6
lID
身份证号
Varchar
20
lsex
性别
Char
2
lbalance
帐户余额
Float
8
ldate
开户日期
Datetime
8
以上的数据项构成了用户信息表的数据结构(名称:
user_logon),用户登录时需要出示其账号和密码,与数据库中的数据比对,若相同,则可进入系统。
数据流:
用户信息,其来源于用户注册时所填写的个人信息,并存储于数据库中,由user_logon的数据结构所决定。
用户通过键盘输入账号和密码,通过程序与数据库中的信息比对,比对相同,则输出用户操作界面。
2.2系统数据设计
2.2.1数据库概念结构设计
系统E-R图
2.2.2数据库逻辑结构设计
根据系统E-R图,设计的系统数据库的关系模式如下:
用户表关系模式
序号
字段名称
字段描述
数据类型
长度
属性
1
lno
帐号
Varchar
20
PK
2
lpassword
登录密码
Varchar
6
非空
3
lname
开户人姓名
Varhcar
20
非空
4
lsex
性别
Char
6
非空
5
lid
身份证号
Char
20
非空
6
lbalance
帐户余额
Real
8
非空
7
ldate
开户日期
Datetime
8
非空
以上是用户信息表(user_logon)的关系模式,其中lno帐号作为主键,约束条件:
各属性均非空,密码长度为6位;
用户存取表关系模式
序号
字段名称
字段描述
数据类型
长度
属性
1
num
序号
Int
4
PK
2
stno
帐号
Varchar
10
非空
3
stmoney
操作金额
Real
8
非空
4
ststyle
操作类型
Varchar
5
非空
5
stdate
操作日期
Datetime
8
非空
以上是用户存取表(store_take)的关系模式,其中num序号作为主键,stno帐号参照用户信息表lno字段作为外键,其他约束条件:
各属性均非空。
用户转帐表关系模式
序号
字段名称
字段描述
数据类型
长度
属性
1
num
序号
Int
4
PK
2
yno
转储帐号
Varchar
10
非空
3
mbno
转入账号
Varchar
10
非空
4
tmoney
操作金额
Real
8
非空
5
tdate
操作日期
Datetime
8
非空
以上是用户转帐表(user_turn)的关系模式,其中num序号作为主键,yno、mbno参照用户信息表的lno字段作为外键,其他约束条件:
各属性均非空。
2.2.3数据库创建
根据以上的数据库的关系模式,进行数据库的创建:
用户信息表创建图
用户信息表中lno作为主键,其他表的外键也参照此字段。
其他属性均不为空。
用户存取表创建图
用户存取表使用自增的序号列作为表的主键,stno参照用户信息表中lno作为外键。
其他属性均不为空。
用户存取表创建外键图
用户转帐表创建图
用户转帐表使用自增的序号列作为表的主键,yno、mbno参照用户信息表中lno作为外键。
其他属性均不为空。
用户转帐表创建外键图
2.2.4系统总体结构设计
系统总体功能结构图
第三章系统开发及实现
经过初期的选题、需求及功能的分析、数据的分析与建立,下面将利用以上的准备工作,采用可视化的集成开发环境VisualStudio2010进行界面的建立与功能的实现。
本次课题共创建9个窗体、3个数据库表。
3.1欢迎界面
在一个完善的系统中,欢迎界面是不可或缺的。
欢迎界面可以体现出一个系统的整体效果,并在后台进行加载文件、加载用户设置等操作,为运行程序作准备工作。
本课题的欢迎界面采用不带窗体框的窗体,使用了progressbar、lable、timer等控件,并改变了文字的大小、字体、颜色及窗体背景颜色。
利用timer计时的事件使progressbar的value值增加,当滚动条走满时,关闭此窗体,运行登录界面。
欢迎界面
主要功能代码:
Timer事件:
privatevoidtimer1_Tick(objectsender,EventArgse)
{
if(progressBar1.Value { progressBar1.Value++; } if(progressBar1.Value==progressBar1.Maximum) { timer1.Enabled=false; this.Hide(); } } 3.2登录界面 登录界面是一个软件系统的重要环节。 用户必须在登录界面输入正确的帐号密码才能进入主界面。 所以这就要求登录界面要有一定的审核机制和防范措施。 本课题的登录界面使用了textbox、lable、button、errorprovider等控件。 其中,textbox用于填写用户的帐号、密码信息,errorprovider用于验证用户输入的信息及提示用户的功能。 用户进入登录界面,输入完帐号密码后,系统调用textbox的验证事件,审核信息是否符合要求。 若不符合,errorprovider会弹出警告图标;若符合,点击确定按钮后,系统会调用按钮事件,当窗体关闭时,进入关闭窗体的事件,使所填信息与数据库中数据比对,若不匹配,将会弹出错误信息,若匹配,则进入用户主界面。 登录界面 登录界面错误信息验证图 主要功能代码: Textbox验证事件: privatevoidtextBox1_Validating(objectsender,CancelEventArgse) { if(textBox1.Text.Trim().Length<3) { errorProvider1.SetError(textBox1,"用户名长度不能小于3! "); } else { errorProvider1.Clear(); } } 登录界面错误信息验证图 主要功能代码: Textbox验证事件: privatevoidtextBox2_Validating(objectsender,CancelEventArgse) { if(textBox2.Text.Trim().Length<3) { errorProvider2.SetError(textBox2,"密码的长度不能小于3! "); } else { errorProvider2.Clear(); } } 当用户点击退出时,系统会询问用户是否要退出系统,用户点击是时,方可退出系统。 此外用户可以点击注册按钮,将会弹出注册界面。 登录界面退出询问图 窗体关闭事件: privatevoidlogon_FormClosing(objectsender,FormClosingEventArgse) { if(isokbutton==false) { Application.Exit(); } else { stringusername=textBox1.Text.Trim(); stringpassword=textBox2.Text.Trim(); stringsql="select*fromuser_logonwhere lno='"+username+"'andlpassword='"+password+"'"; DataTabledt=DBTool.QueryBySql(sql); boolisvaliduser=false; if(dt.Rows.Count==1) isvaliduser=true; dt.Dispose(); if(isvaliduser==true) { Global.username=username; } else { isokbutton=false; MessageBox.Show("用户名或密码错误! "); e.Cancel=true; } } } 3.3注册界面 当使用一个软件系统时,第一个任务就是注册一个帐号。 本课题的注册界面采用了textbox、lable、button、errorprovider、combobox等控件。 用户在登录界面点击注册按钮后,弹出注册界面。 用户通过键盘将个人信息输入到textbox中,并使用combobox选择性别,每个textbox都有验证事件来判断用户所填写的信息是否正确,errorprovider提示错误信息。 用户填写身份id和开户金额时,通过textbox的keypress事件来限制用户只能输入数字或字母‘x’,并且开户金额必须大于1000元。 用户按照要求填完信息后,点击提交按钮,调用按钮事件,审核用户所填信息是否符合规范。 若不符合,弹出错误信息提示;若符合,将数据存入数据库,注册成功。 注册界面 注册界面验证信息图 注册界面验证信息图 主要功能代码: 用户名部分Textbox验证事件: privatevoidlno_Validating(objectsender,CancelEventArgse) { if(lno.Text.Trim().Length<3) { errorProvider1.SetError(lno,"用户名长度不能小于3! "); } else { stringsql="select*fromuser_logonwherelno='"+lno.Text.Trim()+"'"; DataTabledt=DBTool.QueryBySql(sql); if(dt.Rows.Count==1) { errorProvider5.SetError(lno,"用户名已经存在! "); tag=1; } else { errorProvider5.Clear(); tag=0; } dt.Dispose(); } } 金额部分Textbox的keypress事件: privatevoidlbalance_KeyPress(objectsender,KeyPressEventArgse) { stringallowchar="0123456789."; if((Keys)(e.KeyChar)==Keys.Back||(Keys)(e.KeyChar)==Keys.Delete) { return; } if((e.KeyChar==3)||(e.KeyChar==24)||(e.KeyChar==26)) { return; } if(allowchar.IndexOf(e.KeyChar.ToString())==-1) { e.Handled=true; return; } } 身份证号部分Textbox的keypress事件: privatevoidlid_KeyPress(objectsender,KeyPressEventArgse) { stringallowchar="0123456789x"; if((Keys)(e.KeyChar)==Keys.Back||(Keys)(e.KeyChar)==Keys.Delete) { return; } if((e.KeyChar==3)||(e.KeyChar==24)||(e.KeyChar==26)) { return; } if(allowchar.IndexOf(e.KeyChar.ToString())==-1) { e.Handled=true; return; } } 提交按钮事件: privatevoidbutton1_Click(objectsender,EventArgse) { if(lno.Text.Trim().Length<3) { MessageBox.Show("用户名长度不能小于3! "); return; } if(lpassword.Text.Trim().Length<3) { MessageBox.Show("密码长度不能小于3! "); return; } if(lpassword2.Text.Trim()! =lpassword2.Text.Trim()) { MessageBox.Show("两次输入的密码不相同! "); return; } if(comboBox1.Text.Trim()=="") { MessageBox.Show("请选择您的性别! "); return; } if(lid.Text.Trim().Length! =18) { MessageBox.Show("请输入18位身份证号! "); return; } if(lbalance.Text.Trim()==null|| Convert.ToSingle(lbalance.Text.Trim())<1000) { MessageBox.Show("开户金额不能为小于1000! "); return; } if(tag==1) { MessageBox.Show("用户名已经存在! "); return; } floatbalance=Convert.ToSingle(lbalance.Text.Trim()); stringsql1="insertintouser_logonvalues('"+lno.Text.Trim()+"','"+lpassword.Text.Trim()+"','"+lname.Text.Trim()+"','"+comboBox1.Text.Trim()+"','"+lid.Text.Trim()+"','"+balance+"','"+DateTime.Now+"')"; intnum=DBTool.SqlCmdOperation(sql1); if(MessageBox.Show("注册成功! ")==DialogResult.OK) Close(); } 3.4业务界面 当用户输入正确的帐号密码信息后,点击确定,进入到用户业务操作主界面。 业务界面里包括查询模块、存取模块、转帐模块以及其他模块。 主界面上边的菜单栏和工具栏显示用户可进行的操作,下边的状态栏,能显示当前时间、当前用户以及当前进行的操作。 下面是主界面的截图: 主界面 下面以帐号为“ali0”,密码为“ali0”为例,分别介绍各个模块。 3.4.1查询模块 当用户进入主界面后,点击查询按钮后,主界面内会弹出查询功能的子界面。 此界面内有三个按钮,分别对应三种操作,包括查询帐户信息、查询近期存取信息、查询转帐信息。 点击某个按钮,调用按钮事件,执行相应操作,查询数据库,将数据库返回的结果在子窗体的datagridiew控件里显示。 由于系统面向的都是使用者,所以查询的结果不能任意修改,通过更改datagridiew的属性,完成这一功能。 查询界面 主要功能代码: 查询按钮事件: privatevoidbutton1_Click(objectsender,EventArgse) { stringsql1="selectlno,lname,lsex,lid,lbalancefromuser_logonwhere lno='"+Global.username+"'"; DataTabledt=DBTool.QueryBySql(sql1); dataGridView1.DataSource=dt; } 3.4.2存取模块 当用户进入主界面后,点击存款或取款按钮后,主界面内会弹出对应功能的子界面。 子界面中用radiobutton控件来表示一定的可选择的金额。 若用户想手动输入金额,可点击checkbox,调用checkbox的验证事件,将radiobutton控件禁用,启用textbox手动输入,但只能输入数字。 填写存取金额后,点击确定按钮,验证金额是否正确,取款时会验证金额是否充足,弹出相应信息框。 存款界面 ali0用户存入了600元,存入成功,用户可以通过上面的查询界面来查询账户金额以及存取信息,来验证是否存入。 用户可以点击取消按钮,结束该操作。 取款界面 由于金额超出账户中拥有的数额,系统弹出错误信息。 存款验证信息图 ali0用户刚才存入了600元,点击查询近期存取信息,返回存取记录。 主要功能代码: Checkbox验证事件: privatevoidcheckBox1_CheckedChanged(objectsender,EventArgse) { if(checkBox1.Checked==true) { groupBox1.Enabled=false; textBox1.Enabled=true; } else { groupBox1.Enabled=true; textBox1.Enabled=false; } } 确定按钮事件: privatevoidbutton1_Click(objectsender,EventArgse) { floattemp=0; if(groupBox1.Enabled==true) { if(radioButton1.Checked==true) temp=Convert.ToSingle(radioButton1.Text.Trim()); if(radioButton2.Checked==true) temp=Convert.ToSingle(radioButton2.Text.Trim()); if(radioButton3.Checked==true) temp=Convert.ToSingle(radioButton3.Text.Trim()); if(radioButton4.Checked==true) temp=Convert.ToSingle(radioButton4.Text.Trim()); } else { if(textBox1.Text.Trim()=="") { MessageBox.Show("取款金额不能为0! "); return; } temp=Convert.ToSingle(textBox1.Text.Trim()); } intmark=0; stringsql="updateuser_logonsetlbalance=lbalance+'"+temp+"'wherelno='"+Global.username+"'"; stringsql1="insertintostore_takevalues('"+Global.username+"','"+temp+"','存入','"+DateTime.Now+"')"; mark=DBTool.SqlCmdOperation(sql); if(mark==1) { mark=DBTool.SqlCmdOperation(sql1); if(mark==1) { MessageBox.Show("存款成功! "); } } } 3.4.3转帐模块 当用户进入主界面后,点击转帐按钮后,主界面内会弹出对应功能的子界面。 转帐界面同存取界面大致相同。 不同之
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计