《数据库校园一卡通管理系统(共16页).doc》由会员分享,可在线阅读,更多相关《数据库校园一卡通管理系统(共16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上题 目:校园一卡通管理系统摘要:校园一卡通将管理、生活、消费、身份认证等多种功能集中于一体,提高了学生校园生活的效率。该校园一卡通管理系统包括三个子系统:校园卡日常管理、消费管理、身份认证。每个子系统又包括多个功能模块,并提供了对各功能模块的查询和更新功能。该系统开发由系统需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、数据库实施阶段等阶段组成。关键字:一卡通 日常管理 消费管理 身份认证 1 系统需求分析阶段1.1 需求分析目标针对山东大学学生日常生活和学习管理情况的实地调查加自己的亲身体验,了解了目前应用关于山东大学的校园一卡通管理系统的应用情况,并充分体
2、会到该模式相对于人工管理模式的简单、高效。基于以上情况,目的是自行设计一个模拟山东大学校园一卡通的管理系统,在设计过程中,加深对校园一卡通的了解,增强对数据库知识的理解及SQL语言的实际应用,训练设计开发数据库的能力。1.2 需求分析任务(1)处理对象:该系统主要处理的对象有:学生基本信息、校园卡基本信息、校园卡日常管理基本信息、餐厅消费基本信息、超市基本信息、身份认证基本信息、图书管理基本信息、校车管理基本信息等。各个对象包括信息如下所示(详细的数据见于数据字典):1学生基本信息(Student):包括学生身份证号、学生学号、学生姓名、学生性别、学生出生年份、学生所在院系、学生的专业、学生所
3、在班级等方面的信息,可以方便学生信息的查询和更新;2“校园卡”基本信息(Card):包括校园卡的卡号、持卡人学生学号、持卡学生姓名、持卡学生性别、校园卡的状态、校园卡内的余额;3校园卡日常管理基本信息(CardManage):包括四个数据结构办卡信息、挂失信息、解挂信息、充值信息,每个数据结构中的数据项见数据字典;4餐厅基本信息(cateen):包括餐厅编号、餐厅名称、餐厅负责人、餐厅位置,具体的数据项见数据字典;5超市基本信息(supmanage):包括超市编号、超市名称、超市负责人、超市位置,具体的数据项见数据字典;6校车管理基本信息(Busmanage):包括校车编号、校车类型、校车司机
4、,具体数据项见数据字典; 7消费基本信息(Busmanage):包括消费编号、消费地点、卡号、消费时间、消费金额,具体数据项见数据字典;8. 身份认证基本信息(Identity):包括四个数据构DormInf (学生宿舍楼基本信息),DormPress(学生归宿刷卡信息),LibInf(图书馆基本信息),LibPress(借书基本信息),具体的数据项见数据字典;(2)处理功能要求系统主要完成一下几个功能:1学生基本信息查询与更新;2校园卡日常事务管理情况基本信息查询与更新;3校园卡在某个时刻所处状态的查询;4餐厅基本信息的查询和修改;5超市基本信息的查询和修改; 6学生消费额(包括餐厅,超市,
5、校车消费)基本信息的查询;7. 学生进出宿舍次数查询;(3)安全性和完整性要求描述学生基本信息、校园卡日常事务管理基本信息、“校园卡”基本信息、餐厅消费基本信息、超市消费基本信息、校车管理基本信息、身份认证基本信息中数据项能否为null,以及一些用户自定义完整性(符合实际要求)。1.2.3 需求分析阶段成果(1)校园卡一卡通管理系统业务流程图校园卡日常管理业务流程图:校园卡中心充值提交费用申请办卡学生审批提交个人信息办理挂失办理解挂办理业务合格超市消费业务流程图:累计本次消费总价格超市销售员累计本次消费挑选商品学生消费够本次消费刷卡不够本次消费取消卡内信息宿舍身份认证管理业务流程图:存储刷卡人
6、信息刷卡回宿舍学生是否为该宿舍楼学生获取信息成功刷卡否报警是校车管理业务流程图:上车累计本次消费学生消费够本次消费刷卡不够本次消费取消卡内信息(3)数据流程图顶层数据流程图:身份确认申请审批记录D0审批信息事务申请消费信息请求学生个人信息学生个人信息P0学生事务处理事务申请校园卡事务管理系统校园卡中心身份确认反馈消费反馈图2.0 顶层数据流程图第1层数据流程图:P0身份认证反馈身份认证申请消费反馈消费信息请求学生个人信息P1审批信息事务申请学生个人信息P3P2学生事务申请日常事务处理身份认证处理消费事务处理事务处理校园卡中心第1层数据流程图第2层数据流程图: 从日常事务处理角度出发:P1充值记
7、录D1.4充值申请P1.2P1.1费用办卡管理充值管理充值申请个人资料挂失申请办卡申请办卡申请审批审批个人资料个人资料学生办卡记录D1.1挂失申请P1.3审批挂失管理解挂申请解挂记录挂失记录D1.2个人资料P1.4审批解挂申请解挂管理D1.3D1.3第2层数据流图(从日常管理角度)第2层数据流程图: 从校园卡消费管理角度出发:P2饭菜名目饭菜价格P2.2P2.1P2付费选择校车购物名目学生消费管理超市购物餐厅买饭物品价格消费反馈消费请求消费记录D2P2.3乘坐校车第2层数据流图(从消费角度)第2层数据流程图:从校园卡的身份认证管理角度出发:P3借书刷卡身份确认身份认证请求P3.2P3.1P3学
8、生门禁刷卡身份确认身份认证宿舍图书馆身份确认D3身份认证记录第2层数据流图(从身份认证角度)(4)数据字典(a)数据项:系统涉及的数据项有50项表1.1 数据项列表数据项编号数据项名称简述类型及宽度取值范围DI-1Sid学生身份证号char(18)DI-2Sno学生学号char(8)DI-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(
9、6)DI-10Cardno校园卡卡号char(8)DI-11Cardstate校园卡状态char(6)可用、不可用DI-12Cardmoney校园卡内余额FloatDI-13Cardstyle校园卡类型char(10)“学生卡”、“教师卡”DI-14Cardtime办理时间char(10)DI-15CCno校园卡中心编号char(10)Di-16CCaddr校园卡中心地址char(20)DI-17jbr校园卡日常事务负责人姓名char(10)DI-18Gsrq挂失所在时间DatetimeDI-19Gsno挂失次数编号IntDI-20Jgrq解挂的时间DatetimeDI-21Czrq充值的时间
10、DatetimeDI-22Czje充值金额FloatDI-23Czno充值次数编号IntDI-24Supno超市编号IntDI-25Supname超市名称char(40)DI-26Supmanage超市负责人姓名char(10)DI-27Supaddr超市所在校区char(10)DI-28Dinno餐厅编号char(8)DI-29Dinname餐厅名称char(10)DI-30Dinmanage餐厅负责人姓名char(10)DI-31Dinaddr餐厅所在校区char(10)DI-32Busno校车编号IntDI-33Busstyle校车类型char(20)DI-34Busdriver校车司机
11、名char(10)DI-35Pressno消费次数编号IntDI-36Pplace消费所在地点char(10)DI-37Pno所在地点刷卡机编号char(4)DI-38Pmoney本次刷卡金额FloatDI-39Ptime本次刷卡所在时间DatetimeDI-40Dormregion宿舍楼所在校区char(10)DI-41Dormno宿舍楼编号char(10)DI-42Dormstyle宿舍类型Char(10)DI-43Backtime回宿舍时间DatetimeDI-44Backno归宿编号IntDI-45Libno图书馆编号char(8)DI-46Libname图书馆名字char(40)DI
12、-47Libregion图书馆所在校区char(40)DI-48Brno借书编号char(10)DI-49Bookno图书编号char(10)DI-50Booklist已借数量Int(b)数据结构:表1.2 数据结构列表数据结构编号数据结构名称数据结构别名数据结构含义数据项组成DS-1学生信息Student记录学生的信息Sid、Sno、Sname、Ssex、Sbirth、Sdept、Sspecial、 Sclass、SaddrDS-2挂失信息LosInf记录挂失信息Cardno、Sno、Sid、Gsrq、jbrDS-3充值信息FillInf记录充值相关信息Czno、Cardno、Sno、Czl
13、x、Czje、jbrDS-4校园卡信息Card记录校园卡信息Cardno、Sno、Sid、Cardstates、CardmoneyDS-5学生餐厅信息DinInf记录餐厅信息Dinno、Dinname、Dinmanage、DinaddrDS-6超市信息SupInf记录超市信息Supno、Supname、Supmanage、SupaddrDS-7校车信息BusInf记录校车信息Busno、Busstyle、BusdriverDS-8消费刷卡信息PressInf消费刷卡记录Pressno、Pplace、Pno、Cardno、Pmoney、ptime、Pmanage、PaddrDS-9宿舍楼信息Do
14、rmInf记录宿舍楼信息Dormno、Dormstle、 DormregionDS-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学生校园卡拥
15、有分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图中关键实体和联系的属性如下所示:学生:(学号,姓名,性别,出生日期,身份证号,学院,专业,班级,生源地)校园卡:(校园卡卡号,持卡人学号,持卡人姓名,持卡人身份证号,持卡人性别,卡内余额,校园卡可用性)服务:(本次服务编号,校园卡
16、卡号,服务类型,服务时间,服务中心地址)校园卡中心:(服务中心编号,服务中心地址,服务中心负责人)超市:(超市编号,超市名称,超市负责人,超市所在校区)超市刷卡:(本次消费编号,超市编号,校园卡卡号,消费金额,消费时间)餐厅:(餐厅编号,餐厅名称,餐厅负责人,餐厅所在校区)餐厅刷卡:(本次消费编号,餐厅编号,校园卡卡号,消费金额,消费时间)校车:(校车编号,校车类型,校车司机)乘车刷卡:(本次消费编号,校车编号,校园卡卡号,消费金额,消费时间)图书馆:(图书馆编号,图书馆名称,图书馆所在校区)借书:(借书编号,校园卡可用性,已借图书,图书馆编号)宿舍楼:(宿舍楼编号,宿舍楼学生类型,宿舍楼所在
17、校区)进出刷卡:(归宿编号,校园卡卡号,学生学号,宿舍楼编号,刷卡时间)(注:由于属性较多,全都写到E-R图中显得很乱,此处将各属性列出。)(3)将E-R图合并,按照要求消除属性冲突、命名冲突、结构冲突等,得到初步的E-R图,在此基础上消除冗余得到下图的基本E-R图: m1服务校园卡中心学生拥有1111归宿检测借书刷卡宿舍楼图书馆mmm校园卡1mnm1餐厅含有餐厅刷卡机餐厅刷卡mn1m含有超市超市刷卡机超市刷卡乘车刷卡校车刷卡机1111校车含有基本E-R图3 逻辑设计阶段3.1逻辑设计的任务和目标系统逻辑设计的任务是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合
18、的逻辑结构。具体内容包括数据组织(将E-R图转换成具体的关系模型、模型优化、数据库模式定义、用户子模式(视图)设计)、数据处理(画出系统功能模块图)两大任务。3.2数据组织3.2.1将E-R图转换为关系模型由以上分析,可以将学生实体、校园卡实体、校园卡中心实体、餐厅实体、超市实体、校车实体、宿舍楼实体、图书馆实体分别转化为单独的关系模型。为了方便同学查询餐厅、超市和校车的消费情况,特将消费性刷卡联系转化为独立关系模式;为了了解同学的归宿信息,将身份认证型的进出刷卡转化为独立关系模式;为了了解同学借阅图书的情况,将身份认证中的借书刷卡转化为独立的关系模式;同时,考虑同学要向校园卡中充值,在学生校
19、园卡联系中抽取充值关系转化为独立关系模式;考虑同学可能会挂失等,从学生校园卡联系中抽取挂失关系转化为独立关系模式。具体的关系模式转化结果如下:学生: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、S
20、no、Gsrq、jbr)餐厅:DinInf(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、L
21、ibregion)图书借阅刷卡:BorBookPress(Brno、Bookno、Cardstates、Borlist、Libno)(注:标有直线下划线的为主属性,标有波浪线下划线的是外键属性) 4 物理设计阶段4.1物理设计阶段的目标与任务数据库的物理设计就是根据所选用的DBMS和处理需求,进行物理存储安排,建立索引,形成数据库的内模式,为逻辑数据模型选取一个最适合应用要求的物理结构的过程,在这个阶段中要完成两大任务:(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。4.2数据存储方面为数据库中各基本表建立的索引如下:由
22、于基本表Card,Student,DinInf,SupInf的主码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
23、) check(Ssex=男 or Ssex=女) not null,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,Cardst
24、ate char(10) not null,Cardmoney Float 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,Car
25、dno char(8) not null,Sno char(12) 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,Gsr
26、q DateTime not null,jbr char(10) 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
27、 SupInf(Supno char(4) primary key,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,
28、Pplace char(10) check(Pplace=餐厅or 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=女生)
29、 not null,Sdept char(20) not null,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
30、Student(Sno),foreign key(Dormno) 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)
31、not null,Borlist char(40) not null,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 P
32、lace=超市with check option;(3)将学生信息表和刷卡消费表连接,用于查询相关的学生的基本信息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,
33、Cardno,Dinno,Supno上建立唯一性索引,具体SQL代码如下:create 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 建立触发器用触发器来实现在用校园卡刷卡消费和进行各种类型的校园卡充值操作后,不仅要修改Pre
34、ssInf、FillInf里的信息,还要修改对应的Card表里的校园卡余额CardPmoney的值。具体触发器依次定义如下: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. 由于在冗余及系统优化方面知识的缺乏,所建立的表可能存在冗余等问题。在之后的数据库设计中,可以加入电子账户部分,并对系统进行冗余范式等的优化处理。专心-专注-专业