《银行管理系统.docx》由会员分享,可在线阅读,更多相关《银行管理系统.docx(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、湖南涉经济学院课程设计报告课程名称: 数据库技术与应用 报告题目: 银行管理系统 学生姓名: 所在学院: 信息科学与工程 专业班级: 学生学号: 指导教师: 2013年12月10日摘要现在计算机网络的高速发现使越来越多的人更喜欢在网购物、在家存款取款。在这样的背景下,很明显现在的银行储蓄系统已经不能满足人们越益增长的需求,急切需要建立一个新的、高效的、方便的、互联的计算机储蓄系统。软件分别有新建,修改,查询,更新等功能。各个模块各有不同的功能,但都能完成查询和存储功能。各模块的数据都存放在数据库中。数据的条用和廉洁都有程序来完成。此系统所要完成的主要功能有两方面:如果是存款,储蓄填写存款单,然
2、后交给键入系统,同时系统还要记录存款人姓名,住址,身份证,号码,存款日期。,完成后由系统打印存款单给储户。如果是取款,储户填写取款单交给业务员,业务员把取款金额输入系统要求储户输入密码以确认身份,核对密码正确无误后系统计算利息并印出利息清单给储户。此系统开发需要解决的主要问题是项目的需求分析;结构设计;Visual Studio C# 2010界面设计及其相关代码的编写实现; SQL Server 2005后台代码的编写实现以及整个项目后期的运维等工作。关键字:Visual Studio C# 2010、SQL Server 2005、系统目录第1章 绪论11.1设计目的11.2 设计意义1第
3、2章 需求分析22.1系统需求分析22.2其它需求4第3章 系统整体结构分析53.1系统功能组成ER图53.2系统功能流程图8第4章 数据库设计94.1设计概念94.2数据结构表94.3数据分析9第5章 系统实现125.1数据库代码以及数据管理125.2系统c#界面15第6章 总结心得19参考文献21附页:C# 代码22课程设计任务书37第1章 绪论1.1设计目的随着拥有多种银行卡的人群不断增长,人们急切希望有一种通用的银行卡以便随时随地在哪家银行都可以存款提款;现在计算机网络的高速发现使越来越多的人更喜欢在网购物、在家存款取款。在这样的背景下,很明显现在的银行储蓄系统已经不能满足人们越益增长
4、的需求,急切需要建立一个新的、高效的、方便的、互联的计算机储蓄系统。本软件实现银行的活期储蓄存款业务。客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并通过网络通讯向服务器发送请求,并接受服务器端程序的应答显示处理的结果。服务器端处理客户端的各种业务请求。主要实现银行开户、销户、取款、存款、余额查询、转账等功能。应用对数据库系统概论的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。1.2 设计意义数据的载入是一个非常繁杂和重
5、要的过程需要很大的工作量,可分为人工输入与其它格式数据文件导入。该系统只是一个简单的实验系统,所以采用手工输入少量的数据可满足实验要求即可。分别给储户基本信息表,活期存取款基本信息表,定期存款基本信息表,定期取款基本信息表和定期操作记录基本信息表输入数据实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库银行管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程。第2章 需求分析2.1系统需求分析该系统主要包括管理员操作、储户管理理、数据维护三部分。“管理员操作”是指
6、进入银行储蓄系统必须获得一个许可,由管理员输入用户名和密码,方可进入该系统,并且可以对储户操作明细进行查询。“储户管理”包括添加、开户、销户、存款、取款、查询。“数据维护”即数据安全,可对数据进行备份与还原。本系统主要任务是用计算机为用户办理各项储蓄业务:2.1.1客户端登录功能客户端程序运行时,首先进行用户(银行职员)的合法性验证。银行职员输入正确的用户名和密码后,进入系统主菜单界面。用户名和密码需事先保存在程序的配置文件中。输入:1、用户名2、密码处理:1、用户名长度最多50位2、密码长度最多50位3、用户名及密码正确后进入主菜单界面。输出:1、 密码用*输出2.1.2主菜单显示银行的基本
7、信息输出主菜单(包括开户、存款、取款、查询、转账、销户、退出等功能)供操作用户选择,然后根据用户的输入选择进入不同的系统功能界面。输入:单击用户所需的按钮处理:根据用户所需的按钮,进入不同的选项卡。2.1.3开户功能在客户端输入开户的基本信息,通过网络传送数据,在服务器处理后显示服务器端的处理结果。开户成功后打印存折相关信息。存折的基本信息包括:户名、帐号、姓名、密码、身份证号等。输入:1、用户姓名2、身份证号码3、密码4、账号5、开户金额处理1、 开户的所有信息必填。输出:1、 开户成功后会弹出提示对话框,提醒用户成功开户。反则不成功。2.1.4存款功能银行职员在客户端输入存款的基本信息,通
8、过网络传送数据,在服务器处理后显示服务器端的处理结果。存款成功后打印账户明细。操作结束后返回主菜单界面。输入:登录进入后,单击“存款”的按钮,输入金额。处理:数据库记载以修改的数据输出:存款后,系统会提示存款成功。2.1.5取款功能银行职员在客户端输入取款的基本信息(假设存折账户的密码也由银行职员输入),通过网络传送数据,在服务器处理之后显示服务器端的处理结果。操作结束后返回主菜单界面。输入:登录进入后,单击“取款”的按钮,输入金额。处理:数据库记载以修改的数据输出:取款后,系统会提示存款成功。2.1.6转账功能在客户端输入转账的基本信息,通过网络传送数据,在服务器处理后显示服务器端的处理结果
9、。转账成功后打印本账户的明细信息并打印转账凭证。操作结束后返回主菜单界面。输入:登录进入后,单击“转账”的按钮,输入金额,账户名处理:转账信息必填输出:转账后,系统会提示转账成功2.1.7查询功能银行职员在客户端输入查询的基本信息通过网络传送数据,在服务器处理后显示服务器端的处理结果。成功后如果之前有部分账户明细信息未打印的进行打印。操作结束后返回主菜单界面。输入:登录账户,单击“查询”按钮。选择要查询的日期。处理:输入信息必填输出:可以显示账户的转账信息,以及余额等信息。2.2其它需求2.2.1可用性本软件也可以通过单步跟踪的操作进行检查处理。2.2.2安全性由于软件运行数据放在数据库中,所
10、以参数不容易被错改、破坏,万一参数受到破坏也不会影响源程序。2.2.3可维护性本软件利用数据库进行编程,系统结构由程序基本确定,大量的参数及文本内容全部放于数据库中。修改、更新数据只要在数据库进行修改添加,而不需要对系统结构进行修改,这样系统维护性、升级都十分方便。第3章 系统整体结构分析3.1系统功能组成ER图3.1.1存款储户填写存款单,然后交给业务员键入系统,同时系统还要记录存款人姓名性别,身份证号码、密码等信息,完成后由系统打印存款单给储户。姓名存款 银行 用户 身份证号3.1存款ER图3.1.2取款储户填写取款单交给业务员,业务员把取款金额输入系统并要求储户输入密码以确认身份,核对密
11、码正确无误后系统计算利息并打印出利息清单给储户。对储户基本信息进行日常管理,如查询、修改、增加、删除。身份证号取款 用户 银行 姓名3.2取款ER图3.1.3 开户储户填写业务单交给业务员,业务员需要把用户的用户的个人信息(账户,姓名,身份证号,密码等)录入数据库,并且录入进行保存。身份证号姓名用户账户存入金额额开户 密码银行3.3开户ER图3.1.4 转账用户需要转账,需要用户提供转账的用户的姓名和转账用户的账户号,业务员进行转账操作,并且录入数据库,进行修改用户的账目。姓名身份证号用户账户余额转账账户转账金额转账银行3.4转账ER图3.1.5 登录登陆账号身份证号用户在开户后,输入自己的密
12、码和账号就能进行登录自己的账户,进行其他操作。登录用户密码姓名3.5登录ER图3.1.6 销户在用户不需要任何的银行业务的时候,用户要进行销户,用户处理自己的账户中所有的金钱后便可进行销户。身份证号银行销户用户姓名3.6销户ER图3.1.7 查询身份证号查询在用户需要知道自己的账户的余额和拥有之前的操作的信息时,用户可以进行查询。用户姓名银行3.7查询ER图3.2系统功能流程图用户账户姓名开户存入金额密码身份证号登录退出存款取款查询销户转账退出退出转账账户转账金额账户余额退出销户取款金额退出退出存入金额3.8系统功能流程图第4章 数据库设计4.1设计概念概念设计阶段采用自底向上的方法,即自顶向
13、下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。4.2数据结构表序号字段名称字段描述数据类型长度属性1id开户顺序intPR2account账户nvarchar50not null3pass密码nvarchar50not null4name姓名nvarchar50not null5card身份证nvarchar50not null6money开户存入金额float50not null表4.1银行储蓄用户表序号字段名称字段描述数据类型长度属性1uname账户nvarchar50PK2timeYear 年int非空3timeD
14、iana月int非空4fetchMoney存入金额float5despositMoney取出金额float6timeDay天int非空7TransferName转账账户nvarchar8TransferMoney转账金额float表4.2存取信息表4.3数据分析银行管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。在定义的银行数据库管理系统数据字典中,主要对数据流图中的账户信息定期历史操作记录定期存款定期取款活期操作进行说明。4.2.1数据需求的描述A、数据项(1)数据项名称:id含义说明:惟一标识一个用户进图系统的顺序类型:整型长度:不限逻辑关系:不允许为空(2)数据项名称
15、:accounts含义说明:开户账号类型:字符型长度:50逻辑关系:不允许为空(3)数据项名称:pass含义说明:账户密码类型:字符型长度:50逻辑关系:不允许为空(4)数据项名称:card含义说明:身分证号类型:字符型长度:50逻辑关系:不允许为空(5)数据项名称:money含义说明:开户存入近金额类型:数字型逻辑关系:不允许为空(6)数据项名称:name含义说明:开户人姓名类型:数字型逻辑关系:不允许为空(7)数据项名称:uname含义说明:开户名类型:字符型长度:50逻辑关系:不允许为空(8)数据项名称:timeyear 、timediana、timeday含义说明:查询时间类型:数字型
16、逻辑关系:允许为空(9)数据项名称:fetchmoney含义说明:存入时间类型:数字型逻辑关系:允许为空(10)数据项名称:TransferName含义说明:转账用户名类型:字符型逻辑关系:允许为空(11)数据项名称:transmoney含义说明:转账金额类型:数字型长度:50逻辑关系:允许为空(12) 数据项名称:deposeitmoney含义说明:取出金额类型:数字型逻辑关系:允许为空B、表(1)数据存储名称:储户基本表含义说明:存放储户的有关信息组成结构:储户信息包括账号,姓名,密码,身份证号,性别,开户存入金额说明:1、都具有非空性。2、开户顺序和账户具有唯一性。(2)数据存储名称:存
17、取款表含义说明:存放活期存取款的信息组成结构:活期存取款包括帐号,金额,办理日期,账户余额,转账金额,转账用户;说明:1、帐号具有惟一性和非空性。2、户名有非空性。第5章 系统实现5.1数据库代码以及数据管理5.1.1创建银行系统数据库create database 银行系统5.1.2创建银行系统的 banktable、SelectMoney表Create table banktable(id int primary key,accounts nvarchar(50) not null,passnvarchar(50) not null,namenvarchar(50) not null,ca
18、rdnvarchar(50) not null,moenyfloat not null,)Create table SelectMoney(id int primary key,uname nvarchar(50) null,timeYear int null,timeDiana int null,timeDay nvarchar(50) null,fetchMoenyfloat null,depositMoney float null,TransferName nvarchar(50) null,TranferMoney float null,)5.1.3 存入 取出 转账 记录5.1.4
19、添加5.1.5 删除记录DELETEFROM banktableWHERE accounts=126;5.1.6 查找SELECT *FROM banktableSELECT accountsFROM banktable5.2系统c#界面(1) 登录进入界面。(2)登录后单击“转账”。(3) 登录后,单击“取款”。(4) 登录后,单击“查询”。(6) 登录后,单击“存款”。(7) 登录前,开户。第6章 总结心得通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有
20、理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要自己不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。这次的数据库课程设计,我们组负责的银行管理系统。这课题是自拟的。我们组实行的分工合作。我主要是负责数据库功能模块设计这部分。 从各种文档的阅读到需求分析、概要设计、数据库总体设计、代码编写与调试,我们都准备了好长时间。组内分工合作的整个过程,我亲身体验了一回系统的设计开发过程,分工合作的好处。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个系统的时候才
21、发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。 我想有这样的问题不止我一个,事后想想是一开始着手做的时候下手过于轻快,或者说是根本不了解自己要做的这个系统是给谁用的。因为没有事先做过仔细的用户调查,不知道整个业务的流程,也不知道用户需要什么功能就忙着开发,这是作为设计开发人员需要特别警惕避免的,不然会给后来的工作带来很大的麻烦,甚至可能会需要全盘推倒重来。所以以后的课程设计要特别注意这一块的设计。 经过组内讨论,我们确定的课题是银行管理系统。说实话,我对这个系统不是很了解。通过上网查找资料、相关文献的阅读,我对该系统有了大体的了解
22、。 在需求分析过程中,我们通过上网查资料,去图书馆查阅相关资料,结合我们的生活经验,根据可行性研究的结果和用户的需要,分析现有情况及问题。在一个月的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题,经过组内讨论。最终把它解决了。通过这次课程设计,我对数据库的设计更加熟练了。 通过本次课程设计,对SQL语言,数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表,学会了数据库的基本操作。 很多事情不是想象中的那么简单的,它涉及到的各种实体、属性、数据流程、数据处理等等。很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。在做关系模型转换的时
23、候碰到有些实体即可以认为是实体又可以作为属性,为了避免冗余,尽量按照属性处理了。 通过本次课程设计,我觉得不管做什么,始终都要相信自己。不要畏惧,不要怕遇到困难,什么都要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来它并没有你你想象的那么难。如果没有自信,没有目标,没有信心就很难把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标。从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想!这次设计的完成,使我对自己所学知识进一步的了解,同时通过实践发
24、现自己的不足,对知识的掌握及运用存在诸多的不完善。本系统也存在着很多不足,如系统十分简单,实现功能也不够完善,安全性问题也没有很好的解决。所以在今后的学习中我会继续努力,完善自我,同学的帮助、指导老师的用心辅导和学校的精心安排使这个课题能够顺利进行。但是,由于时间仓促以及本人水平有限,本系统还有很多不完善之处,也难免存在错漏,恳请老师谅解。参考文献1 陆琳 刘桂林.数据库技术与应用,中南大学出版社2 成先海.数据库基础与应用SQL Sever 2000,机械工业出版社。3 范立南,刘天惠主编的SQL Server 2005实用教程,清华大学出版社4罗福强、杨剑、张敏辉 c#程序设计经典教程 清
25、华大学出版社附页:C# 代码转账namespace bank public partial class ZhuanzhangFrm : Form string _name; public ZhuanzhangFrm(string name) InitializeComponent(); this._name = name; private void Form6_Load(object sender, EventArgs e) textBox3.Text = this._name; Dao dao=new Dao(); this.textBox4.Text = dao.GetMoney(sele
26、ct money from banktable where accounts= + this._name + ).ToString(); private void textBox2_KeyPress(object sender, KeyPressEventArgs e) e.Handled = e.KeyChar 9; if (e.KeyChar = (char)8) e.Handled = false; private void button2_Click(object sender, EventArgs e) Dao dao=new Dao(); if (dao.BoolName(Sele
27、ct * from banktable where accounts= + this.textBox1.Text + ) float foo = dao.GetMoney( select money from banktable where accounts=+ this.textBox3.Text +); if(foofloat.Parse(this.textBox2.Text) MessageBox.Show(您的余额不足转帐金额); return; float fol = dao.GetMoney( select money from banktable where accounts=+
28、 this.textBox3.Text + ) - float.Parse(this.textBox2.Text); float foo1 = dao.GetMoney( select money from banktable where accounts=+ this.textBox1.Text + ) + float.Parse(this.textBox2.Text); bool boo = dao.ExecSQL2(update banktable set money= + fol + where accounts= + this.textBox3.Text + update bankt
29、able set money= + foo1 + where accounts= + this.textBox1.Text + ); if(boo) System.DateTime current = new DateTime(); current = DateTime.Now; int _Year = current.Year; int _Month = current.Month; int _Day = current.Day; dao.ExecSQL (insert into selectMoney (uname,timeYear,timeDiana,timeDay,TransferNa
30、me,TransferMoney) values ( + this.textBox3.Text + , + _Year + , + _Month + , + _Day + , + this.textBox1.Text + , + float.Parse(this.textBox2.Text) + ); MessageBox.Show(转帐成功); this.Close(); else MessageBox.Show(转羇帐户名有误); private void button3_Click(object sender, EventArgs e)/取消 this.Close(); 查询namesp
31、ace bank public partial class SerchFrm : Form Dao dao = new Dao(); private string _name; SqlConnection con; SqlDataAdapter Ada; DataSet dst; SqlParameter par = new SqlParameter(); public SerchFrm(string name) InitializeComponent(); this._name = name; private void Form5_Load(object sender, EventArgs
32、e) ArrayList lis = dao.ExecSQL3(Select DISTINCT timeYear from selectMoney where uname= + this._name + ); foreach(int ss in lis) boBox1.Items.Add(ss); this.label4.Text = this._name; private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) this.button1.Enabled = false; this.label4.Text
33、= this._name; ArrayList liss = new ArrayList(); liss = dao.ExecSQL3(Select DISTINCT timediana from selectMoney where uname= + this._name + and timeYear= + int.Parse(boBox1.Text)+); boBox2.Items.Clear(); foreach(int oo in liss) boBox2.Items.Add(oo); boBox2.Enabled = true; private void button1_Click(o
34、bject sender, EventArgs e) Dao dao=new Dao(); this.con = dao.getCon(); dst = new DataSet(); this.Ada = new SqlDataAdapter(Select fetchMoney as 取款金额,depositMoney as 存款金额,TransferName as 转帐帐户,TransferMoney as 转帐金额 from selectMoney where uname= + this.label4.Text + and timeYear= + boBox1.Text + and tim
35、eDiana= + boBox2.Text + and timeDay= + boBox3.Text + , con); this.Ada.Fill(this.dst, selectMoney); this.dataGridView1.DataSource = this.dst.Tables0.DefaultView; private void button3_Click(object sender, EventArgs e) this.Close(); private void comboBox2_SelectedIndexChanged(object sender, EventArgs e
36、) Dao dao = new Dao(); ArrayList list = new ArrayList(); list =dao.ExecSQL3(Select DISTINCT timeDay from selectMoney where uname= + this.label4.Text + and timeYear= + int.Parse(boBox1.Text) + and timeDiana= + int.Parse(boBox2.Text); boBox3.Items.Clear(); foreach(int oo in list) boBox3.Items.Add(oo);
37、 boBox3.Enabled = true; private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) if (boBox1.Text.Equals() | boBox2.Text.Equals() | boBox3.Text.Equals() this.button1.Enabled = false; else this.button1.Enabled = true; 存储namespace bankpublic class SaveMoney : System.Windows.Forms.Formprivate System.Windows.Forms.Label label1;private System.Windows.Forms.TextBox textBox1;private System.