银行管理系统实验报告

时间:2024.4.13

目 录

一、需求分析 ............................................................................................................ 2

二、程序的主要功能 ................................................................................................ 2

三、系统总框架图 .................................................................................................... 2

四、程序类的说明 .................................................................. 错误!未定义书签。

五、模块分析 ............................................................................................................ 2

六、存在的不足与对策 ............................................................................................ 4

七、程序源代码 ........................................................................................................ 4

一、需求分析

在现代化的经济发展中,银行管理系统有着十分重要的作用。不论是什么阶层的群众都会有对银行有所需求,将积蓄存进银行是最安全有效的手法。所以这就需要银行有一个缜密的银行管理系统。

二、程序的主要功能

1、添加功能:

办理一个新卡,得到卡号,就能进行下一步操作。

2、存款功能:

能够存入金额,并选择是否显示余额。

3、取款功能:

能够取出你想要的金额,并选择是否显示余额。

4、显示功能:

显示存取款金额,并选择是否显示余额。

5、查找功能:

根据你办理的卡号,可以查询余额。

三、系统总框架图

银行管理系统实验报告

图1 系统总框架图 四、1.Save

void Save()

{

FILE *fp;

if((fp = fopen("data","wb")) == NULL)

{

cout<<endl<<"无法打开文件"<<endl;

return;

2

}

for(int i = 0;i<1000;i++)

{

for(int j = 0;j<10;j++)

{

fwrite(&CardS[i][j],sizeof(CardS[i][j]),4,fp);

}

}

fclose(fp);

}

2.办理新卡

void NewCard()

{

int i = 0;

if(Card[i][0] == 0)

{

Card[i][0] = (i+1)*8+(i+1)*74+(i+1)*213+(i+1)*2432+(i+1)*35446+(i+1)*409432+123456789; cout<<endl<<"您的卡号为"<<Card[i][0]<<"。"<<endl<<endl;

cout<<"请选择您要办理的业务:"<<endl<<endl<<"输入1:存款; 输入2:取款; 输入3:返回; 输入4:退出:"<<endl;

Service2(0);

}

else

{

for(i = 0;Card[i][0] != 0;i++)

{}

if(i == M)

{

cout<<"对不起,无空储蓄卡。"<<endl;

Start();

}

else

{

Card[i][0] = (i+1)*8+(i+1)*74+(i+1)*213+(i+1)*2432+(i+1)*35446+(i+1)*409432+123456789; cout<<endl<<"您的卡号为"<<Card[i][0]<<"。"<<endl<<endl;

cout<<"请选择您要办理的业务:"<<endl<<endl<<"输入1:存款; 输入2:取款; 输入3:返回; 输入4:退出:"<<endl;

Service2(i);

}

}

}

3

五、模块分析

1. 添加模块

办理一个新的卡,得到卡号。

2. 存取模块

输入存入的金额,并选择是否显示余额。取款时输入所取金额,并选择是否显示余额。

3.保存模块

将存取信息保存,方便查询余额。

六、存在的不足与对策

由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,还只能实现一些简单的存款,取款与查询余额功能。这些不足请老师多多谅解。今后设计者会更多的学习编程技巧,不断的提高程序设计水平。

七、程序源代码

详见附件

源代码可以免费加Q473479100获取。

4


第二篇:银行账户管理系统实验报告-打印版


课 程 设 计

课程名称:    JAVA课程设计                     

设计题目:    银行账户管理系统                  

学    院:    信息工程与自动化                  

专    业:    计算机科学与技术                  

年    级:    20##级                           

学生姓名:    ***                               

指导教师:    ****                              

日    期:    20##.09                           

   

教 务 处 制

课 程 设 计 任 务 书

 信息工程与自动化  学院 计算机科学与技术 专业  20##   年级

学生姓名:  陈明华   

课程设计题目:  银行账户管理系统                             ­­­

课程设计主要内容:

本例是模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。计算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。鉴于本系统的特殊性,还需要本程序有良好的保密性。

设 计 指 导 教 师 (签字):                   

教学基层组织负责人(签字):                   

年      月      日

摘要

本例是模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。计算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。鉴于本系统的特殊性,还需要本程序有良好的保密性。

银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。

本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程。

目录

一.  设计目的... 4

二. 设计内容... 4

三.概要设计... 5

1.功能模块图;... 5

2.各个模块详细的功能描述。... 5

四.详细设计... 7

1.功能函数的调用关系图... 7

2.重点设计及编码... 8

五.测试数据及运行结果... 14

1.正常测试数据和运行结果... 14

2.异常测试数据及运行结果... 17

六.调试情况,设计技巧及体会... 18

1.改进方案... 18

2.体会... 18

七.参考文献... 18

八.附录:... 18

一.  设计目的

银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。

本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程。

二. 设计内容

    分别完成银行业务功能、ATM功能和用户管理功能,并设计数据库以支持这些功能的实现,最后通过代码进行具体实现以及数据库链接。

    所用数据库:SQL Server 2008

    开发语言:Java

    数据库设计:使用了六张表,分别为:管理员表(admin)、ATM机表(ATM)、ATM机出纳

表(ATMOutIn)、银行柜台出纳表(BankOutIn)、银行卡表(card)、用户

表(users)。

三个触发器,分别为:冻结用户账号操作(userstatus_update)、

ATM机存取款操作(ATMOutIn_insert)和

银行存取款操作(BankOutIn_insert)。

一个视图、一个虚表:用户操作查询

(allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunq

uSummary,balanceMoney))。

银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查询、办卡和挂失功能。

ATM功能:ATM机连接系统数据库,实现用户登录、存(取)款以及用户查询功能。

用户管理:通过登录功能获得系统数据库中自己的用户信息,并有权限修改系统允许用

户修改的信息。

三.概要设计

1.功能模块图;

   

2.各个模块详细的功能描述。

    银行业务功能:

Ø  管理员登录

在数据库中添加管理员数据,管理员可登录系统并有权限完成与用户相关所有操作。

Ø  开户

收集用户信息,为用户分配账号并通过程序在系统数据库中添加用户信息。

Ø  销户

根据账号在数据库中查找用户,确认用户身份信息后,管理员通过程序删除数据库中用户信息。

Ø  存款

根据卡号在数据库中查找用户,依据存入金额,管理员通过程序修改数据库中用户的金额信息。

Ø  取款

根据卡号在数据库中查找用户,通过密码确认用户,依据取出金额,经判断取出金额合法后(不大于余额),管理员通过程序修改数据库中用户的金额信息。

Ø  查询

以用户卡号、账号或身份证号之一为关键字,在数据库中查找用户,依据业务需求显示用户信息(开户人信息、用户近期操作记录)。

Ø  办卡

为用户账号绑定卡号,由管理员通过程序将卡号以及用户设置的密码存入系统数据库相应用户信息中。

Ø  挂失

根据账号在数据库中查找用户,用户提供登录密码确认用户身份信息后,管理员通过程序将数据库中用户卡状态信息由“使用”改为“冻结”。

    ATM功能:

Ø  登录

ATM机依据用户卡号和密码在系统数据库中查询用户信息,在信息匹配的情况下进入用户操作界面。

Ø  存款

ATM机依据用户存入金额,通过程序修改数据库中用户的金额信息。

Ø  取款

ATM机依据取出金额, 通过对比本机余额和数据库中用户余额,若金额合法则通过程序修改数据库中用户的金额信息,否则弹出错误信息。

    用户管理:

Ø  登录

依据用户账号和密码由管理员或ATM机在系统数据库中查询用户信息,在信息匹配的情况下用户获得用户管理权限。

Ø  查询个人信息

打印数据库中记录的用户个人信息。

Ø  修改个人信息

收集用户新信息,由管理员操作,修改数据库中用户拥有修改权限的相应数据。

Ø  查询近期操作

依据用户提供所要查询时间范围,由管理员或ATM机通过程序查询系统数据库中用户的操作记录。

四.详细设计

1.功能函数的调用关系图

银行账户管理系统实验报告-打印版

2.重点设计及编码

数据库设计:

create database account

use account      

create table users

(

userId varchar(10) not null,  /*用户账号,主键*/

userName varchar(10) not null,  /*用户名*/

userPassword varchar(10) not null,   /*密码*/

idNo varchar(20) not null,     /*身份证号码,唯一*/

userMoney numeric(10,2) default 0,  /*总金额,不能小于零*/

userStatus varchar(4) check (userStatus='使用' or userStatus='冻结') default '使用',             /*用户状态(使用,冻结),默认是使用中*/

userAddress varchar(30) not null,  /*用户地址*/

startTime DateTime,   /*开户时间,应该是开户时的系统时间,不应该人为输入*/

primary key(userId),     /*设置主键*/

)

--用户的状态一旦变成冻结状态,那么卡也应该不能使用

create trigger userstatus_update

on users

after update

as

if update(userStatus)

begin

if (select userStatus from inserted) = '冻结'

update card set cardStatus = '冻结' where userId = (select userId from deleted)

if (select userStatus from inserted) = '使用'

update card set cardStatus = '使用' where userId = (select userId from deleted) 

end

create table card

(

cardId varchar(20) primary key, /*卡号,主键*/

userId varchar(10) not null,  /*用户账号,外键,参照users表的userId*/

cardPassword varchar(10) not null, /*卡密码*/

cardStatus varchar(5) check (cardStatus in ('使用','冻结','挂失')) default '使用',    /*卡状态(使用,冻结,挂失),默认是使用*/

--cardMoney numeric(10,2) check(cardMoney >=0),

foreign key (userId) references users(userId)

on delete cascade      /*当删除用户帐号时,他的卡号会及联删除*/

)

--管理员表

create table admin

(

adminId varchar(10) not null primary key,   /*操作员号码,主键*/

adminName varchar(10) not null,  /*操作员名字*/

adminPassword varchar(20) not null, /*操作员密码*/

BankAddress varchar(20) not null  /*操作员所在银行地址*/

)

insert into admin values('001','沈万三','123','工商银行长安分行')

--创建一个ATM表,至少应该含有编号以及ATM机里的总金额

create table ATM

(ATMId varchar(10)  primary key,    /*ATM机ID*/

 ATMMoney numeric(20,2) check (ATMMoney >=0),  /*ATM机里的总钱数,不允许用户的取款数大于它的总钱数,所以它的总钱数不能小于*/ 

 ATMAddress varchar(20)   /*ATM机的地点*/

)

insert into ATM values('000', 10000, '长安区')

insert into ATM values('111', 50000, '长安区')

--用户ATM机存取款信息表

create table ATMOutIn    

(

ATMId varchar(10),        /*取款机号,外键,参照ATM表的ATMId*/

cardId varchar(20) not null, /*用户卡号,外键,参照card表的cardId*/

ATMTime DateTime,   /*在ATM机存取款时间(应该是进行存取款时的系统时间*/

ATMCunQu numeric(10,2),   /*ATM机存款金额*/

ATMSummary varchar(30),  /*存取款摘要*/

balanceMoney  numeric(10,2) default 0,  /*经过操作后账号中的金额*/

foreign key(ATMId) references ATM(ATMId) on delete cascade,

foreign key(cardId) references card(cardId) on delete cascade

)

--创建一个触发器,当产生这一信息时,账号上的钱也会随之改动

create trigger ATMOutIn_insert

on ATMOutIn

after insert

as

  declare @num_rows int

  select @num_rows = @@rowcount

if @num_rows = 0  /*未插入成功*/

   return

if @num_rows>0   /*数据插入成功*/

   begin

   update users set userMoney = userMoney + (select ATMCunQu from Inserted)  where userId in (select userId from card c,inserted i where c.cardId = i.cardId)

   update ATM set ATMMoney = ATMMoney + (select ATMCunQu from Inserted) where ATMId in (select ATMId from inserted)   /*对应的atm机的总金额也会随之改变*/

  

declare @balanceMoney numeric(10,2)   /*账号余额*/

   select @balanceMoney = (select userMoney from users where userId in (select userId from card c,inserted i where c.cardId = i.cardId))

   update  ATMOutIn set balanceMoney = (@balanceMoney) where cardId in (select cardId from inserted) and atmtime in (select atmtime from inserted)   /*完成了账号金额的修改,再将新的金额插入到信息表中,就是剩余的总余额了(注意修改的只是一个账号此次的操作*/

end

--用户银行存取款信息信息表

create table BankOutIn 

(

adminId varchar(10) not null,   /*操作员号码,外键,参照操作员表的adminId*/

cardId varchar(20) not null,  /*用户卡号,外键,参照用户信息表*/

BankTime DateTime,  /*银行存款时间*/

BankCunQu numeric(10,2),   /*银行存款*/

BankSummary varchar(30),

balanceMoney  numeric(10,2) default 0,  /*经过操作后账号中的金额*/

foreign key (adminId) references admin(adminId) on delete cascade,

foreign key (cardId) references card(cardId) on delete cascade

)

--创建一个触发器,当插入这条数据时会自动修改users表里的金额信息

create trigger BankOutIn_insert

on BankOutIn

for insert

as

  declare @num_rows int

  select @num_rows = @@rowcount

if @num_rows = 0  /*未插入成功*/

   return

if @num_rows>0   /*数据插入成功*/

   begin

   update users set userMoney = userMoney + (select BankCunQu from Inserted)  where users.userId = (select userId from card c,inserted i where c.cardId = i.cardId)

   declare @balanceMoney numeric(10,2)

   select @balanceMoney = (select userMoney from users where userId = (select userId from card c,inserted i where c.cardId = i.cardId ))

   update  BankOutIn set balanceMoney = (@balanceMoney) where cardId = (select cardId from inserted) and banktime = (select banktime from inserted)   /*完成了账号金额的修改,再将新的金额插入到信息表中,就是剩余的总余额了(要注意这个信息总额的唯一性)*/

  

   end

--总信息可以用其它的表推出,建一个视图,一个虚表,来综合他们的信息

create view allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney)

as

select userId,bankTime,BankAddress,bankCunqu,bankSummary,balanceMoney

from bankoutin b,admin a,card c

where b.adminId = a.adminId and c.cardId = b.cardId

union

select userId,ATMTime, ATMAddress,ATMCunqu,ATMSummary,balanceMoney

from atmoutin a,card c,ATM atm

where c.cardId = a.cardId and a.atmid = atm.atmid 

数据库链接:

package com.connection;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

 * 定义一个数据库的连接及关闭资源的类

 * @author Administrator

 *

 */

publicclass DBConnection {

    /**

     * 创建数据库的链接

     * @return  返回一个数据库的链接

     */

    publicstatic Connection getConnection(){

        Connection conn = null;

       

        try {

            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  //加载数据库驱动

           

            String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=account";

            String username = "sa";   //数据库用户名

            String password = "1126";  //数据库密码

           

            conn = DriverManager.getConnection(url,username,password);   //获得数据库的链接

           

        } catch (ClassNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }  catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return conn;

    }

    /**

     * 关闭数据库资源

     * @param obj  数据库打开的资源对象(在此处用Object,因为链接数据库是会打开多个资源)

     */

    publicstaticvoid closeObject(Object obj){

        if(obj != null){

            if(obj instanceof ResultSet){

                try {

                    ((ResultSet) obj).close();

                } catch (SQLException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

   

            if(obj instanceof PreparedStatement){

                try {

                    ((PreparedStatement) obj).close();

                } catch (SQLException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

-

            if(obj instanceof Connection){

                try {

                    ((Connection) obj).close();

                } catch (SQLException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }

            }

        }

    }

}

程序入口函数:

package com.main;

import com.frame.MainFrame;

publicclass Begin {

    /**

     * @param args

     */

    publicstaticvoid main(String[] args) {

        // TODO Auto-generated method stub

        newMainFrame();

    }

}

五.测试数据及运行结果

1.正常测试数据和运行结果

管理员登录:

登录名:沈万三   登录密码:123

    管理员操作:

1.  查询用户信息

2.  开户

ATM机操作

1.  登录

2.  查询

2.异常测试数据及运行结果

    1.查询失败

         

3.  ATM机存款失败

六.调试情况,设计技巧及体会

1.改进方案

    本系统基本实现了银行账户管理的基本功能,不过在细节方面处理的不够完善,细化功能也做的不够好,此外,交互界面美工基本没做。对于此,在接下来的时间里我将对系统不断完善,尽力做到尽善尽美。

2.体会

    在课程设计的两周中,我在数据库设计以及代码编写方面都遇到了不少问题,所幸在同学们的帮助下以及借助网络查找相应问题,总算按时完成了课程设计关于上机的任务。

    在此过程中我通过数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程,获益匪浅。

七.参考文献

    《数据库系统原理与应用》 ——孟彩霞、乔平安、张荣 编著

八.附录:

       源码见电子版

更多相关推荐:
博客管理系统实验报告

河南工程学院实习报告课程名称ASPNET程序设计实训设计题目博客管理系统系部计算机学院班级信息管理1133学号姓名实习时间20xx123020xx13指导教师李艳玮20xx年1月3日实习训报告评语等级评阅人职称...

学生信息管理系统实验报告

西安郵電學院数据库原理及应用设计报告题目:学生信息管理系统一.设计目的学生管理系统是高校管理工作中一项非常重要的组成部分。用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各…

信息管理系统实验报告一

2Intuitiveampeasytouse直觉式且容易使用的操作界面让百忙中的高阶主管透过简单的表示方式就可了解企业整体概况不需额外付出学习成本3Granularityofviews可提供主管各种角度的分析1...

c++图书管理系统实验报告和源代码

综合实践报告课程名称程序设计综合实训设计题目图书管理系统姓名学号专业班级指导老师完成日期1综合实践报告1设计任务11设计目的运用所学知识完成图书馆管理系统通过实践加强对所学知识的理解和巩固12设计内容建立图书馆...

员工管理系统实验报告

员工管理系统专业班级学号姓名实验报告电子信息工程241019xx441周祥一系统定义企业员工信息管理系统是一个企业单位不可缺少的部分它的内容对于企业的决策者和管理者来说都至关重要所以员工信息管理系统应该能够为用...

信息管理系统实验报告

信息管理系统实验报告班级09财务管理34班成员章雅青20xx101238三班温小美20xx101253四班高艺佳20xx101284三班温丽妮20xx101302四班指导老师胡蓉食堂信息系统调查大纲一引言二系统...

商品管理系统实验报告1

湖南人文科技学院经济与管理科学系课程设计说明书课程名称网络数据库技术与应用题目商品管理系统年级专业班20xx级经济与管理科学系电子商务1班学生姓名蔡慧敏毛修丽谢江霞学号指导教师陈刚开题时间20xx617完成时间...

课程管理系统实验报告

数据库原理实践报告学生管理系统开发课程管理系统专业班级姓名学号20xx年12月摘要关键词VB60data控件DBGrid控件Access20xx课程管理系统随着计算机技术日渐成熟它已进入人类社会的各个领域并发挥...

超市管理系统实验报告

超市管理系统目录论文摘要211社会背景412公司背景二可行性研究21问题定义622技术可行性研究623经济可行性研究724操作可行性研究725系统的需求分析7三需求分析31设计思想932设计原则933业务流程分...

学生管理系统实验报告

学生管理系统实验报告实验目的学习学生管理系统java程序编程编写学生管理系统程序一实验环境在软件Eclipse运行环境下运行二实验步骤1在Eclipse环境中创建一个java工程然后创建学生管理系统类并在这类中...

学生管理系统 实验报告

华南农业大学信息学院设计性综合性实验一实验目的1掌握闯将WEB数据库应用程序的方法2熟悉在ASPNET下数据表记录基本操作3熟悉GRIDVIEW数据控件的使用4熟悉数据源控件SQLDATASOURSE的使用二实...

学生成绩管理系统实验报告书

成都信息工程大学软件工程学院Oracle学生成绩管理系统实验五学生成绩管理系统数据库设计实验报告一实验目的运用了数据库原理和Oracle数据库知识针对具体的数据库设计工具完成数据库的设计与编程二实验内容学生成绩...

管理系统实验报告(30篇)