数据库课程设计.docx

上传人:b****5 文档编号:28625172 上传时间:2023-07-19 格式:DOCX 页数:40 大小:1MB
下载 相关 举报
数据库课程设计.docx_第1页
第1页 / 共40页
数据库课程设计.docx_第2页
第2页 / 共40页
数据库课程设计.docx_第3页
第3页 / 共40页
数据库课程设计.docx_第4页
第4页 / 共40页
数据库课程设计.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

数据库课程设计.docx

《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(40页珍藏版)》请在冰豆网上搜索。

数据库课程设计.docx

数据库课程设计

 

数据库系统课程设计报告

 

题目:

虚拟银行系统

 

课程代号:

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转帐模块

当用户进入主界面后,点击转帐按钮后,主界面内会弹出对应功能的子界面。

转帐界面同存取界面大致相同。

不同之

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

当前位置:首页 > 外语学习 > 英语考试

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

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