数据库课程设计-银行储蓄系统完全代码
软件工程银行储蓄管理系统设计[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.部分界面如下:。
数据库银行储蓄系统课程设计
![数据库银行储蓄系统课程设计](https://img.taocdn.com/s3/m/5c2be9564531b90d6c85ec3a87c24028915f8528.png)
数据库银行储蓄系统课程设计一、课程设计目的数据库银行储蓄系统课程设计旨在使学生掌握数据库技术的基础知识和实际应用,提高学生对数据库系统设计、开发和管理的认识和能力。
通过实际操作,培养学生分析问题、解决问题的能力,为学生将来从事相关工作打下基础。
二、课程设计要求1. 数据库系统需求分析:学生需分析系统需求,确定系统所需数据和功能,制定数据库设计计划。
2. 数据库设计:学生需根据需求分析结果,设计出合适的数据库结构,包括表、视图、触发器等,保证数据的完整性、一致性和安全性。
3. 系统功能开发:学生需使用所学知识,编写数据库查询、插入、更新、删除等操作代码,实现银行储蓄系统的各项功能。
4. 系统测试与优化:学生需对所开发的系统进行测试,查找并修复潜在的问题,优化系统性能,提高系统的可靠性和稳定性。
5. 文档编写:学生需编写详细的系统设计文档,包括需求分析文档、数据库设计文档、系统功能文档等,以便于他人理解和维护系统。
三、课程设计内容1. 数据库系统需求分析:学生需分析银行储蓄系统的需求,包括客户信息管理、账户信息管理、存取款管理等功能需求。
2. 数据库设计:学生需根据需求分析结果,设计出合适的数据库结构,包括客户表、账户表、交易表等,并定义表之间的关系。
3. 系统功能开发:学生需使用所学知识,编写数据库操作代码,实现银行储蓄系统的各项功能。
4. 系统测试与优化:学生需对所开发的系统进行测试,查找并修复潜在的问题,优化系统性能。
5. 文档编写:学生需编写详细的系统设计文档,包括需求分析文档、数据库设计文档、系统功能文档等。
四、课程设计步骤1. 需求分析:首先,我们需要对银行储蓄系统的需求进行深入分析。
这包括了解客户信息管理、账户信息管理、存取款管理等功能的具体需求。
通过这一步骤,我们将能够明确系统需要的数据和功能,为后续的数据库设计打下基础。
2. 数据库设计:在需求分析的基础上,我们需要设计出合适的数据库结构。
银行储蓄系统的C++代码
![银行储蓄系统的C++代码](https://img.taocdn.com/s3/m/1ad0d9533c1ec5da50e270e5.png)
#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);}。
数据库课程设计 银行储蓄管理系统
![数据库课程设计 银行储蓄管理系统](https://img.taocdn.com/s3/m/3764dd8af90f76c660371a2f.png)
《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(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++
![银行储蓄开发程序代码C++](https://img.taocdn.com/s3/m/a7c67bd9a58da0116c1749e8.png)
实验项目:银行储蓄实验项目一、银行储蓄系统主菜单模块设计与实现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<<"对不起,您的选择超出了我们的业务范围。
数据库课程设计实验报告-银行账户管理系统
![数据库课程设计实验报告-银行账户管理系统](https://img.taocdn.com/s3/m/4350eb8f192e45361166f520.png)
数据库课程设计报告题目: 银行账户管理系统院系名称: 计算机学院专业名称: 软件工程班级: 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))。
银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查询、办卡和挂失功能。
软件工程课程设计银行储蓄管理系统样本
![软件工程课程设计银行储蓄管理系统样本](https://img.taocdn.com/s3/m/e4e0c353cd1755270722192e453610661ed95a24.png)
目录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 取款机基本信息表、用户银行存款信息表、管理系统的用户口令表、银行系统的用户信息表等数据表。
数据库课程设计银行储蓄系统
![数据库课程设计银行储蓄系统](https://img.taocdn.com/s3/m/f526523aa36925c52cc58bd63186bceb19e8edb0.png)
银行储蓄系统数据库课程设计一、系统概述银行储蓄系统是银行的核心业务系统之一,用于管理客户在银行的储蓄账户信息。
本课程设计将通过建立一个简单的银行储蓄系统,帮助学员掌握数据库设计和应用开发的基本技能。
二、系统需求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(权限类型)。
数据库课程设计银行储蓄系统完全代码
![数据库课程设计银行储蓄系统完全代码](https://img.taocdn.com/s3/m/3706cb69aaea998fcd220e20.png)
数据库课程设计银行储蓄系统完全代码数据库课程设计完全代码--建库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 intoCurrentAccounts(BNo,BName,BStyle,BDate,BMoney)select BNo,BName,BStyle,BDate,BMoney from insertedelseinsert intoFixedAccounts(BNo,BName,BStyle,BMoney,BYear,BDate)select BNo,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 intoDepositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYea r,BMoney)values(10001,'张三',123456,,'男','活期存款',' -01-01',0,10000)insert intoDepositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYea r,BMoney)values(10002,'李四',123456,,'男','活期存款',' -01-02',0, 0)insert intoDepositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYea r,BMoney)values(10003,'王五',123456,,'男','定期存款',' -01-03',2,30000)insert intoDepositors(BNo,BName,BPassword,BID,BSex,BStyle,BDate,BYea r,BMoney)values(10004,'小丽',123456,,'女','定期存款',' -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 intoFixedAccounts(BNo,BName,BStyle,BMoney,BYear,BDate) values(@No,(select BName from FixedAccounts where BNo = @No),'定期取款',(select BMoney from FixedAccounts whereBNo = @No)*1.0275,1,@Date) --利息计算select*from FixedAccounts where BNo = @No endelseprint'定期存款未满一年!'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 intoFixedAccounts(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 = @No endelseprint'定期存款未满两年!'endelsebeginif((select datediff(day,(select BDate from FixedAccounts where BNo = @No),@Date))> 360*3) begininsert intoFixedAccounts(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 = @No endelseprint'定期存款未满三年!'endexec FixedWithdraw10003,' -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 intoCurrentAccounts(BNo,BName,BStyle,BCash,BDate,BInterest,BM oney)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 =(select max(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 intoCurrentAccounts(BNo,BName,BStyle,BCash,BDate,BInterest,BM oney)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 =(select max(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,' -03-30' --存款exec CurrentWithdraw10001,-5000,' -05-30' --取款exec CurrentWithdraw10001,5000,' -07-30'--存款exec CurrentWithdraw10001,- 0,' -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)数据库备份与恢复使用图形化界面操作即可。
数据库系统原理课程设计--银行储蓄系统数据库设计
![数据库系统原理课程设计--银行储蓄系统数据库设计](https://img.taocdn.com/s3/m/862562df58f5f61fb73666ed.png)
课程设计报告书课程名称:《数据库系统原理》课程设计题目:银行储蓄系统数据库设计系名:信息工程系专业班级:2012年 6 月 29日课程设计任务书设计题目:银行储蓄管理系统数据库设计初始条件:本课程的设计的目的是通过实践使同学们经历数据库设计开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。
结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。
要求完成的主要任务:要求学生根据所学的数据库原理与程序设计的知识,能够针对一个小型的银行储蓄管理系统,进行数据库系统的需求分析,概念结构设计、逻辑结构设计、物理结构设计,数据录入及测试等,完成题目要求的功能。
主要任务:用户有以下需求:建立读者档案;建立图书档案,建立书目索引;完成日常图书检索、借还工作,对读者档案、图书档案、借还系统的访问,必需进行身份验证。
具体要求如下:1.存折信息数据包括:存折的基本信息包括:户名、帐号、开户银行名称、开户日期、取款密码等。
2.账户存取明细数据包括:日期、摘要(现存、现支、转存、利息)、交易金额、余额、操作柜员编号。
3.检索系统能根据户名、账号、交易日期、金额等进行查询。
4.取款输入账号和密码后,能根据密码判断用户是否合法,能判断取款金额是否超过了账户余额,如果取款金额合法,就对该账号的余额信息进行更新。
5、存款输入账号和存款金额后,能更新该账号的余额。
6、转账输入账号和密码后,能根据密码判断用户是否合法,然后再输入对方的转账账户,并判断对方的转账账户是否合法,如果合法,再输入转账的金额,并能判断转账金额是否超过了账户余额,如果转账金额合法,就对该账号的余额信息以及对方的账户余额信息进行更新。
设计报告撰写格式要求:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。
设计报告正文字数不少于0.2万字(不包括附录)第1级(章)题序和题名用黑体三号字,第2级(目)题序和题名用黑体小四号字,第3级(条)题序和题名用黑体小四号字,正文内容用宋体五号字(英文用新罗马体),多倍行距1.25。
银行存取系统c语言课程设计
![银行存取系统c语言课程设计](https://img.taocdn.com/s3/m/2d71b15053ea551810a6f524ccbff121dd36c59f.png)
银行存取系统c语言课程设计一、教学目标本课程旨在通过学习银行存取系统C语言课程设计,让学生掌握C语言编程的基本知识和技能,能够运用C语言实现简单的银行存取系统。
具体目标如下:1.掌握C语言的基本语法和数据结构。
2.理解银行存取系统的业务流程。
3.能够使用C语言编写简单的程序。
4.能够运用C语言实现银行存取系统的功能。
情感态度价值观目标:1.培养学生的编程兴趣和自信心。
2.培养学生的团队协作能力和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及银行存取系统的实现。
具体安排如下:1.C语言的基本语法:介绍C语言的基本语法规则,包括变量、数据类型、运算符、控制语句等。
2.数据结构:介绍常用的数据结构,如数组、链表、栈和队列等。
3.银行存取系统的实现:介绍银行存取系统的业务流程,并使用C语言实现相关的功能。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过讲解C语言的基本语法和数据结构,使学生掌握相关的理论知识。
2.讨论法:通过小组讨论,让学生深入理解银行存取系统的业务流程和实现方法。
3.案例分析法:通过分析典型的银行存取系统案例,让学生学会解决实际问题。
4.实验法:通过编写C语言程序,实现银行存取系统的功能,提高学生的编程能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用合适的C语言教材,为学生提供理论知识的学习。
2.参考书:提供相关的参考书籍,供学生深入学习和参考。
3.多媒体资料:制作PPT和教学视频,帮助学生更好地理解和学习。
4.实验设备:提供计算机和相关的实验设备,让学生进行编程实践。
五、教学评估本课程的评估方式将包括平时表现、作业和考试等多个方面,以全面客观地评价学生的学习成果。
1.平时表现:通过课堂参与、提问和小组讨论等方式,评估学生在课堂上的积极性和主动性。
c语言银行存钱程序课程设计
![c语言银行存钱程序课程设计](https://img.taocdn.com/s3/m/880d6ad2690203d8ce2f0066f5335a8103d26617.png)
c语言银行存钱程序课程设计一、课程目标知识目标:1. 理解C语言中基本的数据类型及其应用;2. 学会使用C语言中的循环和条件语句实现逻辑流程控制;3. 掌握C语言中函数的定义和调用,理解模块化编程的思想;4. 了解结构体类型,并能运用结构体数组管理数据。
技能目标:1. 能够运用所学知识设计并编写一个银行存钱程序;2. 能够通过编程实现用户的注册、登录、存钱和查询余额等功能;3. 能够对程序进行调试和优化,提高程序的稳定性和执行效率;4. 能够与同学进行合作交流,共同分析问题、解决问题。
情感态度价值观目标:1. 培养学生积极的学习态度,激发对编程的兴趣和热情;2. 培养学生的团队协作精神,学会与他人共同完成任务;3. 培养学生的创新意识,鼓励尝试不同的解决方案;4. 培养学生良好的编程习惯,注重代码规范和程序优化。
本课程针对初中或高中年级学生,结合C语言学科特点,以实用性为导向,旨在帮助学生掌握C语言编程的基本知识和技能。
在教学过程中,注重理论与实践相结合,鼓励学生动手实践,培养编程思维和解决问题的能力。
通过本课程的学习,使学生能够独立设计并实现一个简单的银行存钱程序,同时培养良好的情感态度和价值观。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符和表达式;2. 控制结构:顺序结构、选择结构(if语句、switch语句)、循环结构(for循环、while循环、do-while循环);3. 函数:函数定义、函数声明、函数调用、局部变量和全局变量;4. 结构体和数组:结构体定义、结构体初始化、结构体数组;5. 银行存钱程序设计:需求分析、功能模块划分、程序设计;- 用户注册功能:输入用户名和密码,保存用户信息;- 用户登录功能:验证用户名和密码,进入系统;- 存钱功能:输入存款金额,更新用户余额;- 查询余额功能:显示当前用户余额;6. 程序调试与优化:调试技巧、代码优化、程序测试。
C语言编程银行ATM存取款系统实现源码
![C语言编程银行ATM存取款系统实现源码](https://img.taocdn.com/s3/m/c2b719c5c0c708a1284ac850ad02de80d4d806b2.png)
C语⾔编程银⾏ATM存取款系统实现源码⽬录⼀、课程设计的⽬的⼆、课程设计的题⽬三、设计内容银⾏ATM存取款系统实现的效果源码业务流程1、⽤户开户2、登录流程3、密码修改这⾥使⽤的运⾏⼯具是DEV C++。
⽼铁们⼀定要看仔细了。
是DEV C++仅供借鉴:这个是⼤⼀时期写的。
⼤四的时候整理了⼀下(本⼈C语⾔学的也不太好)。
肯定很多不⾜和存在漏洞的地⽅、仅供借鉴、仅供借鉴。
⼀、课程设计的⽬的掌握C语⾔程序设计的基础知识、基本理论、原理和实现技术。
⼆、课程设计的题⽬银⾏ATM存取款系统三、设计内容(主要技术关键的分析、解决思路和⽅案⽐较等)银⾏ATM存取款系统银⾏ATM存取款系统业务描述如下:银⾏ATM存取款系统能为⽤户提供存款、取款、查询、转账和修改密码的功能。
为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。
⽤户通过开户业务在本系统开⽴银⾏账户,之后可以通过该银⾏账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。
本系统各个业务有如下注意点:(1)登陆系统⽤户登陆之前,必须在登陆界⾯输⼊其银⾏账户,通过其正确输⼊的银⾏账户登陆系统。
(2)开户业务要使⽤本系统必须⾸先执⾏开户业务开⽴新的银⾏账户,并且将此新开的银⾏存储于⽂件当中。
同时,系统以⾝份证号码作为开户的充分条件,即⼀个⾝份证号码只能开⽴⼀次银⾏账户。
(3)存款业务客户登陆系统后,选择存款业务,即可以将输⼊的存款⾦额存⼊相应的账户。
(4)取款业务客户登陆系统后,选择取款业务,即可以将输⼊的取款⾦额从相应的银⾏账户取出,但是取款⾦额必须⼤于⽬前的账户余额。
(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。
(6)转账业务客户登陆系统后,可以选择转账业务,进⾏转账。
注意的是转账的⽬的账户必须是本系统已经存在的银⾏账户。
(7)修改密码客户登陆系统后,可以选择修改密码业务,进⾏密码修改。
银行储蓄管理系统c课程设计
![银行储蓄管理系统c课程设计](https://img.taocdn.com/s3/m/3e6d76d88662caaedd3383c4bb4cf7ec4bfeb615.png)
银行储蓄管理系统c 课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。
通过本课程的学习,学生需要掌握银行储蓄管理系统的相关知识,包括储蓄业务的基本原理、储蓄账户的管理、储蓄业务流程等。
在技能方面,学生需要能够运用C语言进行简单的程序设计,实现银行储蓄管理的基本功能。
在情感态度价值观方面,学生需要培养对银行储蓄管理系统的兴趣,提高对编程和计算机科学的热情,培养良好的编程习惯和团队合作精神。
二、教学内容本课程的教学内容主要包括银行储蓄管理系统的相关知识和C语言编程基础。
首先,学生需要了解储蓄业务的基本原理,包括储蓄账户的开设、存款、取款、转账等业务。
其次,学生需要学习C语言编程基础,包括变量、数据类型、运算符、控制结构等。
然后,学生将运用所学的C语言编程知识,设计和实现一个简单的银行储蓄管理系统,包括账户管理、存款、取款、转账等功能。
最后,学生将对所设计的银行储蓄管理系统进行测试和优化,提高系统的稳定性和效率。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法。
首先,讲授法将用于向学生传授银行储蓄管理系统的相关知识和C语言编程基础。
其次,讨论法将用于引导学生进行思考和交流,培养学生的团队合作精神和问题解决能力。
案例分析法将用于分析实际生活中的储蓄业务案例,帮助学生更好地理解和应用所学知识。
实验法将用于让学生通过实际编程和测试,提高编程技能和系统设计能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备多种教学资源。
教材将提供银行储蓄管理系统的基本知识和C语言编程基础的学习材料。
参考书将提供更深入的理论和实践指导。
多媒体资料将用于展示实际储蓄业务案例和编程技巧。
实验设备将用于让学生进行实际编程和系统测试。
此外,还将提供在线编程平台和调试工具,方便学生进行自主学习和交流。
五、教学评估本课程的教学评估将采用多元化的方式,以全面客观地评价学生的学习成果。
银行储蓄系统课程设计
![银行储蓄系统课程设计](https://img.taocdn.com/s3/m/9a4f9c0990c69ec3d5bb75fb.png)
银行计算机储蓄系统目录一、任务 (2)二、总体设计 (2)1、模块结构图 (2)2、数据库总体设计 (3)3、数据库设计与程序关系 (3)4、数据字典 (4)三、详细设计 (4)1、平台支持设计 (4)2、结构程序设计 (5)2.1 3种基本的控制结构(顺序,选择,循环) (5)2.2 功能模块与程序间的关系: (5)3、人机界面设计 (5)3.1 系统响应时间 (5)3.2 用户帮助设施 (5)3.3 出错信息出理 (6)3.4 系统维护设计 (6)4、模块设计 (7)5、数据库详细设计 (7)6、数据字典详细设计 (9)7、技术审查和管理审查 (9)8、总结 (9)9、参考资料 (9)一、任务为方便用户,银行需开发计算机储蓄系统。
储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人的姓名,住址,存款类型,存款日期,利率等信息,并印出存款单给储户;如果是取款,系统计算利率,并印出取款清单给储户。
二、总体设计1、模块结构图2、数据库总体设计存款信息主要在存取款时将客户信息写入数据库并返回。
2.3 数据库设计与程序关系程序在对存/取款进行操作时需对数据库数据结构,也就是数据表进行查询和修改:在存/取款过程中都需要对数据库中的所有表,进行联合查询、修改。
物理数据结构主要用于各模块之间函数的信息传递。
接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
出错信息将送入显示模块中,最后送入打印准备模块中准备打印格式。
3、数据字典三、详细设计1、平台支持设计操作系统:window 2007等数据库服务器:SQL server 2008 程序软件:Microsoft Visual 2008 程序语言:C#2、结构程序设计2.1 3种基本的控制结构(顺序,选择,循环)2.2功能模块与程序间的关系:3、人机界面设计3.1 系统响应时间(1) 考虑到实际情况,系统对运行时间的要求为必须对做出的操作有较快的反应,建议使用 Pentium III 或更好的处理器。
- 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)数据库备份与恢复使用图形化界面操作即可。