




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*大学课程设计报告书课程名称:数据库系统原理课程设计 题 目: 银行储蓄管理系统数据库设计 系 名: 信息工程系 专业班级: 软件技术2101 姓 名: 学 号: 指导教师: 2012年 6 月 29日课程设计任务书学生姓名: 专业班级:软件技技术2101 指导教师: 工作单位: 信息工程系 设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。主要任务:用户有以下需求:建立用户;建立账户档案,建立账户索引;完成日常交易信息检索、进行存款、转账、取款等工作,对取款、转账等操作,必需进行身份验证。具体要求如下:1 存折信息 数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。2账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。 3 检索系统 能根据户名、账号、交易日期、金额等进行查询。4取款 输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。5、存款 输入账号和存款金额后,能更新该账号的余额。6、转账 输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。指 导 教 师 签 字: 凌伟 2012年 6月 25日系 主 任 签 字: 2012年 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数据表建立的脚本create table kh(kh_namevarchar(8),kh_IDint,kh_phoneint,kh_adressvarchar(20),kh_mmint );(开户表)create table cunk(ck_kahaoint,ck_mimaint,ck_ckjin_eint); (存款表)create table qukuan(qk_kahaoint,qk_mimaint,qk_qkjin_eint); (取款表)create table chaxun(cx_yu_eint,cx_jilu varchar(50),cx_lixiint); (查询表)create table xiugai(xg_namevarchar(8),xg_IDint,xg_y_mimaint,xg_x_mimaint); (修改密码)create table xiaohu(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_/typedefstructaccount_characc_name21;/账户名charid_card19;/身份证号charpwd7;/账户密码doublemoney;/开账金额chardate20;/开账时间T_ACCOUNT;/存款数据typedefstructsaving_intacc_id;/账户IDintopter_id;/操作员IDdoublemoney;/存款金额chardate20;/操作时间T_SAVING;/取款数据typedefstructwithdraw_intacc_id;/账户IDcharpwd7;/账户密码intopter_id;/操作员IDdoublemoney;/取款金额chardate20;/操作时间T_WITHDRAW;/查询数据typedefstructquery_intacc_id;/账户IDcharpwd7;/账户密码intopter_id;/操作员IDchardate20;/操作时间T_QUERY;/交易数据typedefstructtransfer_intacc_id;/账户IDcharpwd7;/账户密码intacc_oid;/对方账户IDdoublemoney;/交易金额intopter_id;/操作员IDchardate20;/操作时间T_TRANSFER;/更改密码数据typedefstructchangepwd_intacc_id;/账户IDcharpwd7;/账户旧密码charnewpwd7;/账户新密码intopter_id;/操作员IDchardate20;/操作时间T_CHANGEPWD;/销户数据typedefstructdestroy_intacc_id;/账户IDcharpwd7;/账户密码intopter_id;/操作员IDchardate20;/操作时间T_DESTROY;/明细数据typedefstructdetail_intacc_id;/账户IDchars_date11;/起始日期chare_date11;/结束日期T_DETAIL;/明细数据typedefstructdetailall_chars_date11;/起始日期chare_date11;/结束日期T_DETAILALL;/接收明细数据typedefstructrecv_detail_chartype_id20;/类型IDcharopt_date20;/操作时间chard_money20;/处理金额charb_money20;/余额charstaffer_id20;/操作员IDcharoth_id20;/对方账户IDRECV_DETAIL;/接收明细数据typedefstructrecv_detail_all_intacc_id;/账户IDchartype_id20;/类型IDcharopt_date20;/操作时间doubled_money;/处理金额doubleb_money;/余额intstaffer_id;/操作员IDintoth_id;/对方账户IDRECV_DETAIL_ALL;/黑名单数据typedefstructblack_intacc_id;/账户IDT_BLACK;#defineCLIENT_EXIT0#defineOP_ACC1#defineSAVING2#defineWITHDRAW3#defineQUBALANCE4#defineTRANSFER5#defineCHAPWD6#defineDESTROY7#defineDETAILNOTE8#defineDEDATA9#defineBLACKLIST10#defineNOTEALL11/包头typedefstructpack_headintlen;/数据长度inttype;/业务类型PACK_HEAD;#endif/_DB_STRUCT_H_/MySocket.cpp:implementationoftheMySocketclass.#includeMySocket.h/Construction/DestructionMySocket:MySocket()InitSocket();coutinitconstructorendl;MySocket:MySocket()intMySocket:InitSocket()WORDwVersionRequested;WSADATAwsaData;interr;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);returns;intMySocket:ConnectSocket(constchar*ip,intport)structsockaddr_inaddr_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);coutip:ip,port:port0) ret=recv(s,n_data,max_count,0);if(ret=0)break;if(ret0)max_count-=ret;if(max_count=0)break;n_data+=ret;voidMySocket:SendTCPLoop(char*n_data,intmax_count)intret;while(max_count0) ret=send(s,n_data,max_count,0);if(ret=0)break;if(ret0)max_count-=ret;if(max_count=0)break;n_data+=ret;voidMySocket:Close()if(s!=NULL)closesocket(s);#includeTools.h#pragmacomment(lib,ws2_32.lib)#includeusingnamespacestd;#includeDBStruct.h#includeintmain()MySocketclient=Tools:mys;intret=client.ConnectSocket(127.0.0.1,7000);if(ret=SOCKET_ERROR)/连接服务器coutCannotconnecttoserver!endl;return-1;coutconnecttoserverendl;/数据打包T_ACCOUNTt_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_HEADp_h;p_h.len=sizeof(T_ACCOUNT);p_h.type=OP_ACC;constintmax_count=sizeof(T_ACCOUNT)+sizeof(PACK_HEAD);chardatamax_count;memset(data,0,max_count);Tools:Package(char*)&t_acc,p_h,data);client.SendTCPLoop(data,max_count);/发送数据intret_acc_id=0;client.RecvTCPLoop(char*)&ret_acc_id,sizeof(int);/接受返回数据coutret_acc_id:ret_acc_idendl;/ client.Close(); / _getch();/PACK_HEADp_h;/exitp_h.len=0;p_h.type=CLIENT_EXIT;client.SendTCPLoop(char*)&p_h,sizeof(PACK_HEAD);coutAlreadyexitthesystem.Thankyouforusing.endl;exit(0);return0;#includeusingnamespacestd;#includedb.h#include#pragmacomment(lib,Ws2_32.lib)/接收数据intRecvTCPLoop(SOCKETs,char*n_data,intmax_count)intret;while(max_count0) ret=recv(s,n_data,max_count,0);if(ret=0)break;if(ret0)max_count-=ret;if(max_count=0)break;n_data+=ret;returnret;/发送数据voidSendTCPLoop(SOCKETs,char*n_data,intmax_count)intret;while(max_count0) ret=send(s,n_data,max_count,0);if(ret=0)break;if(ret0)max_count-=ret;if(max_count=0)break;n_data+=ret;/线程处理函数voidThreadFun(LPVOIDparam)SOCKETs_accept=*(SOCKET*)param;/ stringwelcome(welcometomyserver!);/ send(c_s,welcome.c_str(),welcome.size(),0);PACK_HEADp_h;while(1)intret=RecvTCPLoop(s_accept,(char*)&p_h,sizeof(PACK_HEAD);/接收包头if(ret=0)break;coutretp_h.lenp_h.typeendl;/根据业务类型进行处理if(p_h.type=CLIENT_EXIT)/客户端退出break;elseif(p_h.type=OP_ACC)/开账T_ACCOUNTt_acc;RecvTCPLoop(s_accept,(char*)&t_acc,p_h.len);coutt_acc.acc_namet_acc.id_cardt_acc.pwdt_acc.moneyt_acc.dateendl;intret_val=1;/ret_val=db_insert_account(t_acc.acc_name,t_acc.id_card,t_acc.pwd,t_acc.money,t_acc.date);SendTCPLoop(s_accept,(char*)&ret_val,sizeof(int); coutclientexitendl;closesocket(s_accept);intmain()/*socket版本协商*/WORDwVersionRequested;WSADATAwsaData;interr;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;/*socket初始化*/SOCKETs=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(s=INVALID_SOCKET)coutsockerr!endl;return-1;structsockaddr_inaddr;addr.sin_family=AF_INET;addr.sin_addr.s_addr=INADDR_ANY;addr.sin_port=htons(7000);memset(addr.sin_zero,0,8);/reuseaddressintopt=1;setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(constchar*)opt,sizeof(opt);intret=0;ret=bind(s,(structsockaddr*)&addr,sizeof(sockaddr_in);if(ret=SOCKET_ERROR)coutbinderr!endl;return-1;ret=listen(s,10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国际商务谈判师综合能力考核试题及答案解析
- 2025年泵站招聘水管员模拟题集
- 课件中Flash尺寸调整
- 2025年实验室信息安全基础测试题集
- 2025年安全培训体系构建题集
- 2025年宠物医疗AI工程师核心笔试题
- 2025年机械制图员面试常见问题及标准答案集
- 2025年河道保洁员招聘笔试冲刺模拟题
- 2025年消防安全应急演练考核题及答案
- 2025年安全生产评估多选题及答案
- 秋季疾病预防与健康生活指南
- 湖北校服采购管理制度
- 2025-2030年中国CRISPR和CRISPR相关基因行业市场现状供需分析及投资评估规划分析研究报告
- 疲劳恢复物理手段-洞察及研究
- 学校动火作业管理制度
- 2025乡村医生考试试题及答案
- 法人更换免责协议书
- 2025至2030年中国程控线路板市场分析及竞争策略研究报告
- 高三化学家长会课件
- 光伏电站安全培训要点
- 分包安全管理
评论
0/150
提交评论