1、题 目:校园一卡通管理系统摘要:校园一卡通将管理、生活、消费、身份认证等多个功效集中于一体,提升了学生校园生活效率。该校园一卡通管理系统包含三个子系统:校园卡日常管理、消费管理、身份认证。每个子系统又包含多个功效模块,并提供了对各功效模块查询和更新功效。该系统开发由系统需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、数据库实施阶段等阶段组成。关键字:一卡通 日常管理 消费管理 身份认证 1 系统需求分析阶段1.1 需求分析目标针对大学学生日常生活和学习管理情况实地调查加自己亲身体验,了解了现在应用相关大学校园一卡通管理系统应用情况,并充足体会到该模式相对于人工管理模式简单、高效。基于以
2、上情况,目标是自行设计一个模拟大学校园一卡通管理系统,在设计过程中,加深对校园一卡通了解,增强对数据库知识了解及SQL语言实际应用,训练设计开发数据库能力。1.2 需求分析任务(1)处理对象:该系统关键处理对象有:学生基础信息、校园卡基础信息、校园卡日常管理基础信息、餐厅消费基础信息、超市基础信息、身份认证基础信息、图书管理基础信息等。各个对象包含信息以下所表示(具体数据见于数据字典):1学生基础信息(Student):包含学生身份证号、学生学号、学生姓名、学生性别、学生出生年份、学生所在院系、学生专业、学生所在班级等方面信息,能够方便学生信息查询和更新;2“校园卡”基础信息(Card):包含
3、校园卡卡号、持卡人学生学号、持卡学生姓名、持卡学生性别、校园卡状态、校园卡内余额;3校园卡日常管理基础信息(CardManage):包含四个数据结构办卡信息、挂失信息、解挂信息、充值信息,每个数据结构中数据项见数据字典;4餐厅基础信息(cateen):包含餐厅编号、餐厅名称、餐厅责任人、餐厅位置,具体数据项见数据字典;5超市基础信息(supmanage):包含超市编号、超市名称、超市责任人、超市位置,具体数据项见数据字典; 6消费基础信息(Busmanage):包含消费编号、消费地点、卡号、消费时间、消费金额,具体数据项见数据字典;7. 身份认证基础信息(Identity):包含四个数据构Do
4、rmInf (学生宿舍楼基础信息),DormPress(学生归宿刷卡信息),LibInf(图书馆基础信息),LibPress(借书基础信息),具体数据项见数据字典;(2)处理功效要求系统关键完成一下多个功效:1学生基础信息查询和更新;2校园卡日常事务管理情况基础信息查询和更新;3校园卡在某个时刻所处状态查询;4餐厅基础信息查询和修改;5超市基础信息查询和修改; 6学生消费额(包含餐厅,超市,校车消费)基础信息查询;(3)安全性和完整性要求描述学生基础信息、校园卡日常事务管理基础信息、“校园卡”基础信息、餐厅消费基础信息、超市消费基础信息、身份认证基础信息中数据项能否为null,和部分用户自定义
5、完整性(符合实际要求)。1.2.3 需求分析阶段结果(1)校园卡一卡通管理系统业务步骤图校园卡日常管理业务步骤图:校园卡中心充值提交费用申请办卡学生审批提交个人信息办理挂失办了解挂办理业务合格超市消费业务步骤图:累计此次消费总价格超市销售员累计此次消费挑选商品学生消费够此次消费刷卡不够此次消费取消卡内信息宿舍身份认证管理业务步骤图:存放刷卡人信息刷卡回宿舍学生是否为该宿舍楼学生获取信息成功刷卡否报警是校车管理业务步骤图:上车累计此次消费学生消费够此次消费刷卡不够此次消费取消卡内信息(3)数据步骤图顶层数据步骤图:身份确定申请审批统计D0审批信息事务申请消费信息请求学生个人信息学生个人信息P0学
6、生事务处理事务申请校园卡事务管理系统校园卡中心身份确定反馈消费反馈图2.0 顶层数据步骤图第1层数据步骤图:P0身份认证反馈身份认证申请消费反馈消费信息请求学生个人信息P1审批信息事务申请学生个人信息P3P2学生事务申请日常事务处理图书借阅消费事务处理事务处理校园卡中心第1层数据步骤图第2层数据步骤图: 从日常事务处理角度出发:P1充值统计D1.4充值申请P1.2P1.1费用办卡管理充值管理充值申请个人资料挂失申请办卡申请办卡申请审批审批个人资料个人资料学生办卡统计D1.1挂失申请P1.3审批挂失管理解挂申请解挂统计挂失统计D1.2个人资料P1.4审批解挂申请解挂管理D1.3D1.3第2层数据
7、流图(从日常管理角度)第2层数据步骤图: 从校园卡消费管理角度出发:P2饭菜名目饭菜价格P2.2P2.1P2付费选择校车购物名目学生消费管理超市购物餐厅买饭物品价格消费反馈消费请求消费统计D2P2.3乘坐校车第2层数据流图(从消费角度)第2层数据步骤图:从校园卡身份认证管理角度出发:P3借书刷卡.身份确定P3.1身份认证请求P3图书馆学生身份确定身份认证D3身份认证统计第2层数据流图(从身份认证角度)(4)数据字典(a)数据项:系统包含数据项有27项表1.1 数据项列表数据项编号数据项名称简述类型及宽度取值范围DI-1Sid学生身份证号char(18)DI-2Sno学生学号char(8)DI-
8、3Sname学生姓名char(10)DI-4Sage学生性别char(4)男、女DI-5Sbirth学生出生年char(10)DI-6Sdept学生所在院系char(20)DI-7Sspecial学生所在专业char(20)DI-8Sclass学生所在班级char(20)DI-9Saddr学生生源地char(6)DI-10Cardno校园卡卡号char(8)DI-11Cardstate校园卡状态char(6)可用、不可用DI-12Cardmoney校园卡内余额FloatDI-13Cardstyle校园卡类型char(10)“学生卡”、“老师卡”DI-14Cardtime办理时间char(10)
9、DI-18Gsrq挂失所在时间DatetimeDI-20Jgrq解挂时间DatetimeDI-21Czrq充值时间DatetimeDI-22Czje充值金额FloatDI-23Czno充值次数编号IntDI-24Pmoney此次刷卡金额FloatDI-25Brno借书编号char(10)DI-26Bookno图书编号char(10)DI-27Booklist已借数量Int(b)数据结构:表1.2 数据结构列表数据结构编号数据结构名称数据结构别名数据结构含义数据项组成DS-1学生信息Student统计学生信息Sid、Sno、Sname、Ssex、Sbirth、Sdept、Sspecial、 Sc
10、lass、SaddrDS-2挂失信息LosInf统计挂失信息Cardno、Sno、Sid、Gsrq、jbrDS-3充值信息FillInf统计充值相关信息Czno、Cardno、Sno、Czlx、Czje、jbrDS-4校园卡信息Card统计校园卡信息Cardno、Sno、Sid、Cardstates、CardmoneyDS-5学生餐厅信息DinInf统计餐厅信息Dinno、Dinname、Dinmanage、DinaddrDS-6超市信息SupInf统计超市信息Supno、Supname、Supmanage、SupaddrDS-8消费刷卡信息PressInf消费刷卡统计Pressno、Ppla
11、ce、Pno、Cardno、Pmoney、ptime、Pmanage、PaddrDS-10归宿刷卡信息DormPress统计归宿刷卡信息Sno、Sid、Dormno、BacktimeDS-11图书馆信息LibInf统计图书馆信息Libno、Libname、LibregionDS-12借书信息LibPress统计借书信息Brno、Bookno、Cardstate、Borlist、Libno2 概念设计阶段2.1 引言概念设计阶段关键是将需求分析阶段得到用户需求抽象为信息结构(概念模型)过程,它是整个数据库设计关键。2.2 概念模型设计(1)各部分E-R图。(a)学生校园卡关系11学生校园卡拥有分
12、E-R图1(b)校园卡日常管理关系m1学生校园卡中心服务分E-R图2(c)校园卡消费关系餐厅刷卡mnn1含有餐厅餐厅刷卡机校园卡分E-R图3超市刷卡nmn1含有超市超市刷卡机校园卡分E-R图411m1乘车刷卡校车含有校园卡校车刷卡机分E-R图5(d)校园卡身份认证图书馆刷卡机1m校园卡分E-R图6借书刷卡进出刷卡校园卡门禁系统刷卡机1m分E-R图7(2)各分ER图中关键实体和联络属性以下所表示:学生:(学号,姓名,性别,出生日期,身份证号,学院,专业,班级,生源地)校园卡:(校园卡卡号,持卡人学号,持卡人姓名,持卡人身份证号,持卡人性别,卡内余额,校园卡可用性)服务:(此次服务编号,校园卡卡号
13、,服务类型,服务时间,服务中心地址)校园卡中心:(服务中心编号,服务中心地址,服务中心责任人)超市:(超市编号,超市名称,超市责任人,超市所在校区)超市刷卡:(此次消费编号,超市编号,校园卡卡号,消费金额,消费时间)餐厅:(餐厅编号,餐厅名称,餐厅责任人,餐厅所在校区)餐厅刷卡:(此次消费编号,餐厅编号,校园卡卡号,消费金额,消费时间)校车:(校车编号,校车类型,校车司机)乘车刷卡:(此次消费编号,校车编号,校园卡卡号,消费金额,消费时间)图书馆:(图书馆编号,图书馆名称,图书馆所在校区)借书:(借书编号,校园卡可用性,已借图书,图书馆编号)宿舍楼:(宿舍楼编号,宿舍楼学生类型,宿舍楼所在校区
14、)进出刷卡:(归宿编号,校园卡卡号,学生学号,宿舍楼编号,刷卡时间)(注:因为属性较多,全全部写到E-R图中显得很乱,此处将各属性列出。)(3)将E-R图合并,根据要求消除属性冲突、命名冲突、结构冲突等,得到初步E-R图,在此基础上消除冗余得到下图基础E-R图: m1服务校园卡中心学生拥有1111归宿检测借书刷卡宿舍楼图书馆mmm校园卡1mnm1餐厅含有餐厅刷卡机餐厅刷卡mn1m含有超市超市刷卡机超市刷卡乘车刷卡校车刷卡机1111校车含有基础E-R图3 逻辑设计阶段3.1逻辑设计任务和目标系统逻辑设计任务是将概念设计阶段设计好基础E-R图转换为选择DBMS产品所支持数据模型相符合逻辑结构。具体
15、内容包含数据组织(将E-R图转换成具体关系模型、模型优化、数据库模式定义、用户子模式(视图)设计)、数据处理(画出系统功效模块图)两大任务。3.2数据组织3.2.1将E-R图转换为关系模型由以上分析,能够将学生实体、校园卡实体、校园卡中心实体、餐厅实体、超市实体、校车实体、宿舍楼实体、图书馆实体分别转化为单独关系模型。为了方便同学查询餐厅、超市和校车消费情况,特将消费性刷卡联络转化为独立关系模式;为了了解同学归宿信息,将身份认证型进出刷卡转化为独立关系模式;为了了解同学借阅图书情况,将身份认证中借书刷卡转化为独立关系模式;同时,考虑同学要向校园卡中充值,在学生校园卡联络中抽取充值关系转化为独立
16、关系模式;考虑同学可能会挂失等,从学生校园卡联络中抽取挂失关系转化为独立关系模式。具体关系模式转化结果以下:学生:student(Sno、Sid、Sname、Ssex、Sbirth、Sdept、Sspecial、Sclass、Saddr) 校园卡:Card(Cardno、Sno、Sid、Cardstyle、Cardstates、Cardmoney、Cardtime) 校园卡中心:CardCenter(CCno、CCaddr、jbr)充值:FillInf(Czno、Cardno、Sno、Czje、Czrq、jbr) 挂失:LosInf(Gsno、Cardno、Sno、Gsrq、jbr)餐厅:Di
17、nInf(Dinno、Dinname、Dinmanage、Dinaddr) 超市:SupInf(Supno、Supname、Supmanage、Supaddr) 校车: BusInf(Busno、Busstyle、Busdriver)消费刷卡:PressInf(Pressno、Pplace、Cardno、pmoney、ptime) 宿舍:DormInf(Dormno、Dormstyle、Dormregion) 进出刷卡:DormPress(Backno、Cardno、Sno、Dormno、Backtime) 图书馆:LibInf(Libno、Libname、Libregion)图书借阅刷卡:B
18、orBookPress(Brno、Bookno、Cardstates、Borlist、Libno)(注:标有直线下划线为主属性,标有波浪线下划线是外键属性) 4 物理设计阶段4.1物理设计阶段目标和任务数据库物理设计就是依据所选择DBMS和处理需求,进行物理存放安排,建立索引,形成数据库内模式,为逻辑数据模型选择一个最适合应用要求物理结构过程,在这个阶段中要完成两大任务:(1)确定数据库物理结构,在关系数据库中关键是存取方法和存放结构;(2)对物理结构进行评价,评价关键是时间和空间效率。4.2数据存放方面为数据库中各基础表建立索引以下:因为基础表Card,Student,DinInf,SupI
19、nf主码Cardno,Sno,Dinno,Supno常常在查询条件和连接操作连接条件中出现,且它们取值唯一,考虑在这四个属性上分别建立唯一性索引;5 数据库实施阶段5.1建立数据库、数据表、视图、索引5.1.1 建立数据库create database sducardsystem;5.1.2 建立数据表(1)学生基础信息表建立:create table Student(Sno char(12) primary key,Sid char(18) not null,Sname char(10) not null,Ssex char(4) check(Ssex=男 or Ssex=女) not nu
20、ll,Sbirth char(10) not null,Sdept char(20) not null,Sspecial char(20) not null,Sclass char(20) not null,Saddr char(20) not null,);(2)校园卡基础信息表建立:create table Card(Cardno char(8) primary key,Sno char(12) not null,Sid char(18) not null,Cardstyle char(18) not null,Cardstate char(10) not null,Cardmoney F
21、loat not null,Cardtime DateTime not null,foreign key (Sno) references Student(Sno),);(3)校园卡中心CardCenter:create table CardCenter (CCno char(10) primary key,CCaddr char(40) not null,jbr char(10) not null,);(4)创建充值信息表FillInf:create table FillInf(Czno Int primary key,Cardno char(8) not null,Sno char(12)
22、 not null,Czrq DateTime not null,Czje Int not null,jbr char(10) not null,foreign key(Cardno) references Card(Cardno),foreign key(Sno) references Student(Sno),);(5)创建挂失信息表LosInf:create table LosInf(Gsno Int primary key,Cardno char(8) not null,Sno char(12) not null,Gsrq DateTime not null,jbr char(10)
23、not null,foreign key(Cardno) references Card(Cardno), foreign key(Sno) references student(Sno),);(6)餐厅信息表DinInf;create table DinInf(Dinno char(4) primary key,Dinname char(10) not nullDinmanage char(10) not null,Dinaddr char(10) not null,);(7)超市信息表SupInf: create table SupInf(Supno char(4) primary key
24、,Supname char(40) not null,Supmanage char(10) not null,Supaddr char(10) not null,);(8)校车信息表BusInf: create table BusInf(Busno char(4) primary keyBusstyle char(10) not nullBusdriver char(10) not null,);(9)消费刷卡信息统计表PressInf:create table PressInf(Pressno Int primary key,Pplace char(10) check(Pplace=餐厅or
25、 Pplace=超市or Pplace=校车) not null,Cardno char(8) not null,Pmoney Float not null,Ptime DateTime not null,foreign key(Cardno) references Card(Cardno),);(10)宿舍信息表DormInf:create table DormInf(Dormno char(10) primary key,Dormstyle char(8) check(Dormstyle=男生or Dormstyle=女生) not null,Sdept char(20) not null
26、,Dormregion char(10) not null,(11)归宿刷卡信息表Dormpress:create table DormPress(Backno Int primary key,Backtime DateTime not null,Cardno char(8) not null,Sno char(12) not null,Dormno char(10) not null,foreign key(Cardno) references Card(Cardno),foreign key(Sno) references Student(Sno),foreign key(Dormno)
27、references DormInf(Dormno),);(12)图书馆信息表LibInf:create table LibInf(Libno char(10) primary key,Libname char(20) not null,Libregion char(20) not null,);(13)图书馆借阅刷卡统计BorBookPress:create table BorBookPress (Brno Int primary key,Bookno char(10) not null,Cardstate char(10) not null,Borlist char(40) not nul
28、l,Libno char(10) not null,foreign key(Libno) references LibInf(Libno);5.1.3 建立视图(1)用于查询更新学生在各个餐厅刷卡消费信息视图定义以下:create view Dinner2asselect *from PressInfwhere Place=餐厅with check option;(2)用于查询和更新学生在各个餐厅刷卡消费信息视图定义以下:create view Supmarketasselect *from PressInfwhere Place=超市with check option;(3)将学生信息表和刷
29、卡消费表连接,用于查询相关学生基础信息create view student_ Pressasselect PressInf.Pressno,PressInf.Pplace, PressInf.Cardno,PressInf.pmoney,PressInf.Ptime, Card.Snofrom PressInf,Cardwhere PressInf.Cardno=Card.Cardnowith check option;5.1.4 建立索引依次分别在表Student,Card,DinInf,SupInf主码Sno,Cardno,Dinno,Supno上建立唯一性索引,具体SQL代码以下:cr
30、eate unique index S_Sno on student(Sno asc);create unique index Card_Cardno on Card(Cardno asc);create unique index Dinner_Dinno on DinInf(Dinno desc);create unique index Supmarket_Supno on SupInf(Supno desc);5.1.5 建立触发器用触发器来实现在用校园卡刷卡消费和进行多种类型校园卡充值操作后,不仅要修改PressInf、FillInf里信息,还要修改对应Card表里校园卡余额CardPm
31、oney值。具体触发器依次定义以下:create trigger fillon FillInfafter insertasupdate Cardset Cardmoney=Cardmoney+Czjefrom Insertedwhere Cardstate=可用and Card.Cardno=Inserted.Cardnocreate trigger consumeon PressInfafter insertasupdate Cardset Cardmoney=Cardmoney-Pmoneyfrom Insertedwhere Cardstate=可用and Card.Cardno=(select Cardno from Inserted)6 感言及数据库系统拓展此次设计过程让我对校园卡管理系统及数据库系统设计编程有了新认识,加深了对书本知识了解,但因为知识缺乏,本系统人存在以下问题:1. 有些表属性设计得不够合理,相互之间外码等联接可能不适宜。2. 因为设计复杂性,电子账户部分没有加入到数据库系统中。3. 因为在冗余及系统优化方面知识缺乏,所建立表可能存在冗余等问题。在以后数据库设计中,能够加入电子账户部分,并对系统进行冗余范式等优化处理。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100