数据库银行管理系统报告书.docx
- 文档编号:12794219
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:26
- 大小:122.37KB
数据库银行管理系统报告书.docx
《数据库银行管理系统报告书.docx》由会员分享,可在线阅读,更多相关《数据库银行管理系统报告书.docx(26页珍藏版)》请在冰豆网上搜索。
数据库银行管理系统报告书
数据库银行管理系统报告书
课程设计报告书
课程名称:
«数据库系统原理»课程设计
题目:
银行储蓄治理系统数据库设计
系名:
信息工程系
专业班级:
软件技术2101
姓名:
学号:
指导教师:
2012年6月29日
课程设计任务书
学生姓名:
专业班级:
软件技技术2101
指导教师:
工作单位:
信息工程系
设计题目:
银行储蓄治理系统数据库设计
初始条件:
本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地明白得、把握和综合运用所学的知识。
结合具体的开发案例,明白得并初步把握系统分析、系统设计、系统实施的要紧环节和步骤以及软件文档的制作能力。
要求完成的要紧任务:
要求学生依照所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄治理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。
要紧任务:
用户有以下需求:
建立用户;建立账户档案,建立账户索引;完成日常交易信息检索、进行存款、转账、取款等工作,对取款、转账等操作,必需进行身份验证。
具体要求如下:
1.存折信息
数据包括:
存折的差不多信息包括:
户名、帐号、开户银行名称、开户日期、取款密码等。
2.账户存取明细
数据包括:
日期、摘要〔现存、现支、转存、利息〕、交易金额、余额、操作柜员编号。
3.检索系统
能依照户名、账号、交易日期、金额等进行查询。
4.取款
输入账号和密码后,能依照密码判定用户是否合法,能判定取款金额是否超过了账户余额,假如取款金额合法,就对该账号的余额信息进行更新。
5、存款
输入账号和存款金额后,能更新该账号的余额。
6、转账
输入账号和密码后,能依照密码判定用户是否合法,然后再输入对方的转账账户,并判定对方的转账账户是否合法,假如合法,再输入转账的金额,并能判定转账金额是否超过了账户余额,假如转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。
指导教师签字:
凌伟2021年6月25日
系主任签字:
2021年6月25日
名目
第一章需求分析
1.项目概述
1.1产品描述
1.2产品功能
1.3用户特点
2.功能需求
2.1需求
2.2开户功能
2.3取款功能
2.4查询功能
2.5修改功能
2.6销户功能
3.具体需求
4.设计
4.1概念结构设计
4.2数据库逻辑设计
4.3数据表建立的脚本
第二章设计概要
1.总体设计
1.1运行界面
2.源代码
3.心得体会
4.参考文献
第一章需求分析
1项目概述
1.1产品描述
本软件实现银行的活期储蓄存款业务。
整套软件由客户端程序和服务器端程序构成,客户端运行在面向个人业务的银行柜台的电脑上,银行职员输入相关信息并通过网络通讯向服务器发送要求,并同意服务器端程序的应答显示处理的结果。
服务器端处理客户端的各种业务要求。
要紧实现银行开户、销户、取款、存款、余额查询、转账、修改密码、等功能。
1.2产品功能
软件功能表
模块
功能
说明
主菜单
取款
开户
销户
余额
打印账户明细记录
修改密码
服务器端程序
存款
取款
开户
销户
查询
修改
1.3.用户特点
本软件的最终用户要紧面向银行柜台职员。
这些操作人员的教育水平是高中及以上学历,通过运算机操作的相关培训,能够熟练使用和操作电脑
2功能需求
1.主菜单功能:
输出主菜单〔包括开户、存款、取款、查询、转账、修改密码、销户、退出等功能〕供操作用户选择,然后依照用户的输入选择进入不同的系统功能界面。
2.开户功能:
银行职员在客户端输入开户的差不多信息,通过网络传送数据,在服务器处理后显示服务器端的处理结果。
开户成功后打印存折相关信息。
操作终止后返回主菜单界面。
存折的差不多信息包括:
户名、帐号、开户人号码、开户日期等。
3.存款功能:
要紧有存款金额与存款时刻,存款的账号等,供用户来填写数据存款。
5.取款功能:
包含取款金额,取款时刻等,供用户操作。
6.查询功能:
提供查询功能,能够查询用户余额,所得利息,与以往的存取款记录。
7.销户功能:
能通过账号与身份等验证来销户,说明销户的日期,方便记录。
8.修改功能:
能够通过原密码来改新密码。
总体结构图
2.1开户功能
引言:
接收客户端传送的数据,把数据储存到数据库中,通过服务器段的处理后把处理的结果传回给客户端。
输入:
1、接收客户端传送过来的数据。
处理:
1、自动生成账户ID,长度5位,从1开始编号,不足补0,例如00009、00103等。
自动生成账户ID要求唯独。
2、账户所有信息将储存数据库的账户信息表中。
3、依照开户金额生成一条账户的存款记录。
输出:
1、把服务器端处理的结果返回给客户端。
处理的结果包括开户是否成功,假如开户成功处理的结果中还包含生成的存款记录。
2.2存款功能
引言:
接收客户端传送的数据,增加账户余额并修改相关的数据库信息,把结果传回给客户端。
输入
处理
输出
1、客户端传送的数据。
1、验证账户ID是否存在。
2、修改对应账户ID的数据库信息。
1、把服务器端处理的结果返回给客户端。
2.3取款功能
引言:
接收客户端传送的数据,减少账户余额并修改相关的数据库信息,把结果传回给客户端。
输入
处理
输出
1、客户端传送的数据。
1、验证账户ID是否存在。
2、验证密码是否正确。
3、验证余额是否足够。
2、修改对应账户ID的数据库信息。
1、把服务器端处理的结果返回给客户端。
2.4查询功能
引言:
接收客户端传送的数据,查找账户信息,把结果传回给客户端。
输入
处理
输出
1、客户端传送的数据。
1、验证账户ID是否存在。
2、验证密码是否正确。
3、查找对应的账户信息。
1、把服务器端处理的结果返回给客户端。
2.5修改功能
引言:
接收客户端传送的数据,修改账户密码,把结果传回给客户端。
输入
处理
输出
1、客户端传送的数据。
1、验证账户ID是否存在。
2、验证密码是否正确。
3、查找对应的账户并修改密码。
1、把服务器端处理的结果返回给客户端。
2.6销户功能
引言:
接收客户端传送的数据,通过公式运算客户账户的利息,注销该客户账户。
把结果传回给客户端。
输入
处理
输出
1、客户端传送的数据。
1、验证账户ID是否存在。
2、验证密码是否正确。
3、运算利息,具体公式如下:
利息=存款额*存款天数*年利率/360需要注意的是,账户中的存款额在变化。
4、修改对应账户ID的数据库。
5、删除用户账户,不是做物理删除处理。
1、把服务器端处理的结果返回给客户端。
3具体需求
在进行向数据库文件提取数据时,要求数据记录正确,在往数据文件中添加数据时,要求输入数据正确,金额,身份证,账号等要需求设定字符数。
依照软件和用户组织的特性等,某些需求放在下面各项中描述。
4设计
4.1概念结构设计
4.1.1各个功能模块的E-R图
〔1〕开户E-R图
〔2〕销户E-R图
〔3〕存款E-R图
〔4〕取款E-R图
〔5〕查询E-R图
〔6〕修改E-R图
4.2数据库逻辑设计
将数据库的概念模型转换为关系模型
开户〔姓名、性别、密码、身份证号码、开户日期、联系〕
存款〔账号、存款金额、存款时刻〕
取款〔账号、密码、群款金额、取款时刻〕
修改密码〔账号、身份证、原密码、新密码〕
查询〔余额、利息、记录〕
销户〔账号、身份证、开户时刻、销户时刻〕
4.3数据表建立的脚本
createtablekh(
kh_namevarchar(8),
kh_IDint,
kh_phoneint,
kh_adressvarchar(20),
kh_mmint
);(开户表)
createtablecunk(
ck_kahaoint,
ck_mimaint,
ck_ckjin_eint
);(存款表)
createtablequkuan(
qk_kahaoint,
qk_mimaint,
qk_qkjin_eint
);(取款表)
createtablechaxun(
cx_yu_eint,
cx_jiluvarchar(50),
cx_lixiint
);(查询表)
createtablexiugai(
xg_namevarchar(8),
xg_IDint,
xg_y_mimaint,
xg_x_mimaint
);(修改密码)
createtablexiaohu(
xh_namevarchar(8),
xh_IDint,
xh_phoneint
);(销户表)
第二章概要设计
1总体设计
1.1运行界面
1.1.1进入主菜单界面图
主菜单界面
1.1.2选择输入的编号,1开户
开户菜单界面图
1.1.3存款界面图
图存款界面图
1.1.4取款界面图
取款界面图
1.1.5销户界面图
销户界面图
1.1.6修改界面图
修改界面图
1.1.7查询界面图
查询界面图
2.源代码
#ifndef _DB_STRUCT_H_
#define _DB_STRUCT_H_
/typedef struct account_
{
char acc_name[21]; //账户名
char id_card[19]; //身份证号
char pwd[7]; //账户密码
double money; //开账金额
char date[20]; //开账时刻
}T_ACCOUNT;
//存款数据
typedef struct saving_
{int acc_id; //账户ID
int opter_id; //操作员ID
double money; //存款金额
char date[20]; //操作时刻
}T_SAVING;
//取款数据
typedef struct withdraw_
{int acc_id; //账户ID
char pwd[7]; //账户密码
int opter_id; //操作员ID
double money; //取款金额
char date[20]; //操作时刻
}T_WITHDRAW;
//查询数据
typedef struct query_
{int acc_id; //账户ID
char pwd[7]; //账户密码
int opter_id; //操作员ID
char date[20]; //操作时刻
}T_QUERY;
//交易数据
typedef struct transfer_
{int acc_id; //账户ID
char pwd[7]; //账户密码
int acc_oid; //对方账户ID
double money; //交易金额
int opter_id; //操作员ID
char date[20]; //操作时刻
}T_TRANSFER;
//更换密码数据
typedef struct changepwd_
{int acc_id; //账户ID
char pwd[7]; //账户旧密码
char newpwd[7]; //账户新密码
int opter_id; //操作员ID
char date[20]; //操作时刻
}T_CHANGEPWD;
//销户数据
typedef struct destroy_
{int acc_id; //账户ID
char pwd[7]; //账户密码
int opter_id; //操作员ID
char date[20]; //操作时刻
}T_DESTROY;
//明细数据
typedef struct detail_
{int acc_id; //账户ID
char s_date[11]; //起始日期
char e_date[11]; //终止日期
}T_DETAIL;
//明细数据
typedef struct detailall_
{char s_date[11]; //起始日期
char e_date[11]; //终止日期
}T_DETAILALL;
//接收明细数据
typedef struct recv_detail_
{char type_id[20]; //类型ID
char opt_date[20]; //操作时刻
char d_money[20]; //处理金额
char b_money[20]; //余额
char staffer_id[20]; //操作员ID
char oth_id[20]; //对方账户ID
}RECV_DETAIL;
//接收明细数据
typedef struct recv_detail_all_
{int acc_id; //账户ID
char type_id[20]; //类型ID
char opt_date[20]; //操作时刻
double d_money; //处理金额
double b_money; //余额
int staffer_id; //操作员ID
int oth_id; //对方账户ID
}RECV_DETAIL_ALL;
//黑名单数据
typedef struct black__
{int acc_id; //账户ID
}T_BLACK;
#define CLIENT_EXIT 0
#define OP_ACC 1
#define SAVING 2
#define WITHDRAW 3
#define QUBALANCE 4
#define TRANSFER 5
#define CHAPWD 6
#define DESTROY 7
#define DETAILNOTE 8
#define DEDATA 9
#define BLACKLIST 10
#define NOTEALL 11
//包头
typedef struct pack_head
{int len; //数据长度
int type; //业务类型
}PACK_HEAD;
#endif //_DB_STRUCT_H_
// MySocket.cpp:
implementation of the MySocket class.
#include "MySocket.h"
// Construction/Destruction
MySocket:
:
MySocket()
{InitSocket();
cout<<"init constructor"< }MySocket: : ~MySocket() {} int MySocket: : InitSocket(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err ! = 0 ) { return -1; } if ( LOBYTE( wsaData.wVersion ) ! = 2 || HIBYTE( wsaData.wVersion ) ! = 2 ) { WSACleanup( ); return -1; } s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); return s; } int MySocket: : ConnectSocket(const char *ip,int port){ struct sockaddr_in addr_far; addr_far.sin_family = AF_INET; addr_far.sin_port = htons(port); addr_far.sin_addr.s_addr = inet_addr(ip); memset(addr_far.sin_zero,'\0',8); cout<<"ip: "< "< return connect(s,(struct sockaddr*)&addr_far,sizeof(struct sockaddr_in)); } void MySocket: : RecvTCPLoop(char* n_data, int max_count) {int ret; while (max_count>0) {ret=recv(s,n_data,max_count,0); if (ret==0) {break;} if (ret>0) {max_count-=ret; if (max_count == 0) break; n_data+= ret; }}} void MySocket: : SendTCPLoop(char* n_data, int max_count) {int ret; while (max_count>0) {ret=send(s,n_data,max_count,0); if (ret==0) {break; } if (ret>0) {max_count-=ret; if (max_count == 0) break; n_data+= ret; }}} void MySocket: : Close(){ if(s! =NULL)closesocket(s); } #include "Tools.h" #pragma comment(lib,"ws2_32.lib") #include using namespace std; #include "DBStruct.h" #include int main(){ MySocket client = Tools: : mys; int ret = client.ConnectSocket("127.0.0.1",7000); if (ret == SOCKET_ERROR) //连接服务器 {cout << "Can not connect to server! " << endl; return -1; } cout<<"connect to server"< //数据打包 T_ACCOUNT t_acc; strcpy(t_acc.acc_name,"wepull"); strcpy(t_acc.id_card,"19801012"); strcpy(t_acc.pwd,"600100"); t_acc.money=2030; strcpy(t_acc.date,"2010-03-08"); PACK_HEAD p_h; p_h.len=sizeof(T_ACCOUNT); p_h.type=OP_ACC; const int max_count=sizeof(T_ACCOUNT)+sizeof(PACK_HEAD); char data[max_count]; memset(data,'\0',max_count); Tools: : Package((char*)&t_acc,p_h,data); client.SendTCPLoop(data,max_count);//发送数据 int ret_acc_id=0; client.RecvTCPLoop((char*)&ret_acc_id,sizeof(int));//同意返回数据 cout<<"ret_acc_id: "< //client.Close(); //_getch(); //PACK_HEAD p_h; //exit p_h.len=0; p_h.type=CLIENT_EXIT; client.SendTCPLoop((char *)&p_h,sizeof(PACK_HEAD)); cout << "Already exit the system.Thank you for using." << endl; exit(0); return 0; } #include using namespace std; #include "db.h" #include #pragma comment(lib,"Ws2_32.lib") //接收数据 int RecvTCPLoop(SOCKET s, char* n_data, int max_count) {int ret; while (max_count>0) {ret=recv(s,n_data,max_count,0); if (ret==0) {break;} if (ret>0) {max_count-=ret; if (max_count == 0) break; n_data+= ret; }} return ret; }//发送数据 void SendTCPLoop(SOCKET s, char* n_data, int max_count) {int ret; while (max_count>0) {ret=send(s,n_data,max_count,0); if (ret==0) {break;} if (ret>0) {max_count-=ret; if (max_count == 0) break; n_da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 银行 管理 系统 报告书