银行ATM存取款机系统MySQL数据库

建表

 1 CREATE TABLE cardInfo
 2 (
 3 cardid CHAR(16)not NULL PRIMARY key,
 4 `password` CHAR(6)not NULL ,
 5 curID INT(4)not NULL,
 6 savingID INT(11)not NULL,
 7 openDate TIMESTAMP not NULL,
 8 openMoney DECIMAL(20) not NULL,
 9 balance DECIMAL(20) not NULL,
10 IsReportLoss bit not NULL,
11 customerID INT(4)not NULL
12 )
13 ALTER TABLE cardinfo ADD CONSTRAINT Fk_cuid FOREIGN KEY(customerID) REFERENCES userinfo(customerID);
14 ALTER TABLE cardinfo ADD CONSTRAINT FK_saving FOREIGN KEY(savingID) REFERENCES deposit(savingID);
15 
16 
17 #drop table if exists cardinfo;
18 
19 
20 CREATE TABLE userInfo
21 (
22 customerID INT(4) PRIMARY KEY not NULL,
23 customerName CHAR(8) not NULL,
24 PID CHAR(18) not NULL,
25 telephone CHAR(20) not NULL,
26 address VARCHAR(50)
27 )
28 
29 
30 CREATE TABLE tradeInfo
31 (
32 cardID CHAR(16) not NULL,
33 tradeDate TIMESTAMP not NULL,
34 tradeMoney DECIMAL(20)not NULL,
35 tradeType char(4)not NULL,
36 remark text 
37 )
38 ALTER TABLE tradeinfo ADD CONSTRAINT FK_cid FOREIGN KEY(cardid) REFERENCES cardinfo(cardid);
39 
40 CREATE TABLE deposit
41 (
42 savingID INT(4) NOT NULL PRIMARY KEY,
43 savingName VARCHAR(20) NOT NULL,
44 descrip VARCHAR(50)
45 )

测试数据:

 1 #存款类型
 2 INSERT INTO deposit (savingName,descrip) VALUES ('活期','按存款日结算利息');
 3 INSERT INTO deposit (savingName,descrip) VALUES ('定期一年','存款期是1年');
 4 INSERT INTO deposit (savingName,descrip) VALUES ('定期二年','存款期是2年');
 5 INSERT INTO deposit (savingName,descrip) VALUES ('定期三年','存款期是3年');
 6 INSERT INTO deposit (savingName) VALUES ('定活两便');
 7 INSERT INTO deposit (savingName) VALUES ('通知');
 8 INSERT INTO deposit (savingName,descrip) VALUES ('零存整取一年','存款期是1年');
 9 INSERT INTO deposit (savingName,descrip) VALUES ('零存整取二年','存款期是2年');
10 INSERT INTO deposit (savingName,descrip) VALUES ('零存整取三年','存款期是3年');
11 INSERT INTO deposit (savingName,descrip) VALUES ('存本取息五年','按月支取利息');
12 SELECT * FROM deposit;
13 
14 INSERT INTO userInfo(customerName,PID,telephone,address )
15      VALUES('张三','123456789012345','010-67898978','北京海淀');
16 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
17      VALUES('1010357612345678',1,1000,1000,1);
18 
19 INSERT INTO userInfo(customerName,PID,telephone)
20      VALUES('李四','321245678912345678','0478-44443333');
21 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
22      VALUES('1010357612121134',2,1,1,2);
23 
24 INSERT INTO userInfo(customerName,PID,telephone)
25      VALUES('王五','567891234532124670','010-44443333');
26 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
27      VALUES('1010357612121130',2,1,1,3);
28 
29 INSERT INTO userInfo(customerName,PID,telephone)
30      VALUES('丁六','567891321242345618','0752-43345543');
31 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID)
32      VALUES('1010357612121004',2,1,1,4);
33 
34 SELECT * FROM userInfo;
35 SELECT * FROM cardInfo;
36 
37 
38 /*
39 张三的卡号(1010 3576 1234 5678)取款900元,李四的卡号(1010 3576 1212 1134)存款5000元,要求保存交易记录,以便客户查询和银行业务统计。
40 说明:当存钱或取钱(如300元)时候,会往交易信息表(tradeInfo)中添加一条交易记录,
41       同时应更新银行卡信息表(cardInfo)中的现有余额(如增加或减少300元)
42       
43 */
44 SELECT * FROM cardInfo;
45 SELECT * FROM tradeInfo;
46 /*--------------交易信息表插入交易记录--------------------------*/
47 INSERT INTO tradeInfo(tradeType,cardID,tradeMoney) 
48       VALUES('支取','1010357612345678',900);  
49 /*-------------更新银行卡信息表中的现有余额-------------------*/
50 UPDATE cardInfo SET balance=balance-900 WHERE cardID='1010357612345678';
51 
52 
53 /*--------------交易信息表插入交易记录--------------------------*/
54 INSERT INTO tradeInfo(tradeType,cardID,tradeMoney) 
55       VALUES('存入','1010357612121134',5000);   
56 /*-------------更新银行卡信息表中的现有余额-------------------*/
57 UPDATE cardInfo SET balance=balance+5000 WHERE cardID='1010357612121134';
58 
59 
60 /*--------检查测试数据是否正确---------*/
61 SELECT * FROM cardInfo;
62 SELECT * FROM tradeInfo;

实现功能:

 1 SELECT * from userinfo;
 2 SELECT * from cardinfo;
 3 SELECT * from deposit;
 4 SELECT * from tradeinfo;
 5 
 6 #修改张三的密码为:123456 李四的密码为123123
 7 UPDATE cardinfo SET `PASSWORD`=123456 WHERE customerID=1;
 8 UPDATE cardinfo SET `PASSWORD`=123123 WHERE customerID=4;
 9 
10 #办理银行卡挂失
11 SELECT cardid 卡号,curID 货币,savingName 储蓄种类, openDate 开户日期, openMoney 开户金额,balance 余额,`password` 密码,IF(IsReportLoss=0,'未挂失','已挂失') 是否挂失,customerName 客户姓名  
12 FROM cardinfo,userinfo,deposit WHERE cardinfo.customerID=userinfo.customerID and cardinfo.savingID=deposit.savingID;/*若全为未挂失则自己修改几条*/
13 
14 #统计银行总存入和总支出
15 SELECT  tradetype 资金流向,SUM(trademoney) 总金额 FROM tradeinfo GROUP BY tradetype;
16 
17 #查询本周开户信息    
18 SELECT cardid 卡号,customerName 客户姓名 ,curID 货币,savingName 储蓄种类, openMoney 开户金额,balance 余额,IF(IsReportLoss=0,'未挂失','已挂失') 账户状态
19 FROM cardinfo,userinfo,deposit WHERE cardinfo.customerID=userinfo.customerID and cardinfo.savingID=deposit.savingID AND WEEK(NOW())=WEEK(opendate);
20 
21 #查询本月交易金额最高的卡号
22 SELECT cardID from tradeinfo WHERE tradeMoney IN(SELECT MAX(tradeMoney) from tradeinfo WHERE MONTH(tradeDate)=MONTH(NOW()))
23 
24 #查询挂失客户
25 SELECT customerName 客户姓名,telephone 联系电话 from userinfo WHERE customerID in
26 (SELECT customerID from cardinfo WHERE IsReportLoss=1);
27 
28 #查询客户余额<200则提醒缴费
29 SELECT customerName 客户名称,telephone 联系电话,balance 存款余额 FROM userinfo,cardinfo WHERE userinfo.customerID=cardinfo.customerID AND balance<200;
30 
31 #银行卡视图
32 DROP VIEW IF EXISTS vw_cardinfo;
33 CREATE VIEW vw_cardInfo 
34 AS 
35 (SELECT cardid 卡号,customerName 客户姓名, curID 货币,savingName 储蓄种类, openDate 开户日期, openMoney 开户金额,balance 余额,`password` 密码,IF(IsReportLoss=0,'未挂失','已挂失') 是否挂失 
36 FROM cardinfo,userinfo,deposit WHERE cardinfo.customerID=userinfo.customerID and cardinfo.savingID=deposit.savingID);
37 
38 #银行卡交易记录视图
39 CREATE VIEW vw_transInfo
40 AS
41 (SELECT tradeDate 交易日期,tradeType 交易类型,cardinfo.cardid 卡号,tradeMoney 交易金额,remark 备注 FROM tradeinfo,cardinfo WHERE tradeinfo.cardID=cardinfo.cardid);

 

posted @ 2020-08-25 16:52  伯驹  阅读(1375)  评论(0编辑  收藏  举报