1校园卡管理系统数据库设计2007级电子商务071班李国鹏2009-7-52Outline一、系统总体概况二、主要的存储过程三、两个重要的触发器3一、系统总体概况办卡管理充值管理挂失管理解挂管理校园卡日常管理子系统电子钱包子系统食堂就餐管理超市购物管理学生奖助管理身份认证子系统公共课考勤管理宿舍门控管理校园卡系统图3.3系统功能模块图4设计目的:集管理、消费、身份认证“三位一体”方便学生食堂消费、超市消费方便老师上课考勤方便宿舍进出管理方便学校各类奖助学金的发放可扩充其他功能5系统总体E_R图:学生工作办公室学生管理1n校园卡持有11m智能考勤机到课刷卡n宿舍刷卡机归宿刷卡1m学生食堂食堂刷卡mn食堂读卡机包含n1学生超市超市刷超市读卡机包含1nmnnm图3.2分E-R图76系统实现的主要功能:查询和更新:1、各种类型充值信息2、每个食堂、超市月收入信息3、持卡学生在校月消费信息4、持卡学生上课考勤信息5、持卡学生回宿舍信息7二、主要的存储过程1、各种类型充值查询82、每个食堂、超市月收入信息查询各个食堂、超市七月份的收入情况createprocDin___Sup_MonthAsselectPlace,Pno,sum(Pmoney)七月份的收入fromPressInfwherePtime='2009-07-0112:00:00.000'andPtime='2009-07-3123:00:00.000'groupbyPlace,Pno调用存储过程:execDin___Sup_Month92、每个食堂、超市月收入信息103、持卡学生在校月消费信息查询所有学生某个时间段内(七月份)的食堂和超市消费总额createprocstudent_month_Din_Sup_Press@starttimedatetime,@endtimedatetimeasselectstudent.Sno,student.Sname,student_Din_Sup_Press.Cardno,sum(Pmoney)month_Totalmoneyfromstudent_Din_Sup_Press,studentwherestudent_Din_Sup_Press.Sno=student.SnoandPtime=@starttimeandPtime=@endtimegroupbystudent.Sno,student.Sname,student_Din_Sup_Press.Cardno调用存储过程:execstudent_month_Din_Sup_Press1'2009-07-0112:00:00.000','2009-07-3112:00:00.000'113、学生在食堂超市月消费情况124、高飞七月份在超市刷卡消费的信息createprocone_student_month_Din_Sup_Press@starttimedatetime,@endtimedatetime,@snamechar(10),@placechar(10)asselectstudent.Sno,student.Sname,student_Din_Sup_Press.Cardno,sum(Pmoney)month_Totalmoneyfromstudent_Din_Sup_Press,studentwherestudent_Din_Sup_Press.Sname=@snameandstudent_Din_Sup_Press.Place=@placeandstudent_Din_Sup_Press.Sno=student.SnoandPtime=@starttimeandPtime=@endtimegroupbystudent.Sno,student.Sname,student_Din_Sup_Press.Cardno调用存储过程:execone_student_month_Din_Sup_Press'2009-07-0112:00:00.000','2009-07-3112:00:00.000','高飞','超市'134、高飞七月份在超市消费总额145、持卡学生上课考勤信息各门课程某次(某一天)上课时学生到课考勤记录情况(每次上课每个学生只刷一次卡)createproceach_course_PressasselectCname,count(distinctClassno)到课人数fromcourPresswhereClasstime='2009-06-2914:20:00.000'andClasstime='2009-6-2914:25:00'groupbyCname调用存储过程:execeach_course_Press155、持卡学生上课考勤信息各门课程某次(某一天)上课时学生到课考勤记录情况(每次上课每个学生只刷一次卡)createproceach_course_PressasselectCname,count(distinctClassno)到课人数fromcourPresswhereClasstime='2009-06-2914:20:00.000'andClasstime='2009-6-2914:25:00'groupbyCname调用存储过程:execeach_course_Press165、持卡学生上课考勤信息176、持卡学生回宿舍信息查询各宿舍楼在晚上12点---凌晨2点时间段内归宿的学生createprocDorm_backasselectstudent.Sname,DormPress.Backno,DormPress.Cardno,DormPress.Sno,DormPress.Dormno,DormPress.BacktimefromDormPress,studentwhereDormPress.Sno=student.SnoandBacktime='2009-06-2500:00:00.000'andBacktime='2009-06-2502:00:00.000'调用存储过程:execDorm_back186、持卡学生回宿舍信息19三、两个重要的触发器1、在食堂和超市消费刷卡后,修改卡内余额createtriggerti2onPressInfafterinsertasupdateCardsetCardmoney=Cardmoney-PmoneyfromInsertedwhereCardstate='可用'andCard.Cardno=(selectCardnofromInserted)20刷卡消费的存储过程卡号为‘00398'的同学到“孙天负责的东超5号”买了“10元钱”的糖果,消费号是“18”将信息插入刷卡记录表,并用触发器修改Card的余额createprocInsert_PressInf@Pressnoint,@Placechar(10),@Pnochar(4),@Cardnochar(8),@Pmoneyfloat,@PtimeDatetime,@Pmanagechar(10)asInsertintoPressInfvalues(@Pressno,@Place,@Pno,@Cardno,@Pmoney,@Ptime,@Pmanage)调用存储过程:execInsert_PressInf18,'超市','5','00398',10,'2009-07-0412:10:00','孙天'21刷卡之前的Card和PressInf22刷卡之后的Card和PressInf232、充值操作后,在卡状态中修改相应卡的卡内余额createtriggertionFillInfafterinsertAsupdateCardsetCardmoney=Cardmoney+CzjefromInsertedwhereCardstate='可用'andCard.Cardno=Inserted.Cardno24充值的存储过程给‘陈蒋’学号是“00400”发放奖学金,在FillInf中插入充值信息createprocInsert_FillInf@cznoint,@cardnochar(8),@snochar(8),@czlxchar(40),@czjefloat,@czrqDatetime,@jbrchar(10)asInsertintoFillInfvalues(@czno,@cardno,@sno,@czlx,@czje,@czrq,@jbr)调用存储过程:execInsert_FillInf20,'00399','00400','奖学金',500,'2009-10-0112:38:00.000','张三'25充值前的Card和FillInf26充值后的Card和FillInf27