学生网上选课系统毕业设计论文.docx
《学生网上选课系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《学生网上选课系统毕业设计论文.docx(47页珍藏版)》请在冰点文库上搜索。
学生网上选课系统毕业设计论文
实训报告
课题名称:
学生网上选课系统
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
一、设计任务与目的…………………………………………………3
二、需求分析………………………………………………………3
三、总体设计…………………………………………………………3
3.1、系统功能结构示意图………………………………………3
3.2、系统功能说明………………………………………………4
3.3、数据库E-R图………………………………………………4
3.4、主要功能流程图……………………………………………5
四、详细设计…………………………………………………………6
4.1、系统文件框架图……………………………………………6
4.2、设计模式及关键技术………………………………………6
4.3、数据库设计…………………………………………………7
五、测试与运行结果…………………………………………………8
六、参考文献…………………………………………………………9
七、设计心得…………………………………………………………10
附录……………………………………………………………………11
一、设计任务与目的
传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的限制完成选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工作效率。
通过设计网上学生选课系统,使我们对JAVA的JSP编程以及数据库(SQLServer)的搭建的认识更加熟悉了解。
二、需求分析
本系统首先分为两大块:
1、学生模块;2、管理员(老师)模块。
●学生模块
1、学生登录;
2、学生注册;
3、学生选课;
4、学生退课;
5、查看已选课程;
6、学生成绩查询。
●管理员(老师)模块
1、管理员登录(usename:
admin;password:
admin);
2、查看已开课程信息;
3、增加新开课程;
4、删除已有课程信息;
5、修改课程信息;
6、录入学生成绩。
三、总体设计
3.1、系统功能结构示意图
3.2、系统功能说明
●前台管理
1、注册登录:
用户的注册登录,包括学生用户的注册登录和管理员(老师)用户登录。
2、选课退课:
学生对已有课程的选择或对已选课程的退选功能。
3、查询信息:
学生对选课和成绩的查询以及管理员(老师)对课程信息的查询。
4、修改信息:
管理员(老师)对课程信息的修改。
5、增减课程:
管理员(老师)增加新课程或删除已有课程。
6、录入成绩:
管理员(老师)录入学生课程学习的成绩。
●后台管理
1、查询学生信息:
已登录管理员查看学生属性信息,包括学生的姓名,性别,院系,以及联系电话。
2、查询课程信息:
已登录管理员查看课程信息列表,包括课程的名字,上课时间,上课地点,任课老师,任课老师电话,以及课程学分。
3、查询选课信息:
已登录管理员查看学生选课课程情况,包括学生姓名,课程名称,上课时间,上课地点,任课老师,学生电话,课程学分,以及学生课程成绩。
3.3、数据库E-R图
3.4、主要功能流程图
四、详细设计
4.1、系统文件框架图
4.2、设计模式及关键技术
●设计模式
系统中有管理员(老师)对学生选课的管理包括添加课程,删除课程及录入成绩等功能,学生可以注册和登录到该系统,登录该系统之后可以查看学校所开的课程的基本信息,学生可以选修其中的一些比较喜欢的课程,当学生又有其它想法对某课程不感兴趣的时候也可以退选已选的课程,然后重新选择喜欢的课程,选课结束后老师就给同学们上课,最后老师根据各个学生的表现或通过考试给同学们相应的考试分数(通过系统录入),最后学生可以通过此系统来查询所选课程的考试成绩。
如果学生发现成绩或其他信息出现问题,可以通过提供的教师电话联系该开课老师,老师核对后可以进行相应的修改。
Jsp页面用于给用户提供界面,提交参数及显示结果。
通过JavaBean处理参数并连接数据库,从数据库中获得用户请求的信息再交付给Servlet处理交付个用户显示在jsp页面。
●关键技术
ØJavaBean、Servlet技术
JavaBean封装了程序的页面逻辑,可以实现代码的重复利用,容易维护和使用,利用
useBean>动作元素就可以很容易的在各个jsp页面使用JavaBean,将要用到的方法都封装到java文件中通过JavaBean技术,直接调用其中的各种方法实现与jsp页面的交互。
ØJDBC数据库连接技术
数据库的连接在整个选课系统中是必不可少的,而且经常用到,于是我将它封装到dbcon.java的java文件中,其中有数据库连接的几个基本步骤:
加载驱动,获得连接,创建Statement对象等等,这样做的好处是在当有与数据库连接的相关操作时就直接利用JavaBean技术就能很方便的实现。
Ø登录注册的验证技术
登陆注册的验证主要通过专门编写的几个用于验证的函数和JavaScript脚本语言技术,以及数据库的创建时的数据的完整性约束等等来实现简单的验证
Ø各页面之间跳转时参数的传递技术
各个页面之间的跳转时参数的传递主要用到了几个jsp内置对象:
request,session等。
在整个系统所有页面都要用到的参数就用session对象的setAttribute()方法将参数存储到session对象中,然后利用getAttribute()方法获取参数。
request对象的getPatameter()方法用于获取表单提交的参数。
Ø编码解码技术
字符转换的函数codeToString()方法来处理系统中出现的乱码问题。
通过对可能出现乱码的字符重新编码来解决乱码问题。
4.3、数据库设计
数据库:
SQLServer2000个人版
数据库名:
jsp_db(jsp_db_Data.MDF;jsp_db_Log.LDF);
学生信息表(stuInfo):
课程表(course)
学生选课表(sc)
管理员登录信息表(adminInfo)
4.4、关键程序代码(见附录)。
五、测试与运行结果
六、参考文献
1、王珊,萨师煊,数据库系统概论,北京高等教育出版社,2006.7;
2、[美]布鲁斯•埃克尔(Eckel,B.),陈昊鹏译,Java编程思想(第4版),机械工业出版社,2007.6;3、[美]鲍格斯坦(Bergsten,H.),林琪、朱涛江译,JSP设计(第三版),中国电力出版社,2004;
4、刘卫国,严晖,数据库技术应用----SQLServer,清华大学出版社,2007.1
七、设计心得
通过这次课程设计,对JSP、SQL Server 2000有了进一步的了解,也对网页设计有了一定的见解,对我们的网上选课系统进行分析,设计,实现。
进一步的了解了JAVA编程和数据库。
也增强了团队合作意识,共同合作精神。
对以后的设计实现有了一定的基础,在这次课程设计中得到了很大的收获。
附录:
adminbean.java
packagebean;
importbean.dbcon;
importjava.sql.*;
publicclassadminbean{
privateStringtno;
privateStringpassword;
privateResultSetrs;
privatedbcondb=newdbcon();
publicadminbean()
{
}
publicStringgetTno(){
returntno;
}
publicvoidsetTno(Stringtno){
this.tno=tno;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringcheckTeacher()
{//教师登陆验证
Stringbackstr="";
booleanmark=true;
if(this.tno==null||this.tno.equals(""))
{
backstr+="
请输入教师编号!
";
mark=false;
}
if(this.password==null||this.password.equals(""))
{
backstr+="
请输入密 码!";
mark=false;
}
if(mark)
{
Stringsql="select*fromadminInfowheretno='"+this.tno+"'andpassword='"+this.password+"'";
try{
rs=db.getRs(sql);
if(!
rs.next())
backstr="false";
else
backstr="true";
}catch(Exceptione){e.printStackTrace();}
}
db.closed();
returnbackstr;
}
}
courseInfo.java
packagebean;
publicclasscourseInfo{
privateStringcno;
privateStringcname;
privateStringtime;
privateStringaddress;
privateStringteacher;
privateStringphone;
privateStringxuefen;
privateStringzno;
privateStringzy;
privateStringzx;
publicStringgetZno(){
returnzno;
}
publicvoidsetZno(Stringzno){
this.zno=zno;
}
publicStringgetZy(){
returnzy;
}
publicvoidsetZy(Stringzy){
this.zy=zy;
}
publicStringgetZx(){
returnzx;
}
publicvoidsetZx(Stringzx){
this.zx=zx;
}
publicStringgetCno(){
returncno;
}
publicvoidsetCno(Stringcno){
o=cno;
}
publicStringgetCname(){
returncname;
}
publicvoidsetCname(Stringcname){
ame=cname;
}
publicStringgetTime(){
returntime;
}
publicvoidsetTime(Stringtime){
this.time=time;
}
publicStringgetAddress(){
returnaddress;
}
publicvoidsetAddress(Stringaddress){
this.address=address;
}
publicStringgetTeacher(){
returnteacher;
}
publicvoidsetTeacher(Stringteacher){
this.teacher=teacher;
}
publicStringgetPhone(){
returnphone;
}
publicvoidsetPhone(Stringphone){
this.phone=phone;
}
publicStringgetXuefen(){
returnxuefen;
}
publicvoidsetXuefen(Stringxuefen){
this.xuefen=xuefen;
}
}
dbcon.java
packagebean;
importjava.sql.*;
importjava.util.*;
importbean.scoretable;
publicclassdbcon
{
privatestaticConnectioncon;
privateStatementstm;
privateResultSetrs;
privatestaticStringclassname="com.microsoft.jdbc.sqlserver.SQLServerDriver";
privatestaticStringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName=jsp_db";
publicdbcon()
{
}
publicstaticConnectiongetConnection()
{//连接数据库
try
{
Class.forName(classname);
}
catch(Exceptione)
{
System.out.println("getConnection方法异常!
");
e.printStackTrace();
}
try{
con=DriverManager.getConnection(url,"sa","");
}
catch(Exceptione)
{
e.printStackTrace();
con=null;
}
returncon;
}
publicStatementgetStm()
{
try{
getConnection();
stm=con.createStatement();
}catch(Exceptione)
{
e.printStackTrace();
System.out.println("getStm()方法异常!
");
}
returnstm;
}
publicResultSetgetRs(Stringsql){
getStm();
if(sql==null)sql="";
try{
rs=stm.executeQuery(sql);
}catch(Exceptione){
e.printStackTrace();
System.out.println("getRs()方法异常!
");
rs=null;
}returnrs;
}
publicvoidclosed(){
try{
if(rs!
=null)rs.close();
}
catch(Exceptione){e.printStackTrace();}
try{
if(stm!
=null)stm.close();
}catch(Exceptione){e.printStackTrace();}
try{
if(con!
=null)con.close();
}catch(Exceptione){e.printStackTrace();}
}
publicStringcodeToString(