资源描述
MySQL数据库设计课程设计说明书题目:驾校学员管理系统院系:信息与智能工程系专业班级:嵌入式技术与应用学号:2011251011学生姓名:张态指导教师:郭龙2012驾校学员管理系统一.系统概述驾校学员管理系统主要用于管理驾校的各种数据,利用这种mysql数据库的驾校管理系统可以给学员的管理资料的整理,资料的查询,数据的处理带来了很大的方便,能够很大的提高管理员的工作效率.本系统主要用于管理学员的学籍信息/体检信息/成绩信息和驾驶证的领取信息等.这些信息的录入/查询/修改等操作都是该系统的重点解决的问题.本系统分为5个管理部分,即用户的管理/秘籍信息管理/体检信息管理/成绩信息管理和领证信息管理.本驾校学员管理系统的开发语言为java语言,选择的数据库是mysql.本系统是B/S架构的系统,需要web服务器tomcat二.系统功能驾校学员管理系统主要的功能是5个管理部分,即用户的管理/秘籍信息管理/体检信息管理/成绩信息管理和领证信息管理.本系统的管理模块如图所示驾校学员管理系统用户信息管理学员学籍信息管理学员体检信息管理图中模块的详细介绍如下用户信息管理:主要是对管理员的登录进行管理.管理员登录成功后,系统会进入到系统的管理界面.而且管理员可以修改自己的密码.学籍信息管理:主要是对学生信息的插入/查询/修改和删除.查询学员的信息时,可以通过学号/姓名/报考的车型和学员的状态进行查询/通过这四个方面的处理使学籍信息的管理更加的方便.体检信息管理:主要对学员的体检信息的插入/查询/修改和删除.成绩信息管理:对学员的学籍信息进行插入/查询/修改和删除等操作,以便有效的管理学员的成绩信息.领证信息管理:对学员的驾驶证的领取进行管理.这部分主要是对学员的领证信息的插入/查询/修改和删除等操作.这样可以保证学员的驾驶证领取后,领取驾驶证的信息能够有效的管理.三.数据库设计.数据库设计是开发管理系统的一个重要的步骤,下面是数据库的设计过程.数据库设计是要确定创建一些表/表中的字段/字段的数据类型和字段的长度.1.设计表本系统所有的表都放在drivingschool数据库下,创建drivingschool数据库的SQL代码如下:CREATEDATABASEdrivingschool;h)yealehaudatabases;+-4!Database!IinFormation_schema1!bookdat!Idr-i.vi.n9s:c:licD1!ImysqLIitest!ISrowsinset运行的结果如图1.user表user表中存储用户名和密码,所以将user表设计为只有两个字段.username字段表示用户名,password字段表示密码.因为用户名和密码都是字符串,所以这两个字段都是使用varchar类型.而且将这两个字段的长度都设置为20.而且用户名必须唯一.user表的每个字段的信息如表所示字段名字段描述数据类型主键外键非空唯默认值自增Username用户名Varchar(20)是否是是无否Password密码Varchar(20)否否是否无否根据上表的内容创建user表.创建user表的语句如下:CREATETABLEuser(Usernamevarchar(20)primarykeyuniquenotnull,Passwordvarchar(20)notnull);创建完成后,可以使用desc语句来查询user表的结构,如图所示:Field!TypeINull!Key!Default!Extra!Iusepnane!uarcliap!NO1PR!;NULLpassword!购)!NO!NULLrowsinset1.studentinfo表studentinfo表中主要的存放学员的学籍信息,包括学号/姓名/性别/年龄和身份证号等信息.用sno字段表示学号,因为学号是studentinfo表的主建,所以sno字段是下能为空值的,而且必须是唯一的.identify字段表示学员的身份证,而每个学员的身份证必须是唯一的.因为在些的身份证是以字母x结束的,所以identify字段设计为VARCHAR型.Sex字段表示为学员的性别,该字段只有”男“和“女”两种取值.因此sex字段使用enum类型.scondition字段表示学员的学业状态,每个学员只有3种状态,分别为“学习/“结业/“退学”.因止匕,scondition字段也使用enumfe型.入学时间和毕业时间都是日期,因此选择date类型.s_text字段用于存储备注信息,所以选择text类型比较合适.studentinfo表的每个字段的信息如下表所示:字段名字段描述数据类型主键外键非空默认值自增Sno学号Nit(8)是否是是无否Sname姓名Varchar(20)否否是否无否Sex性别Enum否否是:否无否1Age年龄Int(3)否否否否无否JIdentify身份证号Varchar(18)否否是是无否tel电话Varchar(15)否否否否无无:Car_type报支车型Varchar(4)否否是否无否Enroll_time入学时间date否否是否无否Leave_time毕业时间date否否否否无否scondition学业状态enum否否是否无否S_text备注text否否否否无吞创建studentinfo表的sql代码如下:Createtablestudentinfo(Snoint(8)primarykeyuniquenotnull,Snamevarchar(20)notnull,Sexenum(男,女)notnull,Ageint(3),Identifyvarchar(18)uniquenotnull,Telvarchar(15),Car_typevarchar(4)notnull,Enroll_timedatenotnull,Leave_timedate,Sconditionenum(学习,结业,退学)notnull,S_texttext);Studentinfo表创建在功以后,通过desc语句查看studentinfo表的结构,也可以通过showcreatetable语句查看studentinfo表的详细信息,查看如图:nysqldescstudentinfoJ.:FieId;r:TypeV:Null:Key:Default:Extra:_L1sno!sname!sex11age1jidentify!tel!car_typeenroll_tinetleaue_tine!scondition11s_text1r1r1-nt1NO!PBI!NULL!:uarchar!NO!MUL:NULL!:Enuii。男女,。:NO:iNULLi;int:VES!NULL!:uarchai:NO!UNI:HULL!:uarchar:YEW1:NULL!:!NO!MUL!NULL!date1NO1!NULLi:date1VES;:NULL:errnmL学习结业退学,)!NOiMUL!NULLi:text1VES1!HULL!:11rousinsetsec3.healthinfo表因为驾校体检主要体检身高/体重/视力/听力/辫色能力/腿长和血压信息.所以heathinfo表中必须包含这些信息.身高/体重/左眼和石眼视力分别用height字段/weight字段/left_sight字段和right_sight字段表示.因为这些数值有些小数,所以这些字段都定义成float类型.辫色能力/左耳听力/石耳听力/腿长和血压分别用differentiate字段/left_ear字段/right_ear字段/legs字段和pressuer字段表示.这些字段的取值示是在特定几个廊中取一个,因此定义成enum类型.创建healthinfo表的SQL代码如下:Createtablehealthinfo(Idint(8)primarykeyuniquenotunllauto_increment,Snoint(8)uniquenotnull,Snamevarchar(20)notnull,Heightfloat,Weightfloat,Differentiateenum(正常,色弱,色盲),Left_sightfloat,Right_sightfloat,Left_earenum(正常,偏弱),Right_earenum(正常,偏弱),Legsenum(正常,不相等),Pressureenum(正常,偏高,偏低),Historyvarchar(50),H_texttext,Constrainthealth_fkforeignkey(sno)Referencesstudentinfo(sno);创建healthinfo表时将sno字段设置为外键,而且外键白别名为health_fk.而且,id字段加上了auto_increment属性,这样就可以将id字段设置为小曾字段表建好了后用desc语句查询,如下:ny后qldeschealthinfa;jfl上一liJSiJTrI-I-.IFieId111Type1Null11Xeij11Default:Extrain_1TTT*1id11NO11FRI11NULL*auto_incremenc!sno11!NO11UNI;NULL1V1!height1111floatYES1111HULL111weight41flOLtVES11i1NULL4Ii:differentlate11enuiwU正常”,,色弱,色盲VESI111NULL1;leftsight11floaiI111NULLH;rdghtjslsfhv111floatYESI11jNULLH4i1lerf1i崛正常*1偏弱,YE&111NULLiIIrlyJilI1cuuiiM,正常,.,偏弱,下YES1NULL:1leys1ciiun,正京.,不相等“1ES1NULL:Ipressuei1enun酷狗2012,4.courseinfo表Courseinfo表用于存储考试科目的信息,每个科目都必须有科目号/科目名称.这个表只需要3个字段就可以了,cno字段表示科目号,cname字段表示科目名称,before_cour字段表示先行考试的科目号.每条记录中,只有before_cour字段中存储向科目考试通过后,学员才可以报考cno表示的科目.courseinfo表的每个字段的信息如下字段名字段描述数据类型主键外键非空心默认值自增Cno科目号Int(4)是否是是无否Cname科目名称Varchar(20)否否是是无否Before_cour试目先考科Int(4)否否是否0否创建courseinfo表的sql代码如下:Createtablecourseinfo(Cnoint(4)primarykeynotnullunique,Cnamevarchar(20)notnullunique,Before_courint(4)notnulldefault0);Courseinfo表创建完成后用desc语句查询,如下图:nipxqllesccoupseinfo;FieId!Type!hlull!Key!Default!cno!incINOIPRI!HULLiengine!varcliai*!HO!UNI!HULLil)eforc_!couiiint(4IM)iI3Husinset(0.0Ssec5.gradeinfo表Gradeinfo表用于存储学员的成绩信息.这个表必须和student和course表建立联系.因此设计sno字段和cno字段.sno字段和cno字段作为外键.sno字段依赖于studentinfo表的sno字段,cno字段依赖于courseinfo表的cno字段.这里用time字段表示某一个科目的考试次数.默认的情况下是第一次参加考试因此times字段的默认值为1.分数用grade字段表示,默认分数为0分.它的每个字段的信息如下图所示宇段名字段描述数据类至主键外键非空睢一/认值官*Id彘心IIU古1是L*足j|2是SnoINT的曾是是界无杳cnc*和H!;杳是通否无杏看限时间DATli修否示n有P否limes否试次数INT(4JP否1百-X.n看1否成绩FLOAT用否否否0否创建gradeinfo表的sql代码如下:Createtablegradeinfo(Idint(8)primarykeyuniquenotnullauto_increment,Snoint(8)notnull,Cnoint(4)notnull,Last_timedate,Timesint(4)default1,Gradefloatdefault0,Constraintgrade_sno_fkforeignkey(sno)Referencesstudentinfo(sno),Constraintgrade_cno_fkforeignkey(cno)Referencescourseinfo(cno);代码执行后,在sno字段被设置成外键,该外键的别名为grade_sno_fk.同时,cno字段也被设置成外键,改外键的别名为grade_cno_fk.用desc语句查询gradeinfo表的结构如下图:inssqldescgradeinfo;!Field!Null!皿11DefauIt!1Ixtra!1T111p1r=7F7rrid!into51NOPFINULLauitc_incrementI!sno!lnt否是足后无否iniime姓名VARCHAR(20t1否舌是在后lno鳏夔让“VARCHARdS)方n是工,此台rixcbelime辄让时间DATE1再Tf诲否工片receive版证人|VARCIIAR(20)1157否无否善汴TEXT古否3-Ji:否创建licenseinfo表的sql代码如下:Createtablelicenseinfo(Idint(8)primarykeyuniquenotnullauto_increment,Snoint(8)uniquenotnull,Snamevarchar(20)notnull,Lnovarchar(18)uniquenotnull,Receive_timedate,Receive_namevarchar(20),L_texttext,Constraintlicense_fkforeignkey(sno)Referencesstudentinfo(sno);Sno字段设置成外键,该外键的别名为license_fk.liceseinfo表创建完成后,使用desc语句查询licenseinfo表的如构如下图:descliceoselnfo;4u,JIlJJrrFTTTTIlField11Type!Null11Key1!Default1!Extia1!ainkhl!id;NOPRINULLauto_increment1snoint!NOUNINULLsnarneumaeli&:NONULLinoufircliarClSINOUNINULL!i*eceiueJinueda七目:VESNULL!Ieceiue.namevarcFar;YESHULL1i_texttext*YES1111NULL1Il1JI1.在studentinfo表上建立索引下面使用createindex语句在sname初段上仓建名为index_stu_name的索引.sql代码如下:Createindexindex_stu_nameonstudentinfo(sname);Createindexindex_caronstudentinfo(car_type);使用altertable语句在scondition字段上创建名为index_con的索引.sql代码如下:Altertablestudentinfoaddindexindex_con(scondition);代码执行完了后,使用showcreatetable语句查看studentinfo表的结构.查看结果中如果显示了index_stu_naem和index_car和index_con这3个索引,这表示索引已经创建成功了
展开阅读全文