您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数据库大作业——一卡通课程设计
数据库应用大作业实验报告课程名称:Oracle数据库试验实验项目:校园一卡通的设计与实现姓名:任秀虎学号:13101192班级:软件开发技术校园一卡通的设计与实现一、引言:1.1背景一卡通网校园一卡通系统是数字化校园的基础工程,是数字化校园中有机的、重要的组成部分。为数字化校园提供了全面的数据采集平台,结合学校的管理信息系统和网络,形成全校范围的数字空间和共享环境。为学校管理人员提供具有开放性、灵活性、面向学校的应用服务管理平台、是管理科学化的必要前提和基本途径。以校园一卡通系统为平台,实现以人为本,并可充分利用银行的金融服务,实现“一卡在手,走遍校园”,必将满足学校数字化建设的需求及目的。1.2简要需求说明有多个校区,每个校区都有自己独立的服务器,校区间通过宽带连接,校园卡在校区间可通用,前提是服务器之间数据要同步。针对学校的实际情况,校园一卡通可以实现以下几个方面的功能:①电子钱包功能:校区内的所有的食堂,都可以使用一卡通进行交易。②管理(身份识别)功能:校内使用的各种证卡均可由校园一卡通代替,实现图书馆、电子阅览室、学生公寓、考勤的身份识别一卡通。实现校内所有重要场所的出入门禁管理。③.金融功能:学生可以使用与校园卡关联的银行卡进行存取款、转账结算等金融业务1.3系统需求:中心数据库:oracle11g操作系统:Windowsxp,Linux内存要求:不小于2G交换空间:不小于8G工作站操作系统:Windows2000/XP等系统容量:系统帐户容量10万,可以扩充子系统接入数量:128个,可以扩充网络设置:根据学校建筑布局结合现有走线管道,并为安全性考虑,提供两种一卡通网络的组建方案:(1)在现有校园主干网中分一个VLAN(虚拟局域网),将所有一卡通系统的计算机全部接入这个VLAN,以达到一卡通网络与校园网逻辑上分开互相不能访问。(2)利用现有管道重新铺设线路并添置新的网络设置(交换机、集线器等),将一卡通系统组成一个单独的网络,这样在物理上与校园网分开。校区互联:应用代理服务器机制,代理服务器只接受用户的查询并转发服务器中的数据,在代理服务器上运行专用的软件,定时负责与各个校区的服务器交换数据。例图如下:1.4系统设计原则:安全、可靠、高效、易扩展1.5设计背景:校区A校区B校区C代理服务器项目名称:校园一卡通系统用户:大学或高级中学1.6参考资料:1.《oracle10g:ProgramwithPL/SQL》2.《数据库系统概论》3.CSDN有关Oracle数据库资料二、数据库的物理结构设计2.1数据库设计:全局数据库名称:orcl数据库字符集选择:采用UTF8字符集数据库的DB_FILES设置使用默认的值200OLTP类型:db_block_size用比较小的取值范围:2048或40962.2数据库控制文件配置:D:\ORACLE\ORADATA\ORCL\CONTROL01.CTLD:\ORACLE\ORADATA\ORCL\CONTROL02.CTLD:\ORACLE\ORADATA\ORCL\CONTROL03.CTL2.3数据库重做日志文件配置:D:\ORACLE\ORADATA\ORCL\REDO01.LOGD:\ORACLE\ORADATA\ORCL\REDO02.LOGD:\ORACLE\ORADATA\ORCLREDO03.LOG三、数据库的逻辑结构设计3.1有关表空间的设计与实现:1、管理员信息表:admin_info记录系统管理者的有关信息,权限分三级,用数字1,2,3来表示,权限大小递减Createtableadmin_info(admin_idvarchar2(20)constraintadmin_info_pkprimarykey,admin_namevarchar2(20)notnull,admin_passwordvarchar2(15)notnull,admin_privilegenumber(1));2、用户信息表:user_info记录学生用户的有关信息用户编号为学号或教职工编号Createtableuser_info(user_numvarchar2(20)constraintstudent_info_pkprimarykey,user_namevarchar2(20)notnull,user_card_idvarchar2(20)notnull,user_sexvarchar2(4)notnull,user_departmentvarchar2(30)notnull,Constraintuser_info_fkforeignkey(user_card_id)referencesuser_info(user_num));3、一卡通信息表:用户编号姓名密码权限用户编号姓名信息卡号性别院系/部门info_card记录一卡通用户的有关信息0表示为非挂失状态,1表示为挂失状态Createtableinfo_card(card_numvarchar2(20)primarykey,card_user_idvarchar2(20),card_leftmoneynumber(10,2),card_passwordvarchar2(20)notnull,card_lostednumber(1)notnulldefault(0),Constraintinfo_card_fkforeignkey(card_user_id)referencesinfo_card(card_num));4、流水帐消费记录表:consume_info记录用户消费情况Createtableconsume_info(consume_numvarchar2(20)notnull,consume_moneynumber(10,2)notnull,consume_datevarchar2(20)notnull,concume_machine_idnumber(3)notnull);5、存款/转账记录表:save_money记录学生存款的情况此表记录学生存现、转账情况。如果是转账:存款类型为0如果是存现:存款类型为1操作员编号为POS机的编号(自动编号为0000)Createtablesave_money(信息卡号用户编号剩余金额密码挂失信息卡号消费金额消费日期终端号信息卡号存款金额存款日期存款类型操作员编号save_user_idvarchar2(20)primarykey,save_moneynumber(10,2)notnull,save_datevarchar2(20)notnull,save_typenumber(1)notnulldefault(0),save_operator_idvarchar2(6)notnull);6、连接银行卡和一卡通的中间记录表(银校表):bank_campus仅用来作为一卡通用户进行转账时的用户安全验证Createtablesave_money(bank_campus_useridvarchar2(20)primarykey,bank_campus_banknumvarchar2(30)notnull,bank_campus_bankpasswordvarchar2(6)notnull,bank_campus_bankbookvarchar2(30)notnull,Bank_campus_transfernumber(10,2)notnulldefault(50.00),bank_campus_idcardvarchar2(20)notnull);7、假设用户在银行开的账户表如下:bank_accountCreatetablebank_account(bank_account_bankbookidvarchar2(30)primarykey,bank_account_banknumvarchar2(30)notnull,bank_account_bankpasswordvarchar2(6)notnull,bank_account_namevarchar2(20)notnull,Bank_account_leftmoneynumber(10,2)notnull,bank_account_idcardvarchar2(20)notnull);8、退款销户记录表:信息卡号储蓄卡号储蓄密码储蓄折号转账金额身份证号储蓄折号储蓄卡号储蓄密码用户姓名剩余金额身份证号remove_user_info用于记录退款销户情况Createtableremove_user_info(remove_useridvarchar2(20)primarykey,remove_moneynumber(10,2)notnull,remove_datevarchar2(20)notnull,remove_typenumber(1)notnull,remove_operatorvarchar2(10)notnull);3.2有关表索引的设计与实现:1.对学生用户表按院系/部门建立索引:index_studentCreateindexindex_studentonuser_info(user_department);2.对一卡通信息表的挂失字段建立索引:index_card_lostCreateindexindex_card_lostoninfo_card(card_losted);3.3有关视图的设计与实现:1、终端交易记录视图:view_terminal_recordCreateorreplaceviewview_terminal_record(terminal_id,terminal_trademoney,terminal_date)Asselectconcume_machine_id,sum(consume_money),consume_dateFromconsume_infoWhereconcume_machine_id=&p_terminal_idOrderbyconcume_machine_id,to_date(consume_date,'DD-Mon-YY');用户编号退款金额退款日期操作类型操作员终端号交易金额消费日期3.4PL/SQL程序实现(存储过程和函数)在用户存在且一卡通没有挂失的条件下实现1、存现函数:Fun_save_money用来完成对一卡通现金的存储,存款不成功返回值为False,存现成功则返回为TrueCreateorreplacefunctionFun_save_money(P_useridINinfo_card.Card_num%TYPE,p_save_moneyINinfo_card.Card_leftmoney%TYPE,P_operatoridINvarchar2,P_show_messageOUTvarchar2)returnbooleanIsBeginIfp_save_money0thenUpdateinfo_cardSetcard_leftmoney=card_leftmoney+p_save_moneyWherecard_num=p_userid;Insertintosave_moneyValues(p_userid,p_save_money,to_char(sysdate,'yyyy-mm-ddhh:mi:ss'),1,p_operatorid);P_show_message='用户'||p_userid||‘存现成功!’;Returntrue;ElseP_show_message=‘存款金额非法!’;Retrunfalse;EndifEndFun_save_money;2、转账函数:Fun_hand_transfer和Proc_auto_transfer用来从银行储蓄卡里面向一卡通里充值,可以自动充值也可手动充值。当一卡通余额不足10元时系统可以自动向一卡通充值(默认值50元,可以修改),用户也可手动用储蓄卡向一卡通充值。手动充值函数:Fun_ha
本文标题:数据库大作业——一卡通课程设计
链接地址:https://www.777doc.com/doc-5415811 .html