数据库课程设计报告-ATM.doc

上传人:jian****018 文档编号:8864027 上传时间:2020-04-01 格式:DOC 页数:12 大小:198.50KB
返回 下载 相关 举报
数据库课程设计报告-ATM.doc_第1页
第1页 / 共12页
数据库课程设计报告-ATM.doc_第2页
第2页 / 共12页
数据库课程设计报告-ATM.doc_第3页
第3页 / 共12页
点击查看更多>>
资源描述
(数据库课程设计)设计说明书起止日期: 2011 年 1 月 10 日 至 2011 年 1 月 14 日系别信息工程系学生学号093411245学生姓名徐达班级信息09E3指导教师(签字)伊雯雯课程负责人(签字)朱东2011年 1月 14日目 录一、目的与要求4二、系统分析41. 需求分析(二级标题加粗、宋体小四号,行距采用固定值20磅)42开发及运行环境4三、数据库设计41概念数据库设计42逻辑数据库设计53物理数据库设计5一、创建数据库5二.创建表6三.视图8四.存储过程8四、课程设计中遇到的问题、解决方法、收获和总结12五、参考文献13题目一、目的与要求通过数据库课程设计,进一步掌握数据库系统的理论和方法。培养和锻炼开发管理信息系统的能力。为今后信息系统开发打下良好的基础。本课程环节主要针对关系数据库基础与应用这么课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。主要包括:需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。完成一个小型系统后台数据库的设计与配置。二、系统分析1. 需求分析(二级标题加粗、宋体小四号,行距采用固定值20磅) 需求分析即描述系统的需求,实现哪些具体的功能。2开发及运行环境包括硬件配置、软件平台,开发使用的应用软件及语言等。三、数据库设计1概念数据库设计设计实体联系E-R图(同组相同),实体属性E-R图。 2逻辑数据库设计用户表字段名称数据类型长度约束含义customeridInt4主键约束顾客编号customernamevarchar8非空开户姓名identityCardvarchar18唯一性,检查身份证号telephonevarchar12检查联系电话addressvarchar80非空居住地址银行卡表字段名称数据类型长度约束含义CardnumbInt4主键约束卡号Moneytypevarchar8非空货币种类Inputtypevarchar8唯一性,检查存款类型Opentimedatetime检查开户日期OpenmoneyMoney检查开户金额LeftmoneyMoney检查余额Pwdchar6检查,默认密码YngsChar2默认是否挂失customeridint4外键顾客编号交易信息表字段名称数据类型长度约束含义tradetimeInt4默认交易日期cardnumbvarchar8外键卡号tradetypevarchar18非空交易类型trademoneyvarchar12检查交易金额remarkvarchar80非空备注3物理数据库设计一、创建数据库create database ATMon primary ( name=ATM_mdf, filename=C:ATMATM.mdf, size=3MB, filegrowth=15%, maxsize=100MB),(name=ATM_ndf,filename=C:ATMATM.ndf,size=3MB,maxsize=unlimited,filegrowth=2MB)log on(name=ATM_log,filename=C:ATMATM.log,size=3MB,maxsize=unlimited,filegrowth=15%)数据库的创建,首先分析所需数据的大小,在次,创建主数据文件,辅助数据文件,日志事物文件二.创建表create table customer(customerid int not null identity(1,1) primary key,customername varchar(20) not null ,identityCard varchar(18),telephone char(12),address varchar(80)alter table customer add constraint CK_telephone check (telephone like 0-90-90-9-0-90-90-90-90-90-90-9 or telephone like 0-90-90-9-0-90-90-90-90-90-90-90-9 or telephone like 0-90-90-90-9-0-90-90-90-90-90-90-9 or telephone like 0-90-90-90-9-0-90-90-90-90-90-90-90-9 or telephone like 13 or 5 or 80-90-90-90-90-90-90-90-90-9 and len(telephone)=1) alter table card add constraint CK_leftmoney check(leftmoney =1)alter table card add constraint df_pwd default 888888 for pwdalter table card add constraint CK_pwd check (pwd like 0-90-90-90-90-90-9)alter table card add constraint CK_yngs check(yngs like 是 or yngs like 否)alter table card add constraint df_yngs default 否 for yngsalter table card add constraint fk_customerid foreign key (customerid) references customer(customerid) create table information(tradetime datetime not null,cardnumb char(20) not null,tradetype varchar(4) not null,trademoney money not null,remark varchar(1000)alter table information add constraint df_datetime default (getdate() for tradetime alter table information add constraint ck_tradetype check (tradetype like 存入or tradetype like 支出)alter table information add constraint ck_trademoney check (trademoney 0)alter table information add constraint fk_cardnumb foreign key(cardnumb) references card(cardnumb)表的创建,首先分析字段名称,字段类型,字段大小,约束,经过仔细分析后在创建三.视图create view view_cardInfoasselect cardnumb as 卡号,moneytype as 货币类型,inputtype as 存款类型, opentime as 开户时间,openmoney as 开户金额, leftmoney as 余额, pwd as 密码,yngs as 是/否挂失,customerid as 客户ID from dbo.cardcreate view view_userInfoasselect customerid as 客户ID,customername as 客户姓名,identityCard as 身份证号, telephone as 电话, address as 住址 from dbo.customercreate view view_transInfoasselect tradetime as 交易时间,cardnumb as 卡号,tradetype as 交易类型,trademoney as 交易金额,remark as 备注 from information视图的创建就相对简单一点,通过对表创建视图的查询即可四.存储过程1.存款的存储过程create proc proc_inputMoneycardnumb1 char(20),money1 money ,pwd char(6)asdeclare errorsum intset errorsum=0begin transactiondeclare gs char(2)select gs=yngs from card where cardnumb=cardnumb1 and pwd=pwdif(gs=是)beginprint 交易正在进行中.print 帐户处于挂失状态则不可以存款set errorsum=errorsum+error+1endelse if (cast(money1 as int)%1000)beginprint 交易正在进行中.print 存款金额为100的整数倍set errorsum=errorsum+error+1endelse if(money110000)begin print 交易正在进行中.print 存款金额不能大于10000set errorsum=errorsum+error+1endelsebeginupdate card set leftmoney=leftmoney+money1 where cardnumb=cardnumb1 and pwd=pwddeclare money moneyselect money=leftmoney from card where cardnumb=cardnumb1 and pwd=pwdendif(errorsum0)begin print 交易失败rollback transactionendelsebeginprint 交易正在进行中.print 卡号:+cardnumb1+ 余额+convert(char(20),money)print 交易成功commit transactionend存款的存储过程的创建,首先进行分析,对存储过程的要求进行判断,设计出最完善的事物处理过程,对数据进行处理.2.取款的存储过程的创建create proc proc_takeMoneycardnumb1 char(20),money1 money asdeclare errorsum intset errorsum=0begin transactiondeclare gs char(2)select gs=yngs from card where cardnumb=cardnumb1if(gs=是)beginprint 交易正在进行中.print 帐户处于挂失状态则不可以取款set errorsum=errorsum+error+1endelse if (cast(money1 as int)%1000)beginprint 交易正在进行中.print 取款金额为100的整数倍set errorsum=errorsum+error+1endelse if(money15000)begin print 交易正在进行中.print 取款金额不能大于5000set errorsum=errorsum+error+1endelsebeginupdate card set leftmoney=leftmoney-money1 where cardnumb=cardnumb1declare money moneyselect money=leftmoney from card where cardnumb=cardnumb1if(money1)beginprint 取款后余额不能低于1元set errorsum=errorsum+error+1endendif(errorsum0)begin print 交易失败rollback transactionendelsebeginprint 交易正在进行中.print 卡号:+cardnumb1+ 余额+convert(char(20),money)print 交易成功commit transactionend 取款的存储过程的创建,首先进行分析,对存储过程的要求进行判断,设计出最完善的事物处理过程,对数据进行处理.3随即卡号产生的存储过程create proc proc_randCardIDrandCardID char(20) outputasdeclare r numeric(10,8) select r=rand( (datepart(mm,getdate() )*10000) +(datepart(ss,getdate() )*1000) +datepart(ms,getdate() ) set randCardID=1010 3576 +substring(convert(varchar(10),r),3,4)+ +substring(convert(varchar(10),r),7,8) print 随即卡号是:+randCardIDdeclare rcard char(20)exec proc_randCardID rcard output print 随即卡号是:+rcard首先对随机卡号的产生进行分析,随机产生的卡号产生,对卡号进行判断,要符合卡号的类型,要具有唯一性,不能有两个相同的卡号4开户的存储过程create procedure proc_openAccount customername char(8),telephone char(12),identityCard char(20),openmoney money,leftmoney money,inputtype char(8),pwd char(6)as declare mycardID char(20) execute proc_randCardID mycardID output while exists (select * from dbo.card where cardnumb=mycardID) execute proc_randCardID mycardID output print 尊敬的客户,开户成功!系统为您产生的随机卡号为:+mycardID print 开户日期+convert(char(10),getdate(),111)+ 开户金额:+convert(varchar(20),openmoney) insert into customer(customername,identityCard,telephone ) values(customername,identityCard,telephone) declare cur_customerID int select cur_customerID=customerid from customer where identityCard=identityCard insert into card(cardnumb,inputtype,openmoney,leftmoney,pwd,customerID) values(mycardID,inputtype,openmoney,leftmoney,pwd,cur_customerID) go开户的要求必须满足,只要满足了要求,开户即可5交易的存储过程create proc trademoneycardnumb1 char(20),pwd char(6),cardnumb2 char(20),money moneyasdeclare errorsum intset errorsum=0begin transaction if(money5000)beginset errorsum=errorsum+error+1endupdate card set leftmoney=leftmoney-money where cardnumb=cardnumb1 and pwd=pwdset errorsum=errorsum+errordeclare leftmoney moneyselect leftmoney=leftmoney from card where cardnumb=cardnumb1if(leftmoney 1)set errorsum=errorsum+error+1update card set leftmoney=leftmoney-money where cardnumb=cardnumb2 set errorsum=errorsum+errorif(errorsum0)beginprint 交易失败rollback transactionendelsebegindeclare nowmoney moneyselect nowmoney=leftmoney from card where cardnumb=cardnumb2 print 开始转帐,请稍后.print 交易正在进行,请稍后.print 交易成功,交易金额为+convert(char(10),money)print 卡号为:+cardnumb2+余额为:+convert(char(10),nowmoney)print 转帐成功 commit transactionend根据卡号,密码,只要符合要求,即可进行转账操作四、课程设计中遇到的问题、解决方法、收获和总结要求1000字左右,最低不少于700字,作为最终成绩评定的重要依据。课程设计,我想这是一次自我的最好测试,是检验和完善自己的一次最好机会,同时,也是自己在学习上的一次挑战吧。课程设计过程中,有太多值得谈论和回顾的了,其中也遇到了许多问题,比如说,在设计和创建表的时候,对表添加约束,身份证和电话的约束的创建,这可谓是一大难题,在自己一段探索都无法解决的时候,最终,还是通过老师的解释,讲解才得以解决;另外,就是查询本星期内创建的用户,在做这个问题时,需要调用一个时间函数datediff(week,opentime,getdate()=7 这个,曾经,无意间在一本书SQL server 范例开发大全中看过,还有就是对随机卡号的生产,调用函数select r=rand( (datepart(mm,getdate() )*10000) +(datepart(ss,getdate() )*1000) +datepart(ms,getdate() ),呵呵,当然,这也是在老师的指导下完成的。在课程设计整个过程中,有太多的问题,太多的疑问,最终,通过老师的帮助,网络的搜索,总算对问题一一的进行解决。课程设计整个过程中,学会最深的不是如何对SQL语句的掌握,而是对课程设计的整个过程有所了解。相信通过次的课程设计,对以后的课程设计已经打下了良好的基础。课程设计整个过程,非常感谢伊老师给予的帮助和指导,以及在设计过程中给予帮助的同学们,谢谢你们的帮助。五、参考文献1 李俊民 王皓 刘丽霞 等 SQL server 范例开发大全M 清华大学出版社 20102 http:/www.wanjuanchina.netEB/OL3 MS-SQL Server杂志.创刊号 J
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!