第五章 数据库物理设计
5.1 RDBMS的选择中学生管理系统课程设计小组选择的是Microsoft的SQL Server的Windows.NT版本,主要是考虑到:Microsoft SQL Server 是真正的客户机/服务器体系结构、图形化的用户界面,使系统管理更加直观简单、以及良好的对数据的导入导出能力。5.2 数据库的创建中学学籍管理系统数据库名称:SDbase主文件和日志文件存放在D盘下SQLSDbase文件夹下:主文件组名称:SDbase_Data主文件:SDbase_Data.mdf日志文件组名称:SDbase_Log日志文件:SDbase_Log.ldf考虑到中学学校每年在校生及教职工5000~10000人次,学校存在有办学类型小学、中学、高中,每个人的数据量10~20条记录,学校大概会为学生保留信息3~5年的情况下,每个人数据量大概15(条记录)*10(字段)*4(汉字)*2(字节)约等于1024个字节(1/1024MB)。综上所述数据按最大增长量每年递增约10MB,考虑该系统使用周期约10~,最大数据容量设为200MB。SQL编程语句如下:use master--创建数据库CREATE DATABASE SDbaseON PRIMARY--主文件组(NAME='SDbase_Data', --逻辑文件名FILENAME='D:\SQLSDbase\SDbase_Data.mdf',SIZE=15MB, --初始大小MAXSIZE=200MB, --最大容量FILEGROWTH=15% --增长率)LOG on --日志文件(NAME='SDbase_Log', --日志文件逻辑文件名FILENAME='D:\SQLSDbase\SDbase_Log.ldf',SIZE=5MB,FILEGROWTH=15% --增长率)GO
第六章 数据库的实施
6.1用户的建立及权限分配SQL编程授权部分:--创建一个DBMS访问账户create login zhongxuexiaozu with password='123456'--进入SDbase数据库use SDbase--创建数据库用户--因为中学学籍管理系统只需要SDbase数据库,所以只设定访问SDbase,create user zhongxuexiaozu for login zhongxuexiaozu with default_schema=dbo--为zhongxuexiaozu账户授予查询、删除、更改以及插入部分表数据的权限。grant select,insert,update,delete on StudentInfor to zhongxuexiaozugrant select,insert,update,delete on SGuanxi to zhongxuexiaozugrant select,insert,update,delete on SchoolInfor to zhongxuexiaozugrant select,insert,update,delete on StudentGerenInfor to zhongxuexiaozugrant select,insert,update,delete on xuejiUpdate to zhongxuexiaozugrant select,insert,update,delete on UserType to zhongxuexiaozugrant select,insert,update,delete on BubieTable to zhongxuexiaozugrant select,insert,update,delete on BiyeSheng to zhongxuexiaozu--因为辅助表中除了SchoolInfor表与毕业生表给与zhongxuexiaozu账户授予一定的访问权限外,--没有对其他例如年级、部别等表进行授予增删改查的权利,因为这些表是定死的,当二次开发时若需要,再次授权即可,应用程序连接DBMS时候是无法对SDbase数据库以外的数据库进行操作,也无法SDbase中没有授权的表进行操作,在一定程度上对数据进行了保护。6.2表的建立与数据的载入 注释上的序号是创建表的顺序,因为主外键关系;其中序号为1的表为辅助表(建库的时候里面数据是定死的,后期进行二次开发时候可以再次进行开发使用。)use SDbase--1创建学校信息表 Create table SchoolInfor(ScName VARCHAR(20) ,--学校名称Sprovince VARCHAR(20) not null,--学校所在省份SbureauEd VARCHAR(20) not null,--学校所属教育局Saddress varchar(50) not null,--学校地址PRIMARY KEY(ScName))--1部别信息表Create table BubieTable(Bno char(1) unique ,Bname char(4) primary key)--1年级信息表Create table NianjiTable(Nno char(1) unique ,Nname char(6) primary key)--1毕业生信息表Create table BiyeSheng(Sno char(12),buBie char(10),Sname varchar(36),primary key(Sno))--2班级表Create table classTbale --班级表(buBie char(4) , --类别初中、高中、小学等等nianJi char(6), banJi char(6) not null,--班级编号TeacherNo varchar(12) unique NOT NULL,--老师编号TeacherName varchar(50) not NULL,primary key(buBie,nianJi,banJi),foreign key(buBie) references BubieTable(Bname),foreign key(nianJi) references NianjiTable(Nname),)--3入学信息表Create table StudentInfor --创建学生入学基本信息表(enrollmentYear char(4) not null,--考虑到年份都是四位数,所以定死为char(4)类型和大小Sno char(12),--学生学号buBie char(4) , --入学类型(初中、高中)nianJi char(6), banJi char(6), Sname varchar(50) not null, --考虑到少数名族名字Ssex char(2) check(Ssex in('男','女')),Nationnality varchar(30) not null, --民族placeBirth varchar(20)not null,--籍贯birthDate Date not null, --出生日期graduatedUniversity VARCHAR(20) not null,--毕业学校enrollmentScore smallint check(enrollmentScore>=0),--总分sourceUpdate char(10) not null, --来源/变动类型muqianZhuangtai Varchar(30), --变动原因PRIMARY KEY (Sno), --主键foreign key(buBie) references BubieTable(Bname),foreign key(nianJi) references NianjiTable(Nname),)--4创建学生个人情况Create table StudentGerenInfor(Sno char(12), --学号mianMao char(12) not null, --政治面貌shenTi char(10) , --身体状况jiaTingRenKou char(2),--家庭人口homeAdress VARCHAR(30) not null,--家庭住址TemlePhone char(11) not null, --联系方式11位的手机号PRIMARY KEY(Sno),FOREIGN KEY (Sno) references StudentInfor(Sno) )--4创建学生主要关系表Create table SGuanxi(Sno char(12),chengWei char(4), --与本人关系。, Name varchar(50) NOT NULL, --姓名Age CHAR(3) NOT NULL, --年龄DanWei VARCHAR(50)NOT NULL, --单位PRIMARY KEY (Sno,chengWei,Name), --考虑到一个人有多个家庭成员,但是可以有相同称谓的姐姐、弟弟,标识唯一一行FOREIGN KEY (Sno) references StudentInfor(Sno))--4学籍更改表Create table xuejiUpdate(Sno char(12), --学号updateType char(4),--变更类型updateDate DATETime,--变更日期yuanYin varchar(50),--变更原因SendOrYanZheng VARCHAR(50), --发给或缴纳证件PRIMARY KEY(Sno,updateDate),foreign key (Sno) references StudentInfor(Sno))--4创建系统用户Create table UserType(userID varchar(12),--用户名userPassWord varchar(18),--账户实际操作人姓名name varchar(50), --密码dengJi char(1), --权限等级shuoMing varchar(50), --权限说明primary key (userID)--主键)6.3视图、触发器、存储过程设计视图:--用户权限视图Create view User_type asselect userID as 账户,userPassWord as 密码 ,name as 姓名,dengji as 权限等级,shuoMing as 权限说明 from UserType应用程序通过嵌入SQL语句(用户模式:视图语句),一定程度上对数据的安全性进行了保护,触发器:--1当学生入学成绩成绩小于460时候,学生的录取类型为借读生。CREATE TRIGGER Student_fenshu ON StudentInfor --该触发器建在学生入学表生 FOR INSERT --触发器类型 插入记录时候asdeclare e1 cursor for select Sno,enrollmentScore,muqianZhuangtai from inserted --触发器名称 e1declare @Sno char(12)declare @enrollmentScore smallintdeclare @sourceUpdate char(10)OPEN e1fetch NEXT FROM e1 into @Sno,@enrollmentScore,@sourceUpdateWHILE @@FETCH_STATUS=0 -- 当返回值为0时候继续执行Begin下语句,知道返回值为-1或者非0BEGIN IF @enrollmentScore <=460 --入过入学分数小于或者等于460update StudentInfor set sourceUpdate='借读'--把当前已经输入的入读类型为借读,即使之前是其他也会更改为借读where @Sno=Sno fetch next from e1 into @Sno,@enrollmentScore,@sourceUpdate --条件为0时候继续遍历临时表中的记录,知道条件为非0endclose e1 --遍历游标 e1DEALLOCATE e1 --释放游标--2学籍管理,当学生毕业时候,在学籍变动表中,为学生发放毕业证Create TRIGGER Student_biye ON xuejiUpdate FOR insert--触发器类型 插入记录时候 asdeclare e_biye cursor forselect Sno,updateType,SendOrYanZheng from inserted declare @Sno varchar(36) declare @updateType char(4)declare @SendOrYanZheng VARCHAR(50) OPEN e_biyefetch NEXT FROM e_biye into @Sno,@updateType,@SendOrYanZhengWHILE @@FETCH_STATUS=0BEGIN if @updateType='毕业' --如果学籍异动表中出现一个新的异动类型为毕业BEGIN update xuejiUpdate set SendOrYanZheng='发给毕业证' where @Sno=Sno --那么发给毕业证ENDfetch next from e_biye into @Sno,@updateType,@SendOrYanZhengendclose e_biye DEALLOCATE e_biye --3当学生状态为毕业状态时候,自动把所有毕业生的信息导入到一张毕业生表中去。CREATE TRIGGER biye_tig ON StudentInfor FOR update asdeclare e_insertBiye cursor for select Sno,Sname,buBie,sourceUpdate from inserted declare @Sno char(12) declare @Sname varchar(36)declare @buBie char(4)declare @sourceUpdate char(10) OPEN e_insertBiyefetch NEXT FROM e_insertBiye into @Sno,@Sname,@buBie,@sourceUpdate WHILE @@FETCH_STATUS=0BEGIN --当我更改变动类型时候,而且满足变动类型为毕业,那么毕业生信息导入到毕业生到BiyeSheng表中if update(sourceUpdate) and @sourceUpdate='毕业' insert into BiyeSheng values(@Sno,@Sname,@buBie) fetch next from e_insertBiye into @Sno,@Sname,@buBie,@sourceUpdate endclose e_insertBiyeDEALLOCATE e_insertBiye --4当学生学籍状态发生改变时候例如请假转班或者进行毕业,--把学籍异动信息进行存储到学籍异动表中,每次变动都会添加一条记录,主键是学号+日期。Create TRIGGER Student_baingeng ON StudentInfor FOR update asdeclare e cursor for select Sno,muqianZhuangtai,sourceUpdate from inserted declare @Sno varchar(36) declare @muqianZhuangtai char(10)declare @sourceUpdate char(10) OPEN efetch NEXT FROM e into @Sno,@muqianZhuangtai,@sourceUpdate while @@FETCH_STATUS=0BEGIN if update(sourceUpdate)BEGIN insert into xuejiUpdate values(@Sno,@sourceUpdate,getDate(),@muqianZhuangtai,'无') ENDfetch next from e into @Sno,@muqianZhuangtai,@sourceUpdate endclose e DEALLOCATE e --5当学校录取一名学生时候,为该生创建一个学籍管理系统的学生账户。CREATE TRIGGER Student_Chufa ON StudentInfor FOR INSERT asdeclare e cursor for select Sno,Sname from inserted declare @Sno varchar(36) declare @Sname varchar(36) OPEN efetch NEXT FROM e into @Sno,@Sname WHILE @@FETCH_STATUS=0BEGIN --创建账户,的登录账户为学号,姓名为学生姓名,权限代码为4,默认为学生insert into UserType values(@Sno,123456,@Sname,4,'学生')fetch next from e into @Sno,@Snameendclose e DEALLOCATE e
--6创建一个新班级时候,为该班班主任老师授予查询该班学生信息的权利CREATE TRIGGER Class_Table ON classTbale FOR INSERT asdeclare e cursor for select TeacherNo,TeacherName from inserted declare @TeacherNo varchar(12) declare @TeacherName varchar(50) OPEN e fetch NEXT FROM e into @TeacherNo,@TeacherName WHILE @@FETCH_STATUS=0BEGIN insert into UserType values(@TeacherNo,123456,@TeacherName,2,'老师') fetch next from e into @TeacherNo,@TeacherName endclose e DEALLOCATE e 存储过程创建存储过程:--创建一个查询系统用户表存储过程.Create procedure Select_UserTypeas beginselect userID,userPassWord,name,dengJi,shuoMing from UserTypeset nocount on;endGo执行存储过程:USE [SDbase]GODECLARE@return_value intEXEC@return_value = [dbo].[Select_UserType]SELECT'Return Value' = @return_valueGO执行结果:级联更新与删除:当我们要从数据库中删除一个学生的信息时候,要同时删除4张表的信息(学生入学表信息,学生的家庭关系,学生个人情况,以及学生学籍变动情况表),按原则上讲师需要对学生的访问系统账户一通删除的,但是本系统的学生用户表(系统用户表中包含学生老师与其他管理员信息)没有与学生入学表进行建立级联删除与更新,因为用户表没有与学生入学表建立参照关系,这是一个重要的原因,其次原因是因为,表中还拥有老师与管理员的数据,要想实现当删除学生的时候同时也删除学生的账户,可以把学生账户与系统账户所分开,或者通过应用程序段建立删除,本系统是在建立完物理逻辑结构后,通过修改列级约束进行添加的。--对参照StudentInfor学生入学表的表建立级联更新与删除alter table StudentGerenInfor add constraint a_Sno foreign key(Sno) references StudentInfor(Sno) on delete cascadealter table SGuanxi add constraint b_Sno foreign key(Sno) references StudentInfor(Sno) on delete cascadealter table xuejiUpdate add constraint c_Sno foreign key(Sno) references StudentInfor(Sno) on delete cascade数据载入:数据载入遵循,被参照表先进行插入的原则,数据删除是参照表先删除原则,两者相反。辅助表的信息先插入,因为主表的信息都是与辅助表的关系是参照表与被参照表的关系,所以辅助表先插入辅助表数据插入:--1插入学校信息(学校名称、所在省份、所属教育局、学校地址)insert into SchoolInfor values('黄石理工附中','湖北省','黄石市教育局','黄石市下陆区团城山街道')insert into SchoolInfor values('黄石二中','湖北省','黄石市教育局','黄石市下陆区扬州路')--1插入部别表insert into BubieTable values(1 ,'初中')insert into BubieTable values(2 ,'高中')insert into BubieTable values(3,'小学')--1插入年级表insert into NianjiTable values(1 ,'一年级')insert into NianjiTable values(2 ,'二年级')insert into NianjiTable values(3 ,'三年级')insert into NianjiTable values(4 ,'四年级')insert into NianjiTable values(5 ,'五年级') insert into NianjiTable values(6 ,'六年级') --1插入学校信息(学校名称、所在省份、所属教育局、学校地址)insert into SchoolInfor values('黄石理工附中','湖北省','黄石市教育局','黄石市下陆区团城山街道')insert into SchoolInfor values('黄石二中','湖北省','黄石市教育局','黄石市下陆区扬州路')主表信息插入:--插入班级表(部别、年级、班级编号、老师编号、老师姓名)insert into classTbale values('高中','一年级','一班','10088','扬眉老师');insert into classTbale values('高中','一年级','二班','10089','镇元子老师');insert into classTbale values('高中','二年级','一班','9','孙悟空老师');insert into classTbale values('初中','一年级','一班','11088','菩提祖师');insert into classTbale values('初中','二年级','一班','12088','如来佛祖');
--插入学生信息(入学年份(4位)、学号(12位)、入学类型、年级、班级、姓名、性别(男/女)、民族、籍贯、出生日期、毕业学校、总分、来源、变动原因)--学校录取学生时候,由招生办老师提供的名单,当录取学生的时候,--同时为该学生提供一个系统账户,账户名为学生的学号,密码默认为123456,账户类型为学生账户insert into StudentInfor values('','20491111','初中','一年级','1','余欣','女','汉族','襄阳','1999-01-28','湖北理工','480','录取','无');insert into StudentInfor values('','16491110','初中','二年级','2','张一','男','汉族','恩施','1997-11-06','湖北理工','490','录取','无');insert into StudentInfor values('','17491101','初中','三年级','3','张二','女','汉族','十堰','1998-01-01','湖北理工','510','休学','无');insert into StudentInfor values('','20491155','高中','一年级','1','张四','女','汉族','宣恩','2000-01-11','湖北理工','489','休学','无');insert into StudentInfor values('','17491170','高中','二年级','2','张五','女','汉族','洛阳','1997-12-25','湖北理工','490','录取','无');insert into StudentInfor values('','16491180','高中','三年级','3','张六','女','汉族','商丘','1998-03-03','湖北理工','470','录取','无');
个人信息插入:--录入学生的个人情况insert into StudentGerenInfor values('20491111','团员','健康','5','襄阳','10010100861');insert into StudentGerenInfor values('16491110','团员','健康','3','恩施','10086100861');insert into StudentGerenInfor values('17491101','群众','健康','4','十堰','10011100861');insert into StudentGerenInfor values('20491155','党员','健康','7','宣恩','10086100101');insert into StudentGerenInfor values('17491170','团员','健康','8','洛阳','10010100101');insert into StudentGerenInfor values('16491180','团员','健康','4','商丘','10011100811');
家庭信息插入:
–录入学生的家庭信息
insert into SGuanxi values('20491111','陈思','母亲','43','在家');insert into SGuanxi values('20491111','陈十','父亲','43','在家');insert into SGuanxi values('16491110','陈一','母亲','40','在家');insert into SGuanxi values('16491110','陈二','母亲','40','在家');insert into SGuanxi values('17491101','陈三','母亲','43','在家');insert into SGuanxi values('17491101','陈五','母亲','40','在家');insert into SGuanxi values('20491155','王一','母亲','40','在家');insert into SGuanxi values('20491155','王二','父亲','40','在家');insert into SGuanxi values('20491155','王三','姐姐','25','在家');insert into SGuanxi values('17491170','陈六','母亲','40','在家');insert into SGuanxi values('17491170','陈七','父亲','42','在家');insert into SGuanxi values('16491180','陈八','母亲','43','在家');insert into SGuanxi values('16491180','陈九','母亲','43','在家');
6.4 数据库的运行
本系统的物理逻辑设计(表设计):分为主表和辅助表。
其中辅助表中的信息分为系统的基本信息,和导入表.
导入表:
(例如本系统中的毕业生表,可以通过把毕业生信息直接导入EXEL文件,显示或者建立视图等等,另毕业生表的信息市通过触发器来实现导入的,当学生的状态为毕业时候会自动导入。);
基本信息:例如一个学校办学类型,例如小学初中高中,或者中职等,该功能可以通过系统设计之初,就已经定死,本系统是定死的,二次开发时候,我们可以通过在应用程序端对这些辅助表的信息进行一些操作来增加学校的学习类型更改,例如:
学校信息表:
学校信息表并没有与学生建立关联关系,一个重要原因是是学校信息表主要是
为了系统的使用者所查看,是为了方便二次开发所建立,或者当系统(成熟)连入互联网后,形成上级教育机构(教育局)与下级(学校)形成父子关系时候,方便上级部门查看该学校的信息,等等,但是前提是访问者需要拥有一定的权限,这个时候系统要考虑要不要把上级教育机构和下级教育机构的数据(例如用户表数据)进行分离,学校数据在一定情况下是不用分离
的,但是考虑到未来某地大量使用该系统肯定存在一个教育机构管理多个下属学校,数据量大的时候。
部别表:
学校的办学类型,系统建立之初已经定死,或者二次开发对该表操作。
年级表:
其中年级表,建立了存储过程保证了当学生入学类型是初中和高中时候,能选择例如高中四年级或者初中四年级,而只能是小学四年级、五年级等等。
毕业生表:
该表是当学生入学表中,sourceUpdate,学生状态更新为毕业生时候,自动触发导入的。
当学生入学表中sourceUpdate发生改变为毕业生时候:
向毕业生表中导入数据。
以下是主表运行
班级表:
班级建立后为班级设立班主任同时,为该班主任通过触发器建立一个权限账户,用来管理该班的学生。
系统用户表:
该表中的用户类型分为学生和老师以及管理员或者其他(可能是年级主任或者以他工作人员),其中学生与老师的账户是当班级建立和学生录取时候通过触发器,自动为老师分配一个账户,学生的账户在本系统中只拥有查询本人信息的权利,管理员账户以及其他权限账户通过管理员进行添加或者设置。
学生入学信息表:
该表是其他3张表Sno的外键,是被参照表,通过与其他三张表(学生个人情况,家庭情况情况表,学籍变动情况表)建立级联更新与删除,来保证数据的完整性。
学生个人情况表:
通过Sno与学生入学表建立主外键关系,同时建立级联更新与级联删除,级联更新是可能存在更新学号的情况下,级联删除是为了在一定的情况下删除该生信息。
学生家庭信息表:
通过Sno与学生入学表建立主外键关系,同时建立级联更新与级联删除,级联更新是可能存在更新学号的情况下,级联删除是为了在一定的情况下删除该生信息。
学生学籍变动表:
学籍变动表不需要人为进行录入,学籍变动表是记录学生学籍在校期间,学籍变动情况,通过更改学生入学表的sourceupdate(来源)触发器实现的,信息录入,为了保证数据的完整性,对Sno和日期建立主键,其中Sno参照入学表的Sno保证了跟踪每一名学生的在变动情况。另外,当学生变动类型为毕业时候,会发放一张毕业证。
第七章 应用系统开发
DBMS中系统用户表中数据如下:
中学学籍管理系统系统登录窗口:输入项:账户、密码输出项:通过select 查询语句把该账户信息传递到后台的应用程序中,我们这个时候可以判断该账户的实际用户人以及权限,当进入主程序界面后把账户人姓名显示,且根据不同账户等级显示不同的界面。应用程序代码如下://当点击登录按钮时候执行下面语句if (e.getSource()==an1) {//接收外部实体用户输入的账户信息String UserID=center.getText();//接受外部实体用户输入的密码String UserPassWord=mima.getText();try {//调用类GetConnection里面的getConn()方法链接数据库conn=GetConnection.getConn();stat=conn.createStatement();把查询到的结果集放入到rs中rs= stat.executeQuery("SELECT * FROM User_type where 账户='"+UserID+"'");//定义一个循环,当循环的值为非-1时候继续执行,等-1停止循环遍历while(rs.next()) {//判断当前rs所取到的一条结果集中第二个字段(密码)是否等于根据我所输入的账户所查询得出的值if (rs.getString(2).equals(UserPassWord)) {//如果相等,那么口令正确,让其进行主界面(zhuJieMian)ZhuJieMian zhuJieMian=new ZhuJieMian();System.out.println("登录成功");String zhanghu=rs.getString(1);String yonghuname1=rs.getString(3);String quanxiandaima=rs.getString(4);System.out.println("账户号:"+zhanghu+"用户姓名:"+yonghuname1+"权限等级是"+quanxiandaima);}}} catch (SQLException e1) {e1.printStackTrace();}
登录后系统主界面:
当进入到权限管理模块:
通过系统管理进入到权限管理模块:
可以点击表格上的记录,进行修改与删除操作,点击表格相应的行自动把学号作为参数
进行先关操作。
其中按班级查询是查询该班的管理者信息。
权限管理信息修改模块
权限用户添加模块:
默认密码是123456,该模块不显示密码。
总 结
中学学籍管理系统课程设计,经过数周的设计终于完结了,从最开始的小组组建到系统的需求分析、概念设计以及到最后数据库的实施,一个完整的流程下来,给了我很多的收获,其中充满了酸甜苦辣可以说是非常艰辛的,在最开始女生宿舍邀请我当组上其实我是存在一定畏难心里的,其实大家都懂的,但是当时因为没有考虑到项目到后面如此之难(主要是老师要求比较高),或者说比较繁杂的,但是内心上也是想通过担任组长一职锻炼自己,更深一步学习管理经验以及其他方面的提升,,毕竟曾经是也是一名战士,见红旗就要抢,见第一就要争取,不能当咸鱼的思想一直在激励着我,最后还是担任了小组组长职务,如果再给我一次机会,我感觉我是没有勇气去再干的,为什么呢,例如一个需求分析,反反复复改了很多次,组长下发的任务与组员上交的任务结果,心里上存在很大的差距;在需求分析阶段由于没有学习过软件工程,走了很多弯路,另外一个就是当时在需求分析阶段,总想着自己赶紧把系统分析图画完,在画完的基础上,把画完的结果分发下去,但是最终问题出现在我这里,那么结果和后序可想而知,经过这次需求分析后还是明白了这个团结协作的重要性,以前也明白团结协作的重要性,但是感觉系统功能小,任务小,不是很重视,但是经过余老师泼冷水后我,认真思考了一番后,感觉是需要改变的,让组员参与进来,而且是全程的参与,每个人不管会不会都要进行自己的学习和交流,即使最终课程设计结果不好,我感觉也是对的起自己的职责与大家的信任,带领了大家一起学习了课程设计。
其实本次对我个人我感到最大的进步就是从思想上,改变了我对这个团队协作能力与组织能力的理解,另外就是从经验上进一步加深我对这个软件工程与实际项目设计与完成阶段有了更深一步的认识。
最后就是非常感谢本学习期带我们的数据库的余钢老师,不管是从授课还是习题讲解
与课程设计或者一些其他的实际项目开发经验的讲解都给了我很大的启发,让我对软件开发有了更深的理解,希望以后还能继续在余老师的带领下继续学习。
参考文献
例:
[1] 杨鑫华,赵慧敏等.数据库原理与DB2应用教程[M].北京:清华大学出版社,.8,10-12
[2] 王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,1998.7,125-130
[3] (美)希伯尔沙茨.数据库系统概念[M].北京:机械工业出版社,.10,305-306
[4] (日)MICK/著 吴炎昌/译 SQL进阶教程 北京:人民邮电出版社,.11,01--4463号
中学学籍管理系统数据库课程设计 限于篇幅只能采取截图方式上传 原文件在我资源中有所展示。