数据库课程设计-银行储蓄系统完全代码
软件工程银行储蓄管理系统设计[2]
![软件工程银行储蓄管理系统设计[2]](https://img.taocdn.com/s3/m/78ea44294b35eefdc8d33342.png)
软件实现报告1.设计目的该阶段是系统开发过程的最后一个阶段,按照前三个阶段的设计,在这个阶段要选择适当的计算机语言来编写程序以及实现该软件的各项功能,并且对软件设计测试方法。
2.软件源代码如下:(1)银行储蓄系统Private Sub cunkuan0_Click()Unload Mecunkuan.ShowEnd SubPrivate Sub denglu1_Click()Unload Medenglu.ShowEnd SubPrivate Sub Form_Load()If flag = 0 Thendenglu1.Enabled = Truezhukong.Enabled = Falsetuichu.Enabled = FalseElseIf flag = 1 Thendenglu1.Enabled = Falsezhukong.Enabled = Truetuichu.Enabled = TrueElseIf flag = 2 Thendenglu1.Enabled = Falsezhukong.Enabled = Falsetuichu.Enabled = FalseElseEndEnd IfEnd IfEnd IfEnd SubPrivate Sub kaihu0_Click()Unload Mekaihu.ShowEnd SubPrivate Sub qukuan0_Click()Unload Mequkuan.ShowEnd SubPrivate Sub tuichu_Click()flag = 0Unload Mekaishi.ShowEnd SubPrivate Sub xiaohu0_Click()Unload Mexiaohu.ShowEnd SubPrivate Sub xingaimima0_Click()Unload Mexiugaimima.ShowEnd SubPrivate Sub zhaxun0_Click()Unload Mechaxun.ShowEnd SubPrivate Sub zhuanzhang0_Click()Unload Mezhuanzhang.ShowEnd Sub(2)查询Private Sub Command1_Click()Set con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from zhanghaoxinxi where zhanghao='" & Text1.Text & "'", con, adOpenKeyset, adLockOptimisticIf rst.BOF And rst.EOF ThenMsgBox "此用户不存在!"ElseIf Text2.Text = rst!mima Thenchaxunyue.Text1.Text = Text1.TextUnload Mechaxunyue.ShowEnd IfEnd Ifrst.Closecon.CloseEnd SubPrivate Sub Command2_Click()flag = 1Unload Mekaishi.ShowEnd Sub(3)查询余额Private Sub Command1_Click()cunqukuanrili.Text1.Text = Text1.TextUnload Mecunqukuanrili.ShowEnd SubPrivate Sub Command2_Click()yonghuxinxi.Text1.Text = Text1.TextUnload Meyonghuxinxi.ShowEnd SubPrivate Sub Command3_Click()flag = 1Unload Mekaishi.ShowEnd Sub(4)登录Private Sub Command1_Click()Set con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from yonghuxixin", con, adOpenKeyset, adLockOptimistic If rst.BOF And rst.EOF ThenIf Text1(0).Text = "gyn" And Text2(1).Text = "000" Thenflag = 1Unload Mekaishi.ShowElseMsgBox "输入不正确!"End IfElseDo While Not rst.EOFIf rst!yonghudaihao = Text1(0).Text ThenIf rst!mima = Text2(1).Text Thenflag = 1Unload Mekaishi.ShowEnd IfEnd Ifrst.MoveNextLooprst.Closecon.CloseIf flag = 0 ThenMsgBox " 此用户不存在!"End IfEnd IfEnd SubPrivate Sub Command2_Click()flag = 0Unload Mekaishi.ShowEnd Sub(5)开户Private Sub Command1_Click()If Text1.Text = "" ThenMsgBox "姓名不能为空"Text1.SetFocusEnd IfIf Text4.Text = "" ThenMsgBox "身份证号码不能为空"Text4.SetFocusEnd IfSet con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from yonghuxinxi1", con, adOpenKeyset, adLockOptimistic rst.AddNewrst!shenfengzheng = Text4.Textrst!xingming = Text1.Textrst!xingbie = Text5.Textrst!zhuzhi = Text2.Textrst!dianhua = Text3.Textrst.Updatekaihu1.Text2.Text = Text1.Textkaihu1.Text8.Text = Text5.Textkaihu1.Text3.Text = Text4.Textkaihu1.Text4.Text = Text2.Textkaihu1.Text5.Text = Text3.Textrst.Closecon.CloseUnload Mekaihu1.ShowEnd SubPrivate Sub Command2_Click()flag = 1kaishi.ShowEnd Sub(6)销户Private Sub Command1_Click()yonghuxinxi.Text1.Text = Text1.TextUnload Meyonghuxinxi.ShowEnd SubPrivate Sub Command2_Click()Set con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from zhanghaoxinxi", con, adOpenKeyset, adLockOptimistic If rst.BOF And rst.EOF ThenMsgBox "无记录,请先插入记录!"ElseDo While Not rst.EOFIf rst!zhanghao = Text1.Text ThenIf rst!mima = Text2.Text Thenrst.Deleterst.UpdateElseMsgBox "密码不正确!"End IfEnd Ifrst.MoveNextLoopIf rst.EOF ThenMsgBox "此用户不存在!"End Ifrst.Closecon.CloseEnd Ifrst.Closecon.CloseEnd SubPrivate Sub Command3_Click()flag = 1Unload Mekaishi.Show(7)修改密码Private Sub Command1_Click()Set con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from zhanghaoxinxi where zhanghao='" & Text1.Text & "'", con, adOpenKeyset, adLockOptimisticIf rst.BOF And rst.EOF ThenMsgBox "此用户不存在!"ElseIf Text2.Text = rst!mima Thenxiugaimima1.Text1.Text = Text1.Textxiugaimima1.Text4.Text = Text2.TextUnload Mexiugaimima1.ShowEnd IfEnd Ifrst.Closecon.CloseEnd Sub(8)修改密码1Private Sub Command1_Click()If Text2.Text <> Text3.Text ThenMsgBox "密码不一致!"ElseSet con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from yonghuxixin where yonghudaihao= '" & Text1.Text & "'", con, adOpenKeyset, adLockOptimisticrst!mima = Text3.Textrst.Updaterst.CloseSet rst = New ADODB.Recordsetrst.Open "select * from zhanghaoxinxi where zhanghao= '" & Text1.Text & "'", con, adOpenKeyset, adLockOptimisticrst!mima = Text3.Textrst.UpdateMsgBox "修改成功!"rst.Closecon.CloseEnd IfSet con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from cunkuanrili", con, adOpenKeyset, adLockOptimisticrst.AddNewrst!zhanghao = Text1.TextDim nowtime As Stringnowtime = Nowrst!caozuoriqi = Format(nowtime, "yyyy") + "-" + Format(nowtime, "mm") + "-" + Format(nowtime, "dd") + "-" + Format(nowtime, "hh") + ":" + Format(nowtime, "nn") + ":" + Format(nowtime, "ss")rst!caozuo = "修改密码"rst.Updaterst.Closecon.CloseEnd SubPrivate Sub Command3_Click()flag = 1Unload Mekaishi.ShowEnd Sub(9)转账Private Sub Command1_Click()Set con = New ADODB.Connectioncon.Open connectstringSet rst = New ADODB.Recordsetrst.Open "select * from zhanghaoxinxi where zhanghao='" & Text3.Text & "'", con, adOpenKeyset, adLockOptimisticIf rst.BOF And rst.EOF ThenMsgBox "此用户不存在!"ElseIf Text4.Text = rst!mima Thenrst!zhanghuyue = CInt(rst!zhanghuyue) - CInt(Text2.Text)rst.Updaterst.CloseSet rst = New ADODB.Recordsetrst.Open "select * from zhanghaoxinxi where zhanghao='" & Text1.Text & "'", con, adOpenKeyset, adLockOptimisticIf CInt(Text2.Text) > rst!zhanghuyue ThenMsgBox "余额不足!"Elserst!zhanghuyue = CInt(rst!zhanghuyue) + CInt(Text2.Text)rst.Updaterst.Closecon.CloseEnd IfEnd IfEnd IfEnd SubPrivate Sub Command3_Click() flag = 1Unload Mekaishi.ShowEnd Sub3.部分界面如下:。
数据库银行储蓄系统课程设计

数据库银行储蓄系统课程设计一、课程设计目的数据库银行储蓄系统课程设计旨在使学生掌握数据库技术的基础知识和实际应用,提高学生对数据库系统设计、开发和管理的认识和能力。
通过实际操作,培养学生分析问题、解决问题的能力,为学生将来从事相关工作打下基础。
二、课程设计要求1. 数据库系统需求分析:学生需分析系统需求,确定系统所需数据和功能,制定数据库设计计划。
2. 数据库设计:学生需根据需求分析结果,设计出合适的数据库结构,包括表、视图、触发器等,保证数据的完整性、一致性和安全性。
3. 系统功能开发:学生需使用所学知识,编写数据库查询、插入、更新、删除等操作代码,实现银行储蓄系统的各项功能。
4. 系统测试与优化:学生需对所开发的系统进行测试,查找并修复潜在的问题,优化系统性能,提高系统的可靠性和稳定性。
5. 文档编写:学生需编写详细的系统设计文档,包括需求分析文档、数据库设计文档、系统功能文档等,以便于他人理解和维护系统。
三、课程设计内容1. 数据库系统需求分析:学生需分析银行储蓄系统的需求,包括客户信息管理、账户信息管理、存取款管理等功能需求。
2. 数据库设计:学生需根据需求分析结果,设计出合适的数据库结构,包括客户表、账户表、交易表等,并定义表之间的关系。
3. 系统功能开发:学生需使用所学知识,编写数据库操作代码,实现银行储蓄系统的各项功能。
4. 系统测试与优化:学生需对所开发的系统进行测试,查找并修复潜在的问题,优化系统性能。
5. 文档编写:学生需编写详细的系统设计文档,包括需求分析文档、数据库设计文档、系统功能文档等。
四、课程设计步骤1. 需求分析:首先,我们需要对银行储蓄系统的需求进行深入分析。
这包括了解客户信息管理、账户信息管理、存取款管理等功能的具体需求。
通过这一步骤,我们将能够明确系统需要的数据和功能,为后续的数据库设计打下基础。
2. 数据库设计:在需求分析的基础上,我们需要设计出合适的数据库结构。
银行储蓄系统的C++代码

#include<stdio.h>#include<string.h>#include<windows.h>int j=1;//当前操作的账户struct user//定义结构体{int ID;//用户编号char name [10];//用户名char pwd[10];//用户密码double money;//用户的金额int status;//状态0:销户1:正常2:挂失}user[80];int number;//账号double cash;//金额char pwd1[10];//密码FILE*fp;void welcome();void mainmenu();void openAnAccount();void show();void deposit();void withdraw();void closeAnAcount();void writeanaccount();void query();void check();void guashi();void jiegua();void zhuanzhuang();void main(){int i=1,k;;char userName[10];char userPWD[10];welcome();for(i=1;i<=3;i++){printf("请输入操作员名:");scanf("%s",userName);fflush(stdin);printf("请输入操作员密码:");scanf("%s",userPWD);fflush(stdin);if(strcmp(userName,"chenzhuo" )== 0&&strcmp(userPWD,"chenzhuo") == 0){printf(" 正在登陆,请稍后\n");for(k=0;k<10;k++){Sleep(100);printf("■");}Sleep(200);//用户名和密码正确,显示主菜单mainmenu();break;}else{if(i<=2){printf("用户名或密码错误,好好想想吧^_^\n");}else{printf("用户名或密码错误,退出系统!\n");printf("正在退出\n");int l;for(l=0;l<10;l++){Sleep(200);printf("■");}system("cls");printf("\n");break;}}}}void welcome(){system("cls");system("color 11");printf("***************************************************************\n");printf("** ︵__╭╭╭╭╭___︵ **\n");printf("**││ **\n");printf("**││╭─────────╮ **\n");printf("**│●●││ HELLO │ **\n");printf("**│╭──╮││请输入您的信息│ **\n");printf("**││●●││╭╮╰─────────╯ **\n");printf("**│╰──╯│○╰╯ **\n");printf("**╰──┬◎───┬◎──╯ **\n");printf("** **\n");printf("***************************************************************\n");}void mainmenu(){system("cls");system("color 14");int choice;choice=-1;do{printf("***************************************************************\n");printf("** ︵__╭╭╭╭╭___︵ **\n");printf("**││ **\n");printf("**││╭─────────╮ **\n");printf("**│●●││ HELLO │ **\n");printf("**│╭──╮││请输入您的信息│ **\n");printf("**││●●││╭╮╰─────────╯ **\n");printf("**│╰──│○╰╯ **\n");printf("**╰──┬◎───┬◎──╯ **\n");printf("****\n");printf("** 存款请按《》*** 开户请按《》*** 挂失请按《》 **\n");printf("** 取款请按《》*** 销户请按《》*** 解挂请按《》 **\n");printf("** 查询请按《》*** 转账请按《》*** 退出请按《》 **\n");printf("***************************************************************\n");printf("请输入您的选择:");scanf("%d", &choice);fflush(stdin);switch(choice){case 0:printf("谢谢使用O(∩_∩)O\n");printf("正在退出\n");int l;for(l=0;l<10;l++){Sleep(200);printf("■");}system("cls");printf("\n");break;case 1:check();deposit();writeanaccount();break;case 2:check();withdraw();writeanaccount();break;case 3:check();query();break;case 4:openAnAccount();writeanaccount();break;case 5:check();closeAnAcount();writeanaccount();break;case 6:check();zhuanzhuang();break;case 7:check();guashi();writeanaccount();break;case 8:jiegua();writeanaccount();break;default :printf("\n无效选项!请重新选择!\n");break;}}while (choice !=0);}void openAnAccount(){system("cls");system("color A1");void show();printf("╭╦═══╦╮╔═╩══╗╗╔╠╠╗╗╗ \n");printf(" ║║║║╚╠╔══╗╔╠╔╠═╗\n");printf(" ║║║║╭╠╠══╣║║║\n");printf("╭╠═══╠╮╠════╝║║╚═╦╝║═╠═╩\n");printf(" ║║║║║╚═╠╝║║ \n");printf("╰╝║╯╚╚╚═╯╝╚╩╚╯═╯\n");char name[10],pwd[7];float money;int status=1;money=0;printf("请输入您的姓名:\n");scanf("%s",name);fflush(stdin);printf("请输入您的密码:\n");scanf("%s",pwd);fflush(stdin);printf("请输入您要存入的金额:\n");scanf("%f",&money);fflush (stdin);user[j].status=status;user[j].ID=j;user[j].money=money;strcpy(user[j].name,name);strcpy(user[j].pwd,pwd);system("cls");show();j++;}void closeAnAcount(){printf("请输入密码:\n");scanf("%s",pwd1);fflush(stdin);if(strcmp(user[j].pwd,pwd1) == 0){user[j].status=0;user[j].money=0;printf("销户成功!谢谢使用!\n");}show();}void deposit(){printf("请输入存款金额:\n");scanf("%lf",&cash);fflush(stdin);user[j].money=user[j].money+cash;show();}void withdraw(){printf("请输入密码:\n");scanf("%s",pwd1);fflush(stdin);if(strcmp(user[j].pwd,pwd1) == 0){printf("请输入取款金额:\n");scanf("%lf",&cash);fflush(stdin);if (user[j].money-cash>0){user[j].money=user[j].money-cash;show();}elseprintf("您没有那么多的钱,请查询后在取款!\n");}elseprintf("密码错误!好好想想!\n");}{show();}void zhuanzhuang(){printf("请输入转账金额:\n");scanf("%lf",&cash);fflush(stdin);if (user[j].money-cash>0){user[j].money=user[j].money-cash;show();}elseprintf("您没有那么多的钱,请查询后在取款!\n");printf("请输入要转账的用户的账号:\n");scanf("%d",&number);fflush(stdin);for (j=1;j<=79;j++){if(number==user[j].ID&&user[j].status==1)break;}if(j>=79){system("cls");printf("该用户不存在,请开户!\n");openAnAccount();}user[j].money=user[j].money+cash;show();printf("转账成功!O(∩_∩)O\n");}void guashi(){user[j].status=2;show();printf("挂失成功!\n");}{printf("请输入用户的账号:\n");scanf("%d",&number);fflush(stdin);for (j=1;j<=79;j++){if(number==user[j].ID&&user[j].status==2)break;}if(j>=79){system("cls");printf("该用户不存在!重新开户!\n");Sleep(3000);mainmenu();}printf("用户存在!请继续操作O(∩_∩)O\n");user[j].status=1;show();printf("解挂成功!\n");}void check(){printf("请输入用户的账号:\n");scanf("%d",&number);fflush(stdin);for (j=1;j<=79;j++){if(number==user[j].ID&&user[j].status==1)break;}if(j>=79){system("cls");printf("该用户不存在!重新开户!请等待\n");int l;for(l=0;l<10;l++){Sleep(200);printf("■");}system("cls");printf("\n");mainmenu();}printf("该用户的账号是%d\n",user[j].ID);printf("用户存在!请继续操作O(∩_∩)O\n");}void show(){char zhuangtai[5];if(user[j].status==0)strcpy(zhuangtai,"销户");else if (user[j].status==1)strcpy(zhuangtai,"正常");elsestrcpy(zhuangtai,"挂失");printf("**********************************************************************\n");printf("帐号:%d 用户名:%s 密码:%s 金额:%lf 状态:%s\n",j,user[j].name,user[j].pwd,user[j].money,zhuangtai);printf("**********************************************************************\n"); }void writeanaccount(){fp=fopen("f:\\bank","w");int k;for(k=1;k<=j;k++){fwrite(&user[j],sizeof(struct user),1,fp);}fclose(fp);}。
数据库课程设计 银行储蓄管理系统

《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(1).客户:包括存款,取款,转账,查询余额,查看流水,密码修改功能(2).管理员:新增用户,删除用户,查看用户,员工绩效,VIP用户判别,储备金预警分析。
3.功能流程图:银行管理系统登陆管理员客户销户查看员工绩效VIP判别资金储备金判别开户存款取款转账余额显示查看流水修改密码详细设计:1.E-R图模型operatecustombankstaffCphoneCtimeCpassCRmoneyCnameCidBidSphoneSnameSidSpassSItimeBname BmoneyBid1112.根据E-R 图设计关系表 (1).银行信息表(bank )字段名 字段类型及长度 允许空 主键说明 Bid nchar (9) no PK 银行号 Bname nchar (20) no银行名 Bmoney numeric (20,3) no 银行余额(2).客户信息表(custom )字段名 字段类型及长度 允许空主键说明 Cid nchar (9) noPK 客户ID Cname nchar (10) no 客户姓名 Cpass nchar (10) no 密码 Ctime nchar (20) no注册时间Bid nchar (9) no 所在银行行号 外码(Bank (Bid )) Crmoney numeric (10,3) no账户余额 Cphone nchar (11) no 客户电话 (3).员工(管理员)表(staff ) 字段名 字段类型及长度 允许空主键 说明 Sid nchar (9) noPK 员工ID Sname nchar (10) no 员工姓名 Spass nchar (10) no 登陆密码 SItime nchar (20) no入行时间Sphone nchar(11) no 联系电话(4).流水信息表字段名字段类型及长度允许空主键说明Oid nchar(9) no PK 流水号Cid nchar(9) no 客户ID 外码(Custom(Cid))Bid nchar(9) no 银行ID 外码(Bank(Bid))Sid nchar(9) no 员工ID 外码(Staff(Sid))Otype smallint no 操作类型Otime nchar(20) no 操作时间Omoney numeric(10,3) yes 交易金额OBmoney numeric(10,3) yes 上次余额OAmoney numeric(10,3) yes 账户余额三个实体:bank,staff,custom一个联系:operate关系图:SQL语句:/*建表*/create table Bank(Bid nchar(9) primary key,Bname nchar(20) not null,Bmoney numeric(20,3) not null)create table Custom( Cid nchar(9) not null,Cname nchar(10) not null,Cpass nchar(10) not null,Ctype smallint not null,Ctime nchar(20) not null,Ccode nchar(18) not null,Bid nchar(9) not null,Crmoney numeric(10,3) not null,Cphone nchar(11) not null,primary key(Cid),foreign key(Bid) references Bank(Bid) /*在客户表中以Bank表的主码作为一个外键,并对他进行级联更新*/on update cascade,)create table Staff(Sid nchar(9) primary key, /*在列级定义主码*/Sname nchar(10) not null,Spass nchar(10) not null,SItime nchar(20) not null,Sphone nchar(11) not null)create table Operate(Oid nchar(9) not null,Cid nchar(9) not null,Bid nchar(9) not null,Sid nchar(9) not null,Otype nchar(10) not null,Otime nchar(20) not null,Oflag smallint not null,Omoney numeric(10,3),OBmoney numeric(10,3),OAmoney numeric(10,3),primary key(Oid,Cid,Sid),foreign key (Cid) references Custom(Cid) /*以用户表主码为一个外键,进行级联删除*/on delete cascade,foreign key(Sid) references Staff(Sid) /*以员工表的主码作为外键,当删除引起冲突的时候,拒绝删除*/on delete no action,foreign key (Bid) references Bank(Bid)on update cascade)insert into Bank values('00001','中国银行小寨分行',10000)update Bank set Bname='中国银行经开分行' where Bid='00002'select * from Bank;delete from Bank where Bid='1' or Bid='2';insert into Custom values('6505001','花花','111',0,'2012/12/10/08:26:00','610424************','00001','1500','14345678912')insert into Staff values('7985000','自助服务','111','2002/01/07','12331654613')delete from Custom where Bid='2';insert into Operate values('2406002','6505001','00001','7985001','哈哈','2012年12月18日14时12分',0,0,2900,2900)insert into Operate values('2406005','6505007','00001','7985001','嘿嘿','2012年12月18日14时12分',0,0,2900,2900)select * from Custom;select * from Operate;select * from Staff;select * from Bank;delete from Operatedrop table Customdrop table Bankdrop table Staff;drop table Operate;select * from Bank;delete from Operate where Oid='6505001'drop view BMoney;create view BMoneyasselect Omoneyfrom Operatewhere Oflag = 0 and Omoney>2000 and Otype = '取款';create view BInMoneyasfrom Operatewhere Oflag = 0 and Omoney>2000 and Otype='存款';create view VIPasselect Ctypefrom Customwhere Ctype=1;select count(*) from BMoney;select count(*) from BInMoney;select count(*) from VIP;update Bank set Bmoney='10000' where Bid='00001';update Bank set Bmoney='+bmoney' where Bid='"+Bid+"'";update Bank set Bmoney='10200.000000' where Bid='00001'程序代码:客户部分:a.void CClientDlg::OnButtonIn() //存款函数{// TODO: Add your control notification handler code hereCInDlg InDlg;if (InDlg.DoModal()==IDOK){double temp,temp1;ADOConn ado;CString sql = "select * from Custom where Cname='"+Cname+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str; //将交易前钱数暂存temp=atof(str);temp1=(double)InDlg.m_InNum;temp+=temp1;str.Format("%f",temp);CString str3 = str; //暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);int num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;Oid.Format("%d",++num); Oid=str+Oid;Sid="7985001";Bid = bid; double temp2;sql = "select * from Bank where Bid='"+Bid+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString bmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");temp2 = atof(bmoney); temp2+=temp1; bmoney.Format("%f",temp2);sql = "update Bank set Bmoney='"+bmoney+"' where Bid='"+Bid+"'";ado.ExecuteSQL((_bstr_t)sql);CString Otype = "存款";CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");Otime = m_time; int flag = 0;Omoney.Format("%f",temp1); OAmoney = str2;OBmoney = str3;sql.Format("insert into Operate values('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_ time,flag,Omoney,OAmoney,OBmoney);ado.ExecuteSQL((_bstr_t)sql);ado.E xitConnect(); }}b.v oid CClientDlg::OnButtonGet() //取款函数{// TODO: Add your control notification handler code hereCGetDlg GetDlg;;if (GetDlg.DoModal()==IDOK){double temp,temp1;ADOConn ado;CString sql = "select * from Custom where Cname='"+Cname+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str;//将交易前钱数暂存temp=atof(str);temp1=(double)GetDlg.m_GetNum;if (temp>temp1){temp-=temp1; str.Format("%f",temp); CString str3 = str;//暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"whereCname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql) int num= atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;Oid.Format("%d",++num);Oid=str+Oid; Sid="7985001"Bid = bid; double temp2;sql = "select * from Bank where Bid='"+Bid+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString bmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");temp2 = atof(bmoney); temp2-=temp1;bmoney.Format("%f",temp2);sql = "update Bank set Bmoney='"+bmoney+"' whereBid='"+Bid+"'";ado.ExecuteSQL((_bstr_t)sql);CString Otype = "取款";CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");Otime = m_time; int flag = 0;Omoney.Format("%f",temp1);OAmoney = str2;OBmoney = str3; sql.Format("insert into Operate values('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_time,flag,Omoney,OAmoney,OBmoney); ado.ExecuteSQL((_bstr_t)sql);ado.ExitConnect();}else{AfxMessageBox("账户余额不足!"); }}}c.void CClientDlg::OnButtonTurn(){/ TODO: Add your control notification handler code hereCTurnDlg TurnDlg;if (TurnDlg.DoModal()==IDOK){ADOConn ado;CString sql = "select * from Custom";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int flag = 0;while (!ResultSet->adoEOF)CString TCusId = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString TCusMon = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney"); //收钱客户在操作前的余额CString str5 = TCusMon; TCusId.Remove(' ');if (TCusId==TurnDlg.m_TurnId){double temp,temp1;sql = "select * from Custom where Cname='"+Cname+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str; //将交易前钱数暂存temp=atof(str);temp1=(double)TurnDlg.m_TurnNum; if (temp>temp1){flag = 1;temp-=temp1; //住客户钱数减少str.Format("%f",temp);CString str3 = str; //暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"where Cname='"+Cname+"'";do.ExecuteSQL((_bstr_t)sql); temp=atof(TCusMon);//收钱客户钱数增加temp+=temp1;TCusMon.Format("%f",temp); sql = "update Custom set Crmoney='"+TCusMon+"' "+"where Cid='"+TCusId+"'";ado.ExecuteSQL((_bstr_t)sql); sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);int num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;int Otype; Oid.Format("%d",++num); Oid=str+Oid;Sid="7985001";Bid = bid; Otype = 2; CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d 日%X");Otime = m_time; Omoney.Format("%f",temp1);OAmoney = str2; OBmoney = str3;sql.Format("insert into Operate values('%s','%s','%s','%s',%d,'%s',%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_time ,Omoney,OAmoney,OBmoney); ado.ExecuteSQL((_bstr_t)sql);sql.Format("insert into Operate values('%s','%s','%s','%s',%d,'%s',%s,%s,%s)",TCusId,str4,Bid,Sid,Otype,m_t ime,Omoney,str5,TCusMon); ado.ExecuteSQL((_bstr_t)sql);ado.ExitConnect();break; }else{AfxMessageBox("账户余额不足!");break; }}ResultSet->MoveNext();}if(flag==0){AfxMessageBox("该账户不存在!"); }}}d.v oid CClientDlg::OnButtonHistoy() //历史记录查询{// TODO: Add your control notification handler code hereCShowHistory showDlg;ame = Cname;showDlg.DoModal();}e.v oid CClientDlg::OnButtonAlter(){// TODO: Add your control notification handler code hereCAlterDlg alteDlg;if(alteDlg.DoModal()==IDOK){ if (alteDlg.m_AItem==0){if (alteDlg.m_Alter1==alteDlg.m_Alter2) {ADOConn ado; CString sql = "update Custom set Cname='"+alteDlg.m_Alter1+"' where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("姓名修改成功!"); }else {AfxMessageBox("两次姓名输入不一致,请重新输入!"); }}else if(alteDlg.m_AItem==1){if (alteDlg.m_Alter1==alteDlg.m_Alter2) { ADOConn ado;CString sql = "update Custom set Cpass='"+alteDlg.m_Alter1+"' whereCname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("密码修改成功!"); }else{AfxMessageBox("两次密码输入不一致,请重新输入!"); }elseif (alteDlg.m_Alter1==alteDlg.m_Alter2){if (alteDlg.m_Alter1.GetAt(0)=='1'&&alteDlg.m_Alter1.GetLength()==11)ADOConn ado; CString sql = "update Custom setCphone='"+alteDlg.m_Alter1+"' where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("电话号码修改成功!"); }else {AfxMessageBox("电话号码格式不对!");} } else{AfxMessageBox("两次电话输入不一致,请重新输入!"); } }}}管理员部分:a.void CStaffDlg::OnButtonInsert() //添加新成员{// TODO: Add your control notification handler code hereCInsertDlg insertDlg;if (insertDlg.DoModal()==IDOK){if (insertDlg.m_Phone.GetAt(0)=='1'&&insertDlg.m_Phone.GetLength()==11){ADOConn ado;CString sql = "select count(*) Num from Custom whereCcode='"+insertDlg.m_Code+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num==0){CString str = "650500";sql = "select count(*) num from Custom";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Cid,Cpass,Bid,Pmoney; double dou;Cid.Format("%d",++Num); Cid = str+Cid;Cpass = "000000";CString m_time; Bid= "00001";CTime time; time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");dou = (double)insertDlg.m_Pmoney;Pmoney.Format("%f",dou);// Otime = m_time; sql.Format("insert into Custom values('%s','%s','%s','%s',%s,'%s',%s,%s)",Cid,insertDlg.m_Name,Cpass,m_time,insertDlg.m_Code,Bid,Pmoney,insertDlg.m_Phone);ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Oid,OAmoney,Otype; Otype = "新注册";Oid.Format("%d",++Num);str = "240600";Oid = str+Oid; Bid= "00001";int flag = 0; OAmoney = "0";sql.Format("insert into Operatevalues('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,Cid,Bid,Sid,Otype,m_time,flag,Pmoney,OAmoney,Pmoney); ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("新增客户成功!"); }else{AfxMessageBox("该证件号已经注册!"); }}}b.void CStaffDlg::OnButtonDelete() //注销客户{// TODO: Add your control notification handler code hereCDelDlg delDlg;if (delDlg.DoModal()==IDOK){if (delDlg.m_DelId1==delDlg.m_DelId2){ADOConn ado;count(*) Num from Custom where Cid='"+delDlg.m_DelId1+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num!=0){CString str = "650500";sql = "delete from Custom whereCid='"+delDlg.m_DelId1+"'";ado.ExecuteSQL((_bstr_t)sql); CString Bid,Cid;Cid = "6505000";CString m_time;CTime time; time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");sql = "select count(*) numfrom Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Oid,OAmoney,Otype; Otype = "注销用户";Oid.Format("%d",++Num);tr = "240600";Oid = str+Oid; Bid= "00001";int flag = 2; OAmoney = "0";sql.Format("insert into Operatevalues('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,Cid,Bid,Sid,Otype,m_time,flag,OAmoney,OAmoney,OAmoney); ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("注销客户成功!"); }else{AfxMessageBox("不存在该用户!"); }}else {AfxMessageBox("两次输入用户ID不一致,请重新输入!"); }}}c.void CStaffDlg::OnButtonResher() 查询客户{// TODO: Add your control notification handler code hereCAlterDlg altDlg; if (altDlg.DoModal()==IDOK){if (altDlg.m_AItem==0) {if (altDlg.m_Alter1==altDlg.m_Alter2) {ADOConn ado;CString sql = "update Staff set Sname='"+altDlg.m_Alter1+"' whereSname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("姓名修改成功!");}else{AfxMessageBox("两次姓名输入不一致,请重新输入!"); }} else if(altDlg.m_AItem==1){if (altDlg.m_Alter1==altDlg.m_Alter2){ADOConn ado;CString sql = "update Custom set Spass='"+altDlg.m_Alter1+"' where Sname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("密码修改成功!"); }else{AfxMessageBox("两次密码输入不一致,请重新输入!"); }}else{if (altDlg.m_Alter1==altDlg.m_Alter2){if (altDlg.m_Alter1.GetAt(0)=='1'&&altDlg.m_Alter1.GetLength()==11){ADOConn ado;CString sql = "update Custom set Sphone='"+altDlg.m_Alter1+"' where Sname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("电话号码修改成功!"); }else{AfxMessageBox("电话号码格式不对!");} }else{AfxMessageBox("两次电话输入不一致,请重新输入!"); } } }d.void CStaffDlg::OnButtonMoneyctrl() //资金管理{// TODO: Add your control notification handler code hereCSerchDlg serDlg;if (serDlg.DoModal()==IDOK){ADOConn ado;CString sql = "select count(*) Num from Custom where Cid='"+serDlg.m_Cid+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num!=0){CCusInfoDlg cusDlg;cusDlg.Cid = serDlg.m_Cid ADOConn ado;CString sql = "select * from Custom where Cid='"+cusDlg.Cid+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);cusDlg.m_Cname = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cname");cusDlg.m_Cid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");cusDlg.m_Code = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Ccode");cusDlg.m_Phone = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cphone");cusDlg.m_Rmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");cusDlg.DoModal();ado.ExitConnect();}else{AfxMessageBox("不存在该客户!"); }}}e.void CStaffDlg::OnButtonAlter() //信息修改{CMoneyDlg monDlg; ADOConn ado;CString sql = "select count(*) Num from BMoney ";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_GetNum = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select count(*) Num from BInMoney";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_InNum = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select count(*) Num from VIP";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_VIPNum= atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select * from Bank where Bid='00001'";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_Cash = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");ado.ExitConnect();monDlg.DoModal();}f.void CStaffDlg::OnButtonAnyse() //员工业绩分析{// TODO: Add your control notification handler code hereCStaffIDlg staDlg;staDlg.DoModal();}心得体会:这次课程设计体会非常深刻,首先在团队合作方面,我觉得自己作为队长没有两道好我的小队,这是我的失职。
银行储蓄开发程序代码C++

实验项目:银行储蓄实验项目一、银行储蓄系统主菜单模块设计与实现1.1库函数描述(原型、功能、头部文件)及其作用Time显示当前时间类 #include<time.H>System()调用dos命令 _sleep()停息#include<stdlib.H>String 字符串流#include<string.H>#include"myheader.h"中有调用的全部函数声明1.2编码(必须附加注释)#include"myheader.h"void main(){//背景颜色设置system("COLOR 16");/*颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。
每个数字可以为以下任何值之一:0 = 黑色 8 = 灰色1 = 蓝色 9 = 淡蓝色2 = 绿色 A = 淡绿色3 = 湖蓝色 B = 淡浅绿色4 = 红色 C = 淡红色5 = 紫色 D = 淡紫色6 = 黄色 E = 淡黄色7 = 白色 F = 亮白色*///输出=============★欢迎进入银行活期存款系统★=============int i;for(i=0;i<13;i++)cout<<'=';cout<<"★欢迎进入银行活期存款系统★";for(i=0;i<13;i++)cout<<'=';cout<<endl;//列示当前时间cout<<"当前时间:";for(i=0;i<6;i++)cout<<" ";Time t=latesttime();t.print();//列示菜单mylist();cout<<"如果您不了解该系统请按N否则按Y: ";//核实输入是否为字符string check;while(1){cin>>check;if(check.length()>1){cout<<"您的输入有误请重新输入:";continue;}if(check[0]!='Y'&&check[0]!='N')cout<<"您的输入有误请重新输入:";elsebreak;}int mark=1;if(check[0]=='N'){mark=0;cout<<"友情提示:按对应业务的编号即可进行该业务!"<<endl<<"请继续:"<<endl;}int flag=1;while(flag++){if(flag>2){system("cls");mylist();}if(mark)cout<<"请选择业务:";string servicenum;//核实输入是否为字符while(1){cin>>servicenum;if(servicenum.length()>1){cout<<"您的输入有误请重新输入:";continue;}elsebreak;}cout<<"确认请按Y,修改请按N,请选择:"; string mark;//核实输入是否为字符while(1){cin>>mark;if(mark.length()>1){cout<<"您的输入有误请重新输入:";continue;}if(mark[0]!='Y'&&mark[0]!='N')cout<<"您的输入有误请重新输入:";elsebreak;}if(mark[0]=='N')continue;if(servicenum[0]=='0')break;cout<<" 正在处理请稍等.";_sleep(1000);cout<<".";_sleep(1000);cout<<".\n";_sleep(1000);switch(servicenum[0]){//开户case '1': creaccount();break;//存款case '2': deposit();break;//取款case '3': withdraw();break;//计息case '4': computeprofit();break;//查询case '5': checkbalance();break;//排序case '6': order();break;//系统介绍case '7': about(); break;default: cout<<"对不起,您的选择超出了我们的业务范围。
数据库课程设计实验报告-银行账户管理系统

数据库课程设计报告题目: 银行账户管理系统院系名称: 计算机学院专业名称: 软件工程班级: 09级01班学生姓名: ***学号(8位): *******指导教师: ***设计起止时间:2011年12月19日~2011年12月30日一. 设计目的银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。
利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。
本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程。
二. 设计内容分别完成银行业务功能、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,cunquSummary,balanceMoney))。
银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查询、办卡和挂失功能。
软件工程课程设计银行储蓄管理系统样本

目录1 问题定义 (3)2 可行性研究 (4)2.1 项目概述 (4)2.2 可行性分析的前提 (4)2.2.1 项目的目标 (4)2.2.2 项目的环境 (5)2.3 可选的方案 (5)2.3.1 方案一 (5)2.3.2 方案二 (5)2.4 所建议的系统 (6)2.4.1 系统说明 (6)2.4.2 系统流程图 (6)2.4.3 高级数据流图 (7)2.5 经济可行性 (8)2.5.1系统开发费用 (8)2.5.2系统运行费用 (9)2.5.3效益 (9)2.6技术可行性 (10)2.7 操作可行性 (10)3 需求分析 (10)3.1 需求概述 (10)3.2 需求模型 (11)3.2.1 数据模型 (11)3.2.2 功能模型 (12)3.2.3 行为模型 (13)3.2.4 数据字典 (15)4 总体设计 (17)4.1 系统体系结构 (17)4.2 模块详细说明 (18)4.3 数据库设计 (19)5 详细设计 (21)5.1 人机界面设计 (21)5.2 过程设计 (26)6 测试 (27)6.1 白盒测试 (27)6.2黑盒测试 (28)7 结论 (29)8参考文献 (30)9 附录 (30)9.1程序代码 (30)1 问题定义账户管理是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。
可是,当前许多银行在具体的业务流程处理过程中依然使用手工操作的方式来实施,不但费时、费力, 效率低下, 而且无法达到理想的效果。
本文针对上述问题, 采用软件工程的开发原理, 依据软件流程过程规范, 按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行账户管理系统。
采用VSC++作为开发工具, 数据库设计遵循3范式, 主要设计了用户基本信息表、用户卡信息表、 ATM 取款机基本信息表、用户银行存款信息表、管理系统的用户口令表、银行系统的用户信息表等数据表。
数据库课程设计银行储蓄系统

银行储蓄系统数据库课程设计一、系统概述银行储蓄系统是银行的核心业务系统之一,用于管理客户在银行的储蓄账户信息。
本课程设计将通过建立一个简单的银行储蓄系统,帮助学员掌握数据库设计和应用开发的基本技能。
二、系统需求1.用户管理:能够添加、删除、修改和查询用户信息。
2.账户管理:能够创建、修改、查询和删除账户信息。
3.存款业务:能够完成存款、取款、查询余额等操作。
4.转账业务:能够实现不同账户间的转账功能。
5.报表生成:能够根据需求生成相应的报表。
三、数据库设计1.用户表(Users)UserID(用户ID,主键)UserName(用户名)Password(密码)Email(邮箱)Phone(电话)2.账户表(Accounts)AccountID(账户ID,主键)UserID(用户ID,外键)AccountName(账户名称)AccountType(账户类型)OpenDate(开户日期)Balance(账户余额)3.存款记录表(Deposits)DepositID(存款ID,主键)AccountID(账户ID,外键)DepositAmount(存款金额)DepositDate(存款日期)4.取款记录表(Withdrawals)WithdrawalID(取款ID,主键)AccountID(账户ID,外键)WithdrawalAmount(取款金额)WithdrawalDate(取款日期)5.转账记录表(Transfers)TransferID(转账ID,主键)SourceAccountID(源账户ID,外键)DestinationAccountID(目标账户ID,外键)TransferAmount(转账金额)TransferDate(转账日期)6.报表表(Reports)ReportID(报表ID,主键)ReportType(报表类型)ReportDate(报表日期)ReportContent(报表内容)7.用户权限表(UserPermissions)PermissionID(权限ID,主键)UserID(用户ID,外键)PermissionType(权限类型)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库课程设计完全代码--建库create database Bankon primary(name ='Bank',filename='D:\project\Bank.mdf',size = 5,maxsize = 100,filegrowth = 10%)log on(name ='Bank_log',filename='D:\project\Bank_log.ldf',size=2,filegrowth=1)go--建表use Bankcreate table Depositors(BNo varchar(20)primary key,--账号BName varchar(20)not null,--姓名BPassword char(6)not null check(len(BPassword)= 6),--密码BID varchar(20)not null,--身份证号BSex char(2)not null check(BSex ='男'or BSex ='女'),--性别BStyle varchar(20)not null check(BStyle ='活期存款'or BStyle ='定期存款'),--业务类型BDate datetime not null,--开户时间BYear int not null check(BYear = 0 or BYear = 1 or BYear = 2 or BYear = 3),--存款期限,0表示活期BMoney decimal(10,4)not null check(BMoney >= 0)--账户余额)create table CurrentAccounts(nID int primary key identity(1,1),--流水号BNo varchar(20)not null references Depositors(BNo),--账号BName varchar(20)not null,--姓名BStyle varchar(20)not null check(BStyle ='活期存款'or BStyle ='活期取款'),--操作类型BCash decimal(10,4)null check(BCash >= 0),--操作金额BDate datetime not null,--操作时间BInterest decimal(10,4)null check(BInterest >= 0),--利息BMoney decimal(10,4)not null check(BMoney >= 0),--账户余额)create table FixedAccounts(nID int primary key identity(1,1),--流水号BNo varchar(20)not null references Depositors(BNo),--账号BName varchar(20)not null,--姓名BStyle varchar(20)not null check(BStyle ='定期存款'or BStyle ='定期取款'),--操作类型BMoney decimal(10,4)not null check(BMoney >= 0),--存取金额BYear int not null check(BYear = 1 or BYear = 2 or BYear = 3),--存款期限BDate datetime not null--存款时间插入触发器create trigger InsertIntoCAorFA on Depositorsafter insertasdeclare @year intselect @year = BYear from insertedif @year = 0insert into CurrentAccounts(BNo,BName,BStyle,BDate,BMoney)selectBNo,BName,BStyle,BDate,BMoney from insertedelseinsert into FixedAccounts(BNo,BName,BStyle,BMoney,BYear,BDate)selectBNo,BName,BStyle,BMoney,BYear,BDate from inserted删除触发器create trigger DeleteFromCAorFA on Depositorsinstead of deleteasdeclare @no varchar(20)select @no = BNo from deleteddelete from CurrentAccounts where BNo = @nodelete from FixedAccounts where BNo = @nodelete from Depositors where BNo = @no(1)开户登记&(2)定期存款insert into Depositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYear,BMoney)values(10001,'张三',123456,1405115001,'男','活期存款','2016-01-01',0,10000)insert into Depositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYear,BMoney)values(10002,'李四',123456,1405115002,'男','活期存款','2016-01-02',0,20000)insert into Depositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYear,BMoney)values(10003,'王五',123456,1405115003,'男','定期存款','2016-01-03',2,30000)insert into Depositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYear,BMoney)values(10004,'小丽',123456,1405115004,'女','定期存款','2016-01-04',3,40000)create view ViewOfCurrentAccounts --参考asselect BNo 账号,BName 姓名,BStyle 操作类型,BCash 操作金额,BDate 操作时间,BInterest 利息,BMoney 账户余额from CurrentAccountsselect*from Depositorsselect*from CurrentAccountsselect*from FixedAccounts(3)定期取款create procedure FixedWithdraw@No varchar(20),@Date datetimeasif((select BYear from FixedAccounts where BNo = @No)= 1)beginif((select datediff(day,(select BDate from FixedAccounts where BNo = @No),@Date))> 360)begininsert into FixedAccounts(BNo,BName,BStyle,BMoney,BYear,BDate)values(@No,(select BName from FixedAccounts where BNo = @No),'定期取款',(select BMoney from FixedAccounts where BNo = @No)*1.0275,1,@Date) --利息计算select*from FixedAccounts where BNo = @Noendelseprint'定期存款未满一年!'endelse if((select BYear from FixedAccounts where BNo = @No)= 2)beginif((select datediff(day,(select BDate from FixedAccounts where BNo = @No),@Date))> 360*2)begininsert into FixedAccounts(BNo,BName,BStyle,BMoney,BYear,BDate)values(@No,(select BName from FixedAccounts where BNo = @No),'定期取款',(select BMoney from FixedAccounts where BNo = @No)*power(1.035,2),2,@Date)select*from FixedAccounts where BNo = @Noendelseprint'定期存款未满两年!'endelsebeginif((select datediff(day,(select BDate from FixedAccounts where BNo = @No),@Date))> 360*3)begininsert into FixedAccounts(BNo,BName,BStyle,BMoney,BYear,BDate)values(@No,(select BName from FixedAccounts where BNo = @No),'定期取款',(select BMoney from FixedAccounts where BNo = @No)*power(1.04,3),3,@Date)select*from FixedAccounts where BNo = @Noendelseprint'定期存款未满三年!'endexec FixedWithdraw10003,'2018-01-04' --取款(4)&(5)活期存取款create proc CurrentWithdraw@No varchar(20),@Money float,@Date datetimeasdeclare @temp decimal(10,4)select @temp =(((select datediff(day,(select max(BDate)from CurrentAccounts where BNo= @No),@Date))/360.0*0.0035+1)*(select BMoney from CurrentAccounts where nID =(select max(temp.nID)from (select nID from CurrentAccounts where BNo = @No)as temp)))+@Money --当前余额if(@Money > 0)--存款begininsert into CurrentAccounts(BNo,BName,BStyle,BCash,BDate,BInterest,BMoney) values(@No,(select distinct BName from CurrentAccounts where BNo = @No),'活期存款',@Money,@Date,((select datediff(day,(select max(BDate)from CurrentAccounts where BNo = @No),@Date))/360.0*0.0035*(select BMoney from CurrentAccounts where nID =(selectmax(temp.nID)from (select nID from CurrentAccounts where BNo = @No)as temp))),--(6)利息计算@temp)select*from CurrentAccounts where nID =(select max(temp.nID)from (select nID from CurrentAccounts where BNo = @No)as temp)--显示存款记录endelse--取款if(abs(@Money)> @temp)print'余额不足!'elsebegininsert into CurrentAccounts(BNo,BName,BStyle,BCash,BDate,BInterest,BMoney) values(@No,(select distinct BName from CurrentAccounts where BNo = @No),'活期取款',abs(@Money),@Date,((select datediff(day,(select max(BDate)from CurrentAccounts where BNo = @No),@Date))/360.0*0.0035*(select BMoney from CurrentAccounts where nID =(selectmax(temp.nID)from (select nID from CurrentAccounts where BNo = @No)as temp))), @temp)select*from CurrentAccounts where nID =(select max(temp.nID)from (select nID from CurrentAccounts where BNo = @No)as temp)--显示取款记录endexec CurrentWithdraw10001,5000,'2016-03-30' --存款exec CurrentWithdraw10001,-5000,'2016-05-30' --取款exec CurrentWithdraw10001,5000,'2016-07-30'--存款exec CurrentWithdraw10001,-20000,'2016-08-30'--取款,返回消息:余额不足!(7)活期明细create proc DetailOfCurrentAccount --活期明细@no varchar(20)asselect*from CurrentAccounts where BNo = @no exec DetailOfCurrentAccount10001定期明细create proc DetailOfFixedAccount --定期明细@no varchar(20)asselect*from FixedAccounts where BNo = @no exec DetailOfFixedAccount10003(8)数据库备份与恢复使用图形化界面操作即可。