




免费预览已结束,剩余10页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库应用大作业实 验 报 告课程名称:Oracle数据库试验实验项目:校园一卡通的设计与实现姓 名:任秀虎学 号:13101192班 级:软件开发技术校园一卡通的设计与实现一 、引言:1.1背景 一卡通网 校园一卡通系统是数字化校园的基础工程,是数字化校园中有机的、重要的组成部分。为数字化校园提供了全面的数据采集平台,结合学校的管理信息系统和网络,形成全校范围的数字空间和共享环境。为学校管理人员提供具有开放性、灵活性、面向学校的应用服务管理平台、是管理科学化的必要前提和基本途径。以校园一卡通系统为平台,实现以人为本,并可充分利用银行的金融服务,实现“一卡在手,走遍校园”,必将满足学校数字化建设的需求及目的。1.2简要需求说明 有多个校区,每个校区都有自己独立的服务器,校区间通过宽带连接,校园卡在校区间可通用,前提是服务器之间数据要同步。 针对学校的实际情况,校园一卡通可以实现以下几个方面的功能:1 电子钱包功能:校区内的所有的食堂,都可以使用一卡通进行交易。2 管理(身份识别)功能:校内使用的各种证卡均可由校园一卡通代替,实现图书馆、电子阅览室、学生公寓、考勤的身份识别一卡通。实现校内所有重要场所的出入门禁管理。3 .金融功能:学生可以使用与校园卡关联的银行卡进行存取款、转账结算等金融业务1.3 系统需求: 中心数据库:oracle11g 操作系统:Windows xp,Linux 内存要求:不小于2G 交换空间:不小于8G 工作站操作系统:Windows 2000/XP等 系统容量:系统帐户容量10万,可以扩充 子系统接入数量:128个,可以扩充 网络设置:根据学校建筑布局结合现有走线管道,并为安全性考虑,提供两种一卡通网络的组建方案: (1)在现有校园主干网中分一个VLAN(虚拟局域网),将所有一卡通系统的计算机全部接入这个VLAN,以达到一卡通网络与校园网逻辑上分开互相不能访问。 (2)利用现有管道重新铺设线路并添置新的网络设置(交换机、集线器等),将一卡通系统组成一个单独的网络,这样在物理上与校园网分开。 校区互联: 应用代理服务器机制,代理服务器只接受用户的查询并转发服务器中的数据,在代理服务器上运行专用的软件,定时负责与各个校区的服务器交换数据。 例图如下:校区B校区A 代理服务 器 校区C 1.4系统设计原则: 安全、可靠、高效、易扩展1.5 设计背景: 项目名称:校园一卡通系统 用户:大学或高级中学1.6 参考资料: 1.oracle10g:Program with PL/SQL 2.数据库系统概论 3.CSDN有关Oracle数据库资料 二 、数据库的物理结构设计 2.1 数据库设计:l 全局数据库名称:orcl l 数据库字符集选择 :采用UTF8字符集l 数据库的DB_FILES 设置 使用默认的值200l OLTP类型:db_block_size 用比较小的取值范围: 2048 或 4096 2.2 数据库控制文件配置: D:ORACLEORADATAORCLCONTROL01.CTL D:ORACLEORADATAORCLCONTROL02.CTL D:ORACLEORADATAORCLCONTROL03.CTL 2.3 数据库重做日志文件配置: D:ORACLEORADATAORCLREDO01.LOG D:ORACLEORADATAORCLREDO02.LOG D:ORACLEORADATAORCLREDO03.LOG三 、数据库的逻辑结构设计 3.1 有关表空间的设计与实现: 1、管理员信息表: admin_info 记录系统管理者的有关信息,权限分三级,用数字1,2,3来表示,权限大小递减用户编号姓名密码权限 Create table admin_info ( admin_id varchar2(20) constraint admin_info_pk primary key , admin_name varchar2(20) not null, admin_password varchar2(15) not null, admin_privilege number(1); 2、用户信息表: user_info记录学生用户的有关信息用户编号姓名信息卡号性别院系/部门 用户编号为学号或教职工编号Create table user_info( user_num varchar2(20) constraint student_info_pk primary key , user_name varchar2(20) not null, user_card_id varchar2(20) not null , user_sex varchar2(4) not null, user_department varchar2(30) not null, Constraint user_info_fk foreign key( user_card_id) references user_info(user_num) ); 3、一卡通信息表: info_card 记录一卡通用户的有关信息信息卡号用户编号 剩余金额密 码挂 失 0表示为非挂失状态,1表示为挂失状态 Create table info_card( card_num varchar2(20) primary key, card_user_id varchar2(20), card_leftmoney number(10,2) , card_password varchar2(20) not null, card_losted number(1) not null default(0), Constraint info_card_fk foreign key( card_user_id) references info_card(card_num) );4、 流水帐消费记录表: consume_info 记录用户消费情况信息卡号消费金额消费日期终端号 Create table consume_info( consume_num varchar2(20) not null, consume_money number(10,2) not null, consume_date varchar2(20) not null, concume_machine_id number(3) not null);5、 存款/转账记录表:save_money 记录学生存款的情况信息卡号存款金额存款日期存款类型操作员编号 此表记录学生存现、转账情况。 如果是转账:存款类型为 0 如果是存现:存款类型为 1 操作员编号为POS机的编号(自动编号为0000)Create table save_money( save_user_id varchar2(20) primary key, save_money number(10,2) not null, save_date varchar2(20) not null, save_type number(1) not null default(0), save_operator_id varchar2(6) not null);6、 连接银行卡和一卡通的中间记录表(银校表):bank_campus 信息卡号储蓄卡号储蓄密码储蓄折号转账金额身份证号 仅用来作为一卡通用户进行转账时的用户安全验证Create table save_money( bank_campus_userid varchar2(20) primary key, bank_campus_banknum varchar2(30) not null, bank_campus_bankpassword varchar2(6) not null, bank_campus_bankbook varchar2(30) not null , Bank_campus_transfer number(10,2) not null default(50.00), bank_campus_idcard varchar2(20) not null); 7、假设用户在银行开的账户表如下:bank_account储蓄折号储蓄卡号储蓄密码用户姓名剩余金额身份证号 Create table bank_account( bank_account_bankbookid varchar2(30) primary key, bank_account_banknum varchar2(30) not null, bank_account_bankpassword varchar2(6) not null, bank_account_name varchar2(20) not null , Bank_account_leftmoney number(10,2) not null , bank_account_idcard varchar2(20) not null); 8、退款销户记录表: remove_user_info 用于记录退款销户情况用户编号退款金额 退款日期操作类型操作员 Create table remove_user_info( remove_userid varchar2(20) primary key, remove_money number(10,2) not null, remove_date varchar2(20) not null, remove_type number(1) not null, remove_operator varchar2(10) not null); 3.2 有关表索引的设计与实现: 1.对学生用户表按院系/部门建立索引:index_student Create index index_student on user_info(user_department); 2.对一卡通信息表的挂失字段建立索引:index_card_lost Create index index_card_lost on info_card(card_losted); 3.3 有关视图的设计与实现: 1、终端交易记录视图:view_terminal_record终端号交易金额消费日期 Create or replace view view_terminal_record (terminal_id,terminal_trademoney,terminal_date) As select concume_machine_id,sum(consume_money),consume_date From consume_info Where concume_machine_id = &p_terminal_id Order by concume_machine_id,to_date(consume_date,DD-Mon-YY); 3.4 PL/SQL程序实现(存储过程和函数) 在用户存在且一卡通没有挂失的条件下实现 1、存现函数 :Fun_save_money用来完成对一卡通现金的存储, 存款不成功返回值为False,存现成功则返回为True Create or replace function Fun_save_money ( P_userid IN info_card.Card_num%TYPE, p_save_money IN info_card.Card_leftmoney%TYPE, P_operatorid IN varchar2, P_show_message OUT varchar2 ) return boolean Is Begin If p_save_money 0 then Update info_card Set card_leftmoney=card_leftmoney+p_save_money Where card_num=p_userid; Insert into save_money Values(p_userid,p_save_money,to_char(sysdate,yyyy-mm-dd hh:mi:ss),1,p_operatorid); P_show_message=用户 p_userid存现成功!; Return true; Else P_show_message = 存款金额非法!; Retrun false; End if End Fun_save_money; 2、转账函数:Fun_hand_transfer和Proc_auto_transfer 用来从银行储蓄卡里面向一卡通里充值,可以自动充值也可手动充值。当一卡通余额不足10元时系统可以自动向一卡通充值(默认值50元,可以修改),用户也可手动用储蓄卡向一卡通充值。 手动充值函数:Fun_hand_transfer Create or replace function Fun_hand_transfer ( P_posid IN number, p_tansfer_money IN bank_campus.bank_campus_transfer%TYPE, P_userid IN bank_campus.bank_campus_userid %TYPE, P_bank_account_num IN bank_campus.bank_campus_banknum%TYPE, P_bank_account_psw IN bank_campus.bank_campus_bankpassword%TYPE, P_show_message OUT varchar2 )return boolean Is V_bank_money number(10,2); Begin If p_tansfer_money 0 then V_bank_money = Fun_bank_interface(p_tansfer_money,P_bank_account_num,P_bank_account_psw); If v_bank_money !=0 then Update table_info_card -更新一卡通信息表 Set card_leftmoney=card_leftmoney + v_bank_money Where card_num=p_userid; Insert into save_money -记录转账信息 Values(p_userid,p_tansfer_money,to_char(sysdate,yyyy-mm-dd hh:mi:ss),0,p_posid); P_show_message=用户 p_userid转账成功!; Return true; Else P_show_message=用户 p_userid转账失败!; Retrun false; End if Else P_show_message=输入金额非法!; Return false; End if End Fun_hand_tansfer 自动充值存储过程: Proc_auto_transfer Create or replace procedure Proc_auto_transfer Is V_money number(10,2); V_addmoney number(10,2); V_user_id varchr2(20); V_bank_cardid varchar2(30); V_bank_psw varchar2(6); Cursor auto_transfer_cursor is Select card_num,card_leftmoney From info_card Where card_leftmoney 0 and v_money-ptansfer_num0) then Update bank_account Set Bank_account_leftmoney=bank_account_leftmoney-p_tansfer_num Where P_tansfer_accountid=bank_account_banknum And P_tansfer_accountpassword=bank_account_bankpassword ; Update P_show_message=转账成功!; Return p_tansfer_num; Else P_show_message=转账失败!; Return 0; End if End Fun_bank_interface; 3、就餐消费函数:Fun_consume Create or replace function Fun_consume ( p_user_id IN info_card.card_num%TYPE, P_consume_money IN consume_info.consume_money%TYPE, P_terminal_id IN consume_info.concume_machine_id%TYPE, P_show_message OUT varchar2 ) return boolean Is V_leftmoney number(10,2); Begin Select card_leftmoney Into v_leftmoney From info_card Where card_num=p_user_id ; If v_leftmoney p_consume_money then Update info_card Set card_leftmoney=card_leftmoney - p_consume_money Where card_num=p_user_id ; Insert into consume_info Values(p_user_id,p_consume_money,to_char(sysdate,yyyy-mm-dd hh:mi:ss),p_terminal_id); P_show_message=用户|p_user_id|消费成功!; Return true; Else P_show_message=用户|p_user_id|消费失败!; Return false; End if End Fun_consume 4、退款函数:Fun_back_remove 记录用户退款及删除用户并写入日志表 Create or replace function Fun_back_remove ( p_user_id IN info_card.card_num%TYPE, P_operator IN remove_user_info.remove_operator%TYPE, )return varchar2 Is V_back_money number(10,2); Begin Select card_leftmoney Into v_back_money From info_card Where p_user_id = card_num; If v_back_money0 then Delete from bank_campus where bank_campus_userid=p_user_id; Delete from info_card where card_num=p_user_id; Insert into remove_user_info Values(p_user_id,v_back_money,to_char(sysdate,yyyy-mm-dd hh:mi :ss),0,p_operator); Return (请退给用户|p_user_id|v_back_money|元|并删除用户!); Else Delete from bank_campus where bank_campus_userid=p_user_id; Delete from info_card where card_num=p_user_id; Insert into remove_user_info Values(p_user_id,v_back_money,to_char(sysdate,yyyy-mm-dd hh:mi :ss),0,p_operator); Return(用户|p_user_id|一卡通里已无余额!|并删除用户!); End if End Fun_back_remove 四 、数据库运行与维护方案 4.1 数据库的备份策略 DBA要针对一卡通系统的特殊性制定出多种备份方案,以保证一旦发生故障能尽快将数据库恢复到某种一致状态,并尽可能减少对数据库的损坏。 1.可利用oracle数据库所提供的备份技术进行数据库级、用户级及表级备份 2.可利用动态增量转储技术对数据库进行周期性备份 3.可定时对控制文件和日志文件进行备份 4.可以采用数据库镜像文件的方式对其进行转储备份 4.2数据库的恢复策略 由于计算机系统中的硬件故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库的数据正确性,重则破坏数据库,使数据库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 股权质押合同中免责条款
- 稀土金属矿床开采的矿区文化建设与传承考核试卷
- 窄轨机车车辆制造过程中的品质监控考核试卷
- 智能护眼台灯产品对比与评估考核试卷
- 稀土金属在光电子学中的应用考核试卷
- 少年宫主持人培训课程
- 糕点烘焙工艺优化考核试卷
- 空中交通管制员航空器飞行特性考核试卷
- 绿色金融产品的设计与投资考核试卷
- 胃息肉护理查房
- 第18课《井冈翠竹》课件-2024-2025学年统编版语文七年级下册
- 公立医院成本核算指导手册
- MOOC 中医与辨证-暨南大学 中国大学慕课答案
- 年产10吨功能益生菌冻干粉的工厂设计改
- 三年级上册语文阅读同步扩展课件-第十五讲 童话寓言的阅读技巧(共14张PPT)-人教(部编版)
- 机油滤清器工作原理剖析
- 执行异议及复议课件
- 安全生产管理组织机构设置图
- 智能健身镜行业分析及案例
- 中联HIS系统挂号收费 操 作 说 明
- HIT(肝素诱导的血小板减少症)课件
评论
0/150
提交评论