数据库-课程设计学生选课系统_第1页
数据库-课程设计学生选课系统_第2页
数据库-课程设计学生选课系统_第3页
数据库-课程设计学生选课系统_第4页
数据库-课程设计学生选课系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩11 信计 2013-2014 (一)数据库原理及应用课程设计设计题目选修课系统设计时间2014.1.6-2014.1.10学生姓名学生学号2011040313020110403129所在班级 指导教师 徐州工程学院数学与物理科学学院一需求分析学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管 理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷 的查询手段。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为 人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理 所无

2、法比拟的优点。这些优点能够极大地提高人事劳资管理的效率 ,也是企业的 科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套软件成为很有必要的事情,在下面的各章中我们将以开 发一套学生选课系统为例,谈谈其开发过程和所涉及到的问题及解决方法。本实验实现的学生选课管理系统主要包括以下功能:1.完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信 息、课程设置、学生成绩以及操作员信息等;2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程的浏览教 师信息查询、教室空闲时间查询等 JSP页面。3 具备一定的安全性管理功能。包括操作员的权限设置、修改密码设置、 注销和等功能。二系

3、统总概括2.1系统的总设计本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系 统分为三个子模块:第一模块是学生选课的页面操作, 包括个人信息,密码修改 ,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息, 密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含 学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、 查询),管理员信息管理(增加、修改、删除、查询)。图1系统的功能模块图2.2数据库设计2.2.1数据库概念结构设计本系统主要有三个实体,其中有学生和课程两个实体集,一个学生可以选修 若干门课程,一门课程也可以被多个

4、学生选修,这两个实体集之间是多对多联系 ,还有教师和课程两个实体,一个老师可以教授若干门课程,一门课程却只能有 一个老师教授,这两个实体集之间是一对多联系。通过选课成绩将老师和学生联 系在一起。为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户 的编号、姓名、密码。本系统的 E-R图如下:性别姓名密码学号院系电话地址学生成绩编学时选修编课程号编地点编课程名课程编总人数M编教师号已选数编学分教授编院系1编健康毕业性别编姓名密码年龄学历院系职称院校状况号教师图2系统的E-R图2.2.2数据库逻辑结构设计根据关系模型的转换原则,上面的 ER图可转换为如下所示的关系模型:stude nt(s

5、IdsName,sPass,dld)含义分别为:学生(学号,姓名,密码,所在系的编号)stuDetail (userID,userSex,userMobil,useraddress)含义分别为:学生信息(学号,性别,电话,地址)teacher (tId,tPame tPass,dId) 含义分别为:教师(学号,姓名,密码,所在系的编号)teaDetail (userID, userSex, userAge, useredu, usertitle ,usersch,userhealth )含义分别为:教师信息(学号,性别,年龄,学历,职称,毕业院校,健康状况) course(ccName,tId

6、,credit,period,cPlace,cNumall,cNum,dld)含义分别为:课程(课程号,名称,教师号,学分,学时,上课地点,总人数,已选 人数,院系号)choosecourse(cId,sId, Grade)含义分别为:选修(学号,课程代码,成绩)room (roomname roomnum roomtime)含义分别为:教室(教室名,容纳人数,空闲时间)adm in (ald,aPass)含义分别为:管理员(管理员编号,姓名)department (did,dNam)含义分别为:院系(院系编号,院系名)根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中 主要

7、的数据表如下:表1学生表 Student的表结构主码列名数据类型宽度小数 位空否备注PksIdChar10N学号sNameChar20Y姓名sPassChar2Y密码didChar20Y所在系号表2学生信息表StuDetail的表结构主码列名数据类型宽度小数 位空否备注PkuserIDCharP10N学号userSexChar10Y性别userMobilCharr 30Y电话userAddressChar50Y地址表3教师表teacher的表结构主码列名数据类型宽度空否备注PktidChar10N编号tNameChar20Y姓名tPassChar2Y密码didChar20Y所在系号表4教师信息

8、表teadetail 的表结构主码列名数据类型宽度空否备注PkuserIDChar10N学号userSexChar10Y性别userAgeChar50Y电话usereduChar30Y学历usertitleChar30Y职称userschChar30Y毕业院校 UserhealthChar50Y健康状况表5课程信息表Course的表结构主码列名数据类型宽度|空否备注PkcidChar10 :N课程号coNameChar20Y课程名称tidChar10 1Y 1教师号:creditChar8Y学分periodChar8Y学时:cPlaceChar10Y上课地点cNumAIIChar4Y总人数cN

9、umChar4Y :已选人数 dIdChar10Y院系号表6选课成绩表choosecourse的表结构主码列名数据类型宽度空否备注PkcIdChar5N课程代码sIdChar3N学号gradeDecimal5丫成绩表7教室信息表room的表结构主码列名数据类型宽度空否备注Pkroomn ameChar10N教室名roomnumChar10N容纳人数roomtimeChar10Y空闲时间表8管理员表admin的表结构主码列名数据类型宽度空否备注PkaIdChar10N管理员编号aPassChar10丫管理员姓名表9院系表department的表结构主 码列名数据类型宽度空否备注PkdidChar

10、10N院系号dNameChar10Y院系名三系统实现3.1 JSP文件代表的操作3.1.1主界面操作In dex.jsp/登录界面(包含学生、教师、管理员三个选项) Log in .jsp/ 密码验证3.1.2学生选课(a) 学生选课界面:student.jps/菜单显示stude ntln dex.html/欢迎界面stude ntMessage.jsp(b) 个人信息:studMessSel.jsp/ 个人信息的页面显示(c) 密码修改:stuM.jsp/在数据库中修改密码stuMessMod.jsp/修改密码界面 stuMessModSuc.jsp/ 修改成功(d) 成绩查询:grade

11、select.jsp/相应课程的成绩查询(e)选课:choosecourse.jsp/ 所有课程显示 choose.jsp/在数据库中插入数据choosesuccess.jsp/选课成功选课情况查询及退选:courseselect.jsp/ 选课情况查询 ccdel.jsp/数据库中删除选课记录(g)注销:zhuxiao.jsp/ 注销323教师管理(a) 教师管理界面:teacher.jps/菜单显示teacherI ndex.html/欢迎界面teacherMessage.jsp(b) 个人信息:teacherMessSel.jsp/个人信息的页面显示(c) 密码修改:teacherM.j

12、sp/ 在数据库中修改密码teacherMod.jsp/ 修改密码界面 teaMessModSuc.jsp/ 修改成功(d) 提交成绩:grade.jsp/选课学生信息显示grade In s.jsp/在数据库中插入数据(e) 课程信息:lookcourse.jsp/选课情况查询(f) 教室信息:classroom.jsp/查看可用教室的空闲时间(g) 注销:zhuxiao.jsp/ 注销3.2数据库的连接举例:验证用户类型和密码时的数据库连接%Stri ng n ame=(Stri ng)request.getParameter(username);String pass=(Stri ng)

13、request.getParameter(userpass);Stri ng s=(Stri ng)request.getParameter(userselect);Connection conn=n ull;Stateme nt stmt=n ull;ResultSet rs=null;Stri ng logi nNu m=0;sessio n.setAttribute(l nu m,logi nNu m);tryClass.forName(s un .jdbc.odbc.JdbcOdbcDriver);conn=DriverMa nager.getC onn ectio n(jdbc:od

14、bc:xk,sa,); if(s.equals(1)andString sql=select * from student where sld=+name+ sPass=+pass+;stmt=c onn. createStateme nt(); rs=stmt.executeQuery(sql); if(rs. next()logi nNu m=1;sessio n.setAttribute(l nu m,logi nNu m);sessio n.setAttribute(” name, name);out.print(name+登陆成功,页面跳转);resp on se.se ndRedi

15、rect(stude nt/stude ntl ndex.html); elseout.print(”用户名或密码有误.);resp on se.se ndRedirect(i ndex.jsp);if(s.equals(2)andString sql=select * from teacher where tId=+name+ tPass=+pass+;stmt=c onn. createStateme nt(); rs=stmt.executeQuery(sql); if(rs. next()logi nNu m=2;sessio n.setAttribute(l nu m,logi nN

16、u m);sessio n.setAttribute(” name, name);out.print(name+登陆成功,页面跳转);resp on se.se ndRedirect(teacher/teacherI ndex.html);elseout.print(”用户名或密码有误.);resp on se.se ndRedirect(i ndex.jsp);if(s.equals(3)andString sql=select * from admin where aId=+name+ aPass=+pass+;stmt=c onn. createStateme nt(); rs=stmt

17、.executeQuery(sql); if(rs. next()logi nNu m=3;sessio n.setAttribute(l nu m,logi nNu m);sessio n.setAttribute(” name, name);out.print(”管理员+name+登陆成功,页面跳转);resp on se.se ndRedirect(admi n/admi nln dex.html);elseout.print(”用户名或密码有误.);out.print(登陆页面 );catch(Exception e)out.print(e);/resp on se.se ndRedi

18、rect(i ndex.jsp);%v/body3.3具体操作3.3.1学生选课操作(a)登录页面图1.1学生登录页面(b)菜单操作图1.2学生选课系统的界面(c) 个人信息显示学生进入后可以在菜单里进行相应的操作,点击个人信息时,就会出现该学生的信息.如下图所示:图1.2 学生信息显示的界面(d)密码修改 举例:将0826006学号的密码该为:6666 其显示如下:图1.3修改密码 修改提交后数据库中的结果如下,可见密码已修改图1.4 数据库中修改后的student表(e)成绩查询根据教授该门课的老师是否提交成绩,学生可以查到自己相应课程的成绩, 其查询结果如下:课程查询及退选可以通过对应课

19、程后面的退选选项进行课程的退选图1.6查询选课情况的页面(g)选课界面中已通过数据库将所有的课程列出来,学生可以通过前面的选择标志进 行选课。图1.7选课信息的页面及选课操作选课后,相应数据库中的choosecourse表增加了一行选课记录43in SQL Seikve Enlezfitxife XazLaf.ifx立件(D SCQll帮助记)ctd.I grsde1曲詢2蜩期030B 闽 DOSQ3OflKDlO0_L1-1Ofi2J&DOS_2吊 表 ichDoseoiirseBi 中的致4K忡書禺 auanke中“ (local)上IIsysprcipt. . W5期口 EiFEfri.

20、卅m、町尸芭- stfl-tt! BF 由-IS ssitprapier. depurS UScourse chooseCo.Hadran图1.8选课后数据库中的chooseCourse表332教师操作(a)登录页面输入教师的教师编号和密码,选择用户类型为教师,即可登录图2.1教师登录页面(b)菜单操作登录之后进入教师操作页面,如下图所示,左边是菜单,可以进行相应的操作图2.2教师操作页面图2.3教师信息显示(c)密码修改将原来的密码111改成了 111111图2.4教师密码修改界面修改后,可以查询数据库中的teacher表,可以看到马云教师的密码被修改 成了 111111。图2.5修改密码后

21、的teacher表(d)成绩录入点击菜单中的提交成绩,可显示如下页面:图2.6学生成绩录入界面 点击相应的课程下的学生成绩录入,可进入下个页面: 学号为0826006的学生录入成绩为59分。图2.7成绩录入成绩录入后可在数据中查询到相应的信息,学生也可通过学生选课菜单中的 查询成绩也可看到相应的成绩,下图为数据库中的choosecourse中的信息图2.8录入成绩后数据库中的choosecourse表(e)课程信息在这里可以查询到老师所教的所有课程的具体信息,包括学分,学时,上课地点,已选的人数等,如下图所示。教室信息教师可以通过查询教室的空闲时间,以备调课使用四总结经过一个多月的时间终于把数

22、据库的课程设计做好了,基本实现了学生选课的一般功能。在本次设计的全过程中,我对所学的知识有了一个比较系统的认识 和理解。涉及了各方面的知识,大大扩展了我的知识面。在整个设计阶段感受最为深刻的是掌握学习的方式和解决问题的方法。首先是解决问题的方式,就像我在解决设计中的很多问题一样,一开始总是在看书, 和书上的进行比对,虽然书本上的只是大部分都是有价值, 正确的,但实际上每 个人编程的思路和对数据处理的方法、 思想都是不同的,这就要求我们一定要通 过实践才能找到解决问题的方案。在整个课程设计的过程中,我深刻的体会到了 这一点的重要性,也牢记主了这一点,在今后的学习中我也会继续将这种方法延 续下去。

23、在做课程设计的这一个月里,虽然也碰到了很多的问题,但是经过和同学的 讨论和研究,问题都一一克服了得到了解决。因为我们始终坚信只要有恒心,铁杵磨成针!”。经过这次课程设计,我的能力有了很大的提高,比如操作能力、 分析问题的能力、合作精神、严谨的工作作风等方方面面都进步了。 我要更加努 力,努力学好专业知识,全面发展自己。相信经过这次的磨练,对我以后的学习 肯定大有益处!五附录5.1主要代码4.3.1(a)主要代码:vform n ame=logi nform method=post action=log in .jsp 欢迎您使用学生选课系统 v/fon t vtable width=294 b

24、order=0 alig n=ce nter&n bsp;用户名: 密码: 用户类型:vselect n ame=userselect学生 v/opti onvopti on value=2教师 v/optio n 管理员v/optionv/select v/tdvtd&n bsp;v/td v/trv/tablev/form v/body(b)主要代码:vtable width=100% border=0cellpaddi ng=Ocellspaci ng=1bgcolor=#000000 学生选课系统v/fon t 个人信息 v/font 密码修改 v/fontalig n=left vf

25、ont成绩查询 v/fontv/td vfontcolor=#0000FFsize=3 选课查询以及退选 v/fontv/av/divv/tdv/trvtrvtdheight=40alig n=ce nterbgcolor=#FFFFFFvdivalig n=leftvimg src=image/i ndex_01.gif width=20 height=17va href=choosecourse.jsptarget=rightFrame vfontcolor=#0000FFsize=3 选课 v/fontv/av/divv/tdv/trvtrvtdheight=40alig n=ce nt

26、erbgcolor=#FFFFFFvdivalig n=left注销v/fon tv/av/divx/td(c)tryClass.forName(s un .jdbc.odbc.JdbcOdbcDriver);conn=DriverMa nager.getC onn ectio n(jdbc:odbc:xk,sa,);String sql=select * from student where student.sld=”+name+”;System.out.pri ntln( sql);stmt=c onn. createStateme nt();rs=stmt.executeQuery(sq

27、l);if(rs. next()sId=rs.getStri ng(sld);sName=rs.getStri ng(sName);dId=rs.getStri ng(dld);String sql1=select * from stuDetail where userID =+name+”;System.out.pri ntln( sqll);stmt=c onn. createStateme nt();rs=stmt.executeQuery(sql1);if(rs. next()Sex=rs.getStri ng(userSex);Mobil=rs.getStri ng(userMobi

28、l);Addr=rs.getStri ng(userAddress);Conn ecti on connd=n ull;Stateme nt stmtd=n ull;ResultSet rsd=n ull;conn d=DriverMa nager.getCo nn ectio n(jdbc:odbc:xk,sa,);stmtd=co nn d.createStateme nt();rsd=stmtd.executeQuery(select dName from department where dld=+dld+”);if(rsd. next()dName=rsd.getStri ng(dN

29、ame);catch(Exception e)out.println(e);%vform n ame=form1 method=postvtable width=350 border=0alig n=ce ntercellpadd in g=0cellspac in g=2 class=bordervfo ntsize=5color=#FFFFFF 学生个人信息 color=#FFFFFFcolor=#FFFFFFcolor=#FFFFFF vfont size=4 v/fon t vfont size=3 color=#FFFFFFx%=sld% vfont size=4 v/fon t v

30、font size=3 color=#FFFFFFv%=sName%v/fo ntv/tdvtd width=60 vfont size=4 v/fon tv/tdvtd width=100 vfont size=3 color=#FFFFFFv%=Sex%v/fo ntv/td v/trvtrvtd vfont size=4 color=#FFFFFF 院系 v/fontv/tdvtd vfont size=3 color=#FFFFFFv%=dName%v/fo ntv/tdvtd vfont size=4 color=#FFFFFF电话 v/fontv/tdvtd vfontsize=3

31、 color=#FFFFFFv%=Mobil%v/fo ntv/tdvtd vfont size=4 color=#FFFFFF地址 v/fontv/tdvtd vfontsize=3 color=#FFFFFFv%=Addr%v/fo ntv/tdv/trv/tablev/form(d)Stri ng sPass=(Stri ng)request.getParameter(sPass);Connection conn=n ull;Stateme nt stmt=nu II;tryClass.forName(s un .jdbc.odbc.JdbcOdbcDriver);conn=Driver

32、Ma nager.getC onn ectio n(jdbc:odbc:xk,sa,);String sql2=update stude nt set sPass=+sPass+ wheresld=+name+”;stmt=c onn. createStateme nt();stmt.executeUpdate(sql2);stmt.close();resp on se.se ndRedirect(stuMessModSuc.jsp);fun cti on checkBig()if (docume nt.form1.sPass.value=”)alert( 密码不能为空!);docume nt

33、.form1.sPass.focus();return false;else if (docume nt.forml.sPassag n. value=”)alert(再次输入密码!);docume nt.form1.sPassag n. focus();return false;else if (docume nt.form1.sPass.value!=docume nt.form1.sPassag n.value)alert(两次密码不同!);docume nt.form1.sPass.focus();return false;out.print(修改成功);(e)tryStateme n

34、t stmtc=n ull;ResultSet rsc=n ull;Connection connc=nu II;Class.forName(s un .jdbc.odbc.JdbcOdbcDriver);conn c=DriverMa nager.getC onn ectio n(jdbc:odbc:xk,sa,);wherewhereStri ngsqlc=select * from chooseCoursesId=+name+”;stmtc=c onn c.createStateme nt(); rsc=stmtc.executeQuery(sqlc);while(rsc .n ext(

35、)Stri ng cold=rsc.getStri ng(cold);float grade=rsc.getFloat(grade);Stri ng grademess=n ull;Stateme nt stmt=nu II;ResultSet rs=null;Connection conn=n ull;conn=DriverMa nager.getC onn ectio n(jdbc:odbc:xk,sa,);String sql=select coName from course cold=+cold+;stmt=c onn .createStateme nt(); rs=stmt.exe

36、cuteQuery(sql); if(rs. next() if(grade0)out.pri nt(grade);else out.pri nt(未提交);(f)主要代码:%=name%选课选择情况cellpaddi ng=0cellspaci ng=1alig n=ce nter color=bluealig n=cen terbgcolor=#FFCCFFalig n=ce nterbgcolor=#FFCCFF学时alig n=ce nter color=bluebgcolor=#FFCCFFdiv上 课 地 点alig n=ce nter color=blue 教师alig n=ce nter 操 作 选 项vstro ngxfo ntcolor=bluev/fon tv/str on gv/tdv/tr while(rsc .n ext()Stri ng coId=rsc.getStri ng(coId); float grade=rsc.getFloat(grade); Stri ng grademess=n ull;Stateme nt stmt=nu II;ResultSet rs=null;Connection conn=n ull;conn=DriverMa nager.g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论