数据库课程设计报告书.docx
《数据库课程设计报告书.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告书.docx(16页珍藏版)》请在冰点文库上搜索。
数据库课程设计报告书
《数据库技术》课程设计
学生信息管理系统
班级
学号
姓名
E-Mail
电话
提交日期
指导教师
承德石油高等专科学校计算机与信息工程系
学生信息管理系统
摘要:
主要是利用MySQL和NetBeans来创建一个简单学生的数据库管理系统,用网页形式进行数据库的增、删、改、查等数据库的功能。
关键字:
MySQL;NetBeans;数据库增、删、改、查;
1.课程设计介绍
本次课程设计的内容是对数据库的操作,运用相应的网页上,而且是一次综合性比较强的课程设计,不单单是只对MySQL的一些管理,更多的是要在其它编程语言的灵活运用,以及基于JSP的网页设计,在课程设计过程中,要运用到相当多的JAVA语言,这样来说,一定要有一定的java基础,否则即使把代码给了我们,也看不懂,在设计网页界面的时候,可以配合Dreamweaver来使用,由于这次课程的设计时间有限,只是做一个比较简单的数据库管理系统,主要实现增、删、改、查就可以了,因此此次课程设计是由我们学生自己独立完成的。
对于初次来进行这个课程设计还是有一定的难度的,主要原因是我们学生学习的java还是不太好,在而要大量的代码要求的jsp,需要自己查阅大量的资料,必要时候还要老师的帮助,目的是很明确的,最主要还是要自己在课余时间加强训练,把增删改查给成功的弄出来。
2.系统设计
2.1需求分析
做一个简单的学生管理系统,可以参考学校的学生管理系统,做一定的分析,用到的主要工具有MySQL、NetBeans。
最后完成对学生的一个比较好的管理,由一个管理员对其中的数据进行管理,而学生登录的时候时候只能进行查看。
2.2总体设计
学生信息管理系统是一个比较大的数据库系统,总的来是要对学生的信息有一个合理的管理,要让学生和教师及管理员用起来舒服,在一方面做到方便,还有必要使网页界面显得美观,这要在网页设计上花下一定的功夫,而且的用户的交互性好,界面比较友好,在网页设计上用到工具是Dreamweaver,用起来比较方便一点,对网页布局做美化,网页只是前台的一些用户的操作,其实最重要的是后台在代码上对数据库的操作,是一个很关键的问题,学生管理系统是针对学生信息的管理,但是对于学生用户来说,只能进行查看,不能进行数据库的修改操作,而对于数据库的管理员来说,他就可以有很高的权限,可以向其中进行修改操作,对学生管理系统数据库进行维护。
而针对这两种人员,可以分别让他们有各自的登录名,以确认各自的权限。
进行相应的操作。
对于管理员对其中数据库的操作也要相应做到操作方便。
2.3功能设计
一个学生管理系统它的功能主要就是能够对其中数据的增删改查,首先用Dreamweaver做一个登录界面,让它连接到数据库的login表,来确定是属于学生人员还是管理人员,当验证成功后让网页跳转到学生信息表界面,显示所有学生信息,这个网页也是通过连接数据库的学生信息表来实现的,在这个网页当中,以学生身份进入的话,只能查看学生的信息,不能进行信息的修改操作,如果刚开始是以数据库管理员身份进入的话,在这个网页当中就显示删除的控件及在上栏可以有一个添加操作,能进行数据的添加,添加之后再显示,插入完成后的数据情况,数据添加的时候可以添加一些下拉表,进行方便的选择。
3.数据库设计与实现
3.1数据库的需求分析
数据库的主要需求是,进行数据的录入和管理,用的是MySQL数据库,可以用本地计算机作为一个服务器,之后让别人访问自己的数据库,用网页地址的方式,在数据库当中主要建的是一个学生表,及一个登录表,然后利用前台对数据库的增删改查操作,数据库用MySQL,就已经足够了,而对一个普通的学生实训用的一个学生信息管理系统来,其实对数据库的要求也不是太高。
因为所用到信息不多。
3.2数据库概念结构设计
该学生信息管理系统,是一个比较简单的数据库,涉及到的表也不多,在表方面上,有student表及一个login表是一个最基本的信息,student表是一个学生所有信息的表,另外一个login表是用来验证用户的登录,给予相应的权限,而对数据库进行操作的时候,所涉及到sql语句,嵌入到网页当中了,只要打开网页,进行直观的操作就可以进行对数据库的修改了。
连接数据库
图1
在数据库结构中,其中student中有的元素是学号,姓名,性别,年龄,及出生日期,为了实现的方便它们的类型教师字符型的,student表中学号设为主键,不能为空,其中年龄有一个范围限制,在18岁到23岁之间。
而在性别中,设置一个默认值为男,这些在实现连接的时候都要在界面上显示出来。
3.3数据库的逻辑设计
首先在启动本地的MySQL服务器,在其中建一个为fl-stu的数据库,在这个数据库中有一个login表和student表,login表中包含了name和password。
其次实现对数据库增删改查,是进行在网页中嵌入sql语句,在NetBeans中的com.su.dao里一个testlogin.java代码中就有sql语句,进行增加,删除,插入的语句,而且在里面引用到index.jsp网页中显示出来,显示出信息之前还要进行用户的验证,总的来说是在实现数据库的增删改查都是网页上进行的。
而网页也有一定的设计要求,讲究美观性,涉及的网页有5个,一个登录页面,一个首页,一个插入页,一个删除页,还有一个查询页,当进行其中的某项操作时也进行相应的跳转。
还要做跳转时准确无误,插入时要插入的正确,插入之后,跳转到下个页面时能显示出插入后所有的信息,还有删除及查询做到界面的友好,操作的简便。
还有要提到的是,在做查询页面的时候在网页当中做到多个条件的查询,而实现这个功能,所要用到对数据库操作的sql语句就是最关键的了,其中有相对于学号和年龄的双条件查询,还有可以对所有男生或女生人数的统计的功能。
总体来说,只要是表里的数据都可以进行查询。
数据库的student-ER图
图2
t
数据库的login-ER图
图3
4.系统各功能模块(页面)设计
4.1界面设计
登录界面:
所在网页为aa.jsp.提供用户的登录,用Dreamweaver做一个登录界面,用于用户名及密码的验证。
如下图所示:
图4
登录以后进入,显示所有学生信息,并有相应控件提示下一步的操作。
图5
进行相应的插入,修改,删除,查询操作。
图6
图7
图8
4.2功能实现
1、刚开始由登录界面进入,弹出一个学生信息表页,点击上面的添加数据按钮。
2、进行添加了数据之后得到如图5所示,添加了足够多的数据,就可以进行相应的修改查询。
3、进行查询时,按照其中的字段进行查询,就可以得到相应的信息。
4、如图5所示,点击删除按钮时可删除其所在行。
5、点击修改,跳转到修改页,如图8所示,在其中进行相应的修改就可以了,然后跳到学生信息表页。
5.课程设计总结和体会
课程设计已经结束了,总体来说,是学到了不少数据库应用的技术,自己的能力也在此得到了一定的提高,不过在设计过程中也遇到了不少的问题,觉得自己在java编程方面还是不足,有待去提高,在这过程中也常常遇到一些关于这个代码的问题,比如一个函数出现了错误,而我要去查看的话,刚开始还不知道怎样去解决,当然也向同学、老师求助,如何把问题消除。
学生信息管理系统的课程设计是一个上大学以来的一个比较综合性的设计。
但是在短短的一个星期的实训,我觉得还是远远不够的,因为有很多东西我们学习的还不是太深入,在设计过程中也得到了很大的体现,自己的编写代码能力相当欠缺,可以这么说,大多数是借用老师的代码,几乎自己写出来的相当的少。
经过了此次的学习,真的发现自己要在专业课上下点工夫,要是在自己的操作下,把数据库的增删改查全部弄好,那才是真正学到的知识。
经过了这次课程设计,觉得自己需要提高的是:
1、在编程能力上要得到更大的提高,特别是熟练掌握一门编程语言,要对一门编程语言有一个深刻的理解,并熟练运用到实际问题上。
2、对一个项目,要有一个总体的把握,在建设之前,认真思考系统的组成情况,而这此次训练过程中,这个不足的问题就显现出来了,在设计之前不知如何下手,所以要在这方面上有提高。
3、在网页设计辅助工具掌握的不太灵活,所以在这个寒假假期期间要在这网页设计方面上多练习一下,用自己的电脑好好的操作一下网页设计工具Dreamwaver。
4、利用自己的课余时间学习jsp,多看一下有关这方面的书,在下个学期的ASP学习有很大的帮助。
6.致谢
此次课程设计已圆满结束了,要感谢老师的教导,如果没有老师的指导,相信作业也不能这么顺利的完成,还要感谢同学的帮助,最后要感谢学校给我们开设了这个课程设计的课,让学生在学习理论知识的同时,也让学生去感受一下实际操作。
参考文献
[1]JSP应用开发技术(主编:
贾素玲、王强)清华大学出版社2007
[2]JSP网络编程从基础到实践邓子云编著电子工业出版社2009.8
[3]
[4]
附录
1.登录功能模块(实现登录及跳转)
以下实现登录,登录后跳转index.jsp,不成功跳转到aa.jsp
类名:
Loginservlet.java
Stringname=request.getParameter("name");
Stringpassword=request.getParameter("password");
//System.out.println(name+password);
Testlogint=newTestlogin();
s=t.getTest(name,password);
if(s==1){
ArrayListalist=newTestlogin().getstulist();
request.setAttribute("alllist",alist);
request.getRequestDispatcher("aa.jsp").forward(request,response);
else
request.getRequestDispatcher("index.jsp").forward(request,response);
2.插入功能模块
Stringsno=request.getParameter("sno");
Stringsname=request.getParameter("sname");
Stringssex=request.getParameter("ssex");
Stringsage=request.getParameter("sage");
Stringsbirthday=request.getParameter("sbirthday");
System.out.println(ssex+sname);
intc=newTestlogin().insert_s(sno,sname,sage,ssex,sbirthday);
跳转
ArrayListalist=newTestlogin().getstulist();
request.setAttribute("alllist",alist);
request.getRequestDispatcher("aa.jsp").forward(request,response);
3.删除功能模块
(1)类:
Deleteservlet.java
Stringsno=request.getParameter("sno");
Stringsname=request.getParameter("sname");
Stringssex=request.getParameter("ssex");
Stringsage=request.getParameter("sage");
Stringsbirthday=request.getParameter("sbirthday");
System.out.println(ssex+sname);
intc=newTestlogin().insert_s(sno,sname,sage,ssex,sbirthday);
if(c==1){
ArrayListalist=newTestlogin().getstulist();
request.setAttribute("alllist",alist);
request.getRequestDispatcher("aa.jsp").forward(request,response);
request.getRequestDispatcher("insert_s.jsp").forward(request,response);}}
4.修改功能模块
(1)类:
Updateservlet.java
Stringsno=request.getParameter("code");
StudVovo=newTestlogin().getVoBy(sno);
request.setAttribute("vo",vo);
request.getRequestDispatcher("update.jsp").forward(request,response);
(3)实现修改方法,跳转到aa.jsp
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringsno=request.getParameter("sno");
Stringsname=request.getParameter("sname");
Stringssex=request.getParameter("ssex");
Stringsage=request.getParameter("sage");
Stringsbirthday=request.getParameter("sbirthday");
intc=newTestlogin().xiugai(sno,sname,ssex,sage,sbirthday);
if(c==1){
ArrayListalist=newTestlogin().getstulist();
request.setAttribute("alllist",alist);
request.getRequestDispatcher("aa.jsp").forward(request,response);
5.从数据库导入功能模块
[1]从数据库登录方法:
getTest
实现代码:
publicintgetTest(Stringnam,Stringpasswor){
inta=0;
try{
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="selectcount(*)fromloginwherename='"+nam+"'andpassword='"+passwor+"'";//SQL查询语句
System.out.println(sql);
ResultSetrs=st.executeQuery(sql);
if(rs.next()){
a=rs.getInt
(1);
[2]从数据库查询student学生表信息,方法:
getstulist.
实现代码:
ArrayListalist=newArrayList();
try{
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="select*fromstudent";//查询学生表的SQL语句。
ResultSetrs=st.executeQuery(sql);
以下读出学生信息
while(rs.next()){
StudVosvo=newStudVo();
svo.setSno(rs.getString("sno"));
svo.setSname(rs.getString("sname"));
svo.setSage(rs.getString("sage"));
svo.setSbirthday(rs.getString("sbirthday"));
svo.setSsex(rs.getString("ssex"));
alist.add(svo);
[3]从数据库插入方法:
insert_s
实现代码:
publicintinsert_s(Stringsno,Stringsname,Stringsage,Stringssex,Stringsbirthday){
inta=0;
try{
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="insertintostudentvalues('"+sbirthday+"','"+sage+"','"+ssex+"','"+sname+"','"+sno+"')";//插入SQL语句
System.out.println(sql);
a=st.executeUpdate(sql);
[4]数据库删除实现代码:
publicintdelet(Stringid){
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="deletefromstudentwheresno='"+id+"'";
System.out.println(sql);
a=st.executeUpdate(sql);
[5]修改实现代码:
publicintxiugai(Stringsno,Stringsname,Stringssex,Stringsage,Stringsbirthday){
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="updatestudentsetsname='"+sname+"',ssex='"+ssex+"',sage='"+sage+"',sbirthday='"+sbirthday+"'wheresno='"+sno+"'";//用SQL语句实现录入学生信息
System.out.println(sql);
a=st.executeUpdate(sql)
}catch(SQLExceptionex){
Logger.getLogger(Testlogin.class.getName()).log(Level.SEVERE,null,ex);
}
[6]查询数据库的实现代码:
publicArrayListselectaction(Stringsno,Stringsname,Stringsage){
ArrayListalist=newArrayList();
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="select*fromstudentwhere1=1";
if(!
sno.equals("")){
sql=sql+"andsno='"+sno+"'";//按学号条件查询
}
if(!
sname.equals("")){
sql=sql+"andsnamelike'%"+sname+"%'";//按姓名条件查询
}if(!
sage.equals("")){
sql=sql+"andsage='"+sage+"'";//按年龄条件查询
}
while(rs.next()){
StudVosvo=newStudVo();//在方法StuVo中实现最后在网页上显示输出。
svo.setSno(rs.getString("sno"));
svo.setSname(rs.getString("sname"));
svo.setSage(rs.getString("sage"));
svo.setSbirthday(rs.getString("sbirthday"));
svo.setSsex(rs.getString("ssex"));
alist.add(svo);
[6]类StuVo.java,按学号为主键进行查询。
Connectioncon=getConnection();
Statementst=con.createStatement();
Stringsql="select*fromstudentwheresno='"+sno+"'";
System.out.println(sql);
ResultSetrs=st.executeQuery(sql);
if(rs.next()){
stuvo=newStudVo();
stuvo.setSno(rs.getString("sno"));
stuvo.setSname(rs.getString("sname"));
stuvo.setSage(rs.getString("sage"));
stuvo.setSbirthday(rs.getString("sbirthday"));
stuvo.setSsex(rs.getString("ssex"));