《-选题系统设计与实现学士学位论文.doc》由会员分享,可在线阅读,更多相关《-选题系统设计与实现学士学位论文.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中南民族大学毕业论文(设计)学院: 计算机科学学院 专业:计算机科学与技术 年级:2010 题目:毕业设计选题系统设计与实现 学生姓名: 学号: 指导教师姓名: 刘赛 职称:副教授 2014年5月中南民族大学本科毕业论文(设计)原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。 作者签名: 年 月 日 目 录摘要1关键词1Abstract1Key words11 引言21.1 JSP简介21.2 My eclipse简介2 1.
2、3 Mysql简介.22 系统分析22.1 需求分析22.2 可行性分析33 系统设计3 3.1 系统功能结构.33.2 设计目标33.3 开发及运行环境43.4 数据库设计44 系统总体架构54.1 系统页面具体结果显示54.2 类的分布85 系统主要功能模块设计95.1 登录模块设计9 5.1.1 用户层.105.1.2 数据层的方法125.1.3 实体映射层的方法136 学生模块具体实现156.1 学生注册流程156.2 学生登陆流程156.3 总结177 MYSQL数据操作.177.1 课题录入187.2 专业录入188 系统测试198.1 测试的意义198.2 测试内容19 8.3
3、测试结果19结论19致 谢20参考文献21毕业设计选题系统设计与实现摘要:随着信息技术与计算机科学的飞速发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Web应用的潮流。利用JSP以及my eclipse技术开发的毕业设计选题系统,实现了网站上导师发布课题信息、学生正确选择课题的动态管理,因为可以用来动态发布、选择课题,所以使得对信息的管理更加及时、高效,提高了工作效率,同时为导师和学生都带来了一定的便利。关键词:Struts框架;Hibernate框架;Spring框架;JSP;My eclipseDesign and I
4、mplementation of the Graduation Design Topic System Abstract:As the rapid development of Information Technology and Computer Science, Database technology are applied to the Internet more and more widely. for the vast number of network users with a more thoughtful and human services. Personalization
5、has become the trend of todays Web applications. The Graduation Design Topic System, which is developed using the JSP and My eclipse to achieve that the teacher can release the useful subject information and the student can choose the suitable subject available on the website of the dynamic manageme
6、nt of information, as can be used to publish information dynamically and choose the subject easily. It makes the management of information more timely, efficiently, and improves the working efficiency.at the same time; it brings much convenience to both teachers and students.Key words:Struts framewo
7、rk; Hibernate framework; Spring framework; JSP; My eclipse1引言随着社会信息化程度地不断提高,Internet的快速发展,信息的传播方式发生了翻天覆地的变化,传统的信息传播方式,如电视、广播、报纸等已经满足不了当今物质生活丰富的时代,人们更加愿意通过网络来了解各行各业的信息,通过网络来拓展自己的视野,学习新的知识。在全球网络化、信息化高度普及的今天,它已经成为人们生活中不可或缺的重要组成部分。未来的中国乃至世界将会成为互联网的世界,互联网紧紧地把世界地每一个角落联系在一起,而网站系统也将在它所在的领域扮演越来越重要的角色,发挥越来越重要
8、的作用。1.1 JSP简介JSP(Java Server Pages)是由Sun Microsystems公司倡导的编码技术1。本毕业设计所使用的主要开发语言之一是JSP,JSP是一种实现普通静态HTML和动态HTML混合编码的技术。JSP页面文件通常以.jsp为扩展名,而且可以安装到任何能够存放普通Web页面的地方。实质上,JSP最终会被转换成标准的Servlet。同时,JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行,继承了JAVA语言跨平台运行的特性2,3,4,5,6,7,8。JSP设计的目的在于简化表示层的表示。JSP并没有增加任何本质上不能用Serv
9、let实现的功能。但是,在JSP中编写静态HTML更加方便;更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开。除了普通的HTML代码之外,JSP页面的其他成分主要有如下三种:脚本元素(Scripting Element)、指令(Directive)和动作(Action)。脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;JSP指令用来从整体上控制Servlet的结构,动作用来引入现有的组件来控制Web容器的行为9,10,11,12。JSP与Java Servlet一样,是在服务器端执行的,因此客户端只要有浏览器就能浏览。1.2 My
10、eclipse简介 本系统的源程序需要安装My eclipse,此处版本为My eclipse 8.5。My eclipse是eclipse的一个十分优秀的用于开发Java及Java EE的插件集合,但其也可以作为一个独立的软件。My eclipse的功能十分强大,它集成了Struts、Spring和Hibernate等主流开发框架的支持。同时,对各种开源产品的支持也十分不错,My eclipse目前支持EJB,Hibernate,JDBC数据库链接工具等多项功能,它几乎囊括了目前所有主流开源产品的专属eclipse开发工具,从而大大简化了Java企业级应用的开发1。1.3 Mysql 简介
11、Mysql是开放源代码的关系型数据库管理系统,可以在多个系统平台中运行,目前广泛应用于Internet上的中小型网站。由于其体积小、运行速度快、成本低、开源等特性,许多PHP、JavaWeb等网站都采用了该数据库2。2 系统分析2.1 需求分析13,14,15通过实际调查,要求毕业设计选题系统具有以下功能: 界面设计要美观大方、操作要简洁灵活。 实现课题信息的具体管理。 实现毕业学生的注册功能。 实现毕业学生选课功能。 实现毕业学生查看自己所选课题。2.2 可行性分析由于学生选题时间比较集中,而且都想选到自己喜欢的老师,所以难免会出现一些问题,为了改变这样一种现况,决定开发毕业设计选题系统。这
12、样一来,学生可以登陆进入选题系统,可以根据自己的专业特长或者自己喜欢的老师来选择毕业课题进行毕业设计,毕业设计选题系统中,老师模块可以进入该系统发布自己的课题和课题选择人数限制,以供学生更好的选择,而学生模块,除了可以选择自己想做的课题之外,还可以随时查询自己所选课题。当然,在学生选择课题之前,需要注册成为本系统的用户,才能够进行毕业课题选择,也就是在进入学生模块之前,首先要进入用户管理模块,通过个人信息注册成为系统用户,从而选择自己的毕业课题。这样大大的减少了教务人员的工作量,提高了工作效率,使学生能够轻松、自由地进行网上选题操作。毕业设计选题系统的注册用户可以随时修改自己的密码,大大提高了
13、用户的安全性,从而也就保证了系统的安全性。3 系统设计3.1 系统功能结构毕业设计选题系统功能结构,如图3-1所示。毕业设计选题系统 用户登陆用户管理模块老师模块学生模块修改专业信息选择课题查询已选课题查询个人信息修改密码增加专业信息修改课题信息查询可选课题输入基本信息用户注册 图3-1 毕业设计选题系统功能结构图3.2 设计目标该毕业设计选题系统是为了优化毕业设计选题的一系列操作,提高老师和学生的效率,主要的任务是要完成毕业设计选题中的选题操作,学生可以通过该系统实现快速选择自己喜欢的课题,同时,老师也能够更好地帮助自己的学生完成毕业设计,帮助学生完成大学里面最后的也是最重要的一页篇章。3.
14、3 开发及运行环境硬件平台:CPU:Intel(R) Core(TM) i5 2.53GHz 内存:2GB软件平台:操作系统: Microsoft Windows 7数据库:MySQLWeb服务器:My eclipse8.5自带Tomcat 6.0服务器分辨率:1024*768像素 3.4 数据库设计本毕业设计选题系统采用MySQL 数据库,系统数据库名称为db_graduation。数据库中各表结构如下所示。表3-1 课题信息表Column NameDatatypeLengthAuto IncCommentIDint 10是课题编号Namevarchar40否课题名称Creditdecima
15、l30否课题学分Teachernamevarchar20否老师姓名isfinishbit1否是否结题specialtyldint10否专业编号表3-2 专业信息表Column NameDatatypeLengthAuto IncCommentIDint4是专业编号enteryearvarchar10否入学年份namevarchar40否专业名称langthyearvarchar10否学制isfinishbit1否是否毕业表3-3 关联学生与课题一对一关系表Column NameDatatypeLengthAuto IncCommentstuIDint4否学生编号courseIDint4否课题编
16、号idint4是表3-4 学生基本信息表Column NameDatatypeLengthAuto IncCommentIDint4是学生编号stunamevarchar20否学生姓名stuNovarchar10否学号specialtyldint4否专业编号stusexvarchar2否性别telvarchar20否联系电话表3-5 登陆信息表数据类型长度是否主键描述IDint4是用户编号loginNamevarchar20否登陆名称pwdvarchar20否登陆密码typevarchar1否用户类型mailvarchar50否注册邮箱4 系统总体架构4.1 系统页面具体结果显示系统首页的显示
17、结果如图4-1所示: 图4-1 系统首页显示结果用户注册的页面如图4-2所示:图4-2 用户注册页面显示结果填写学生基本信息表页面如图4-3所示: 图4-3 基本信息填写页面学生基本信息页面如图4-4所示: 图4-4 学生基本信息显示页面课题选择页面如图4-5所示: 图4-5 课题选择页面显示结果已选课题页面如图4-6所示: 图4-6 已选课题页面显示结果修改登陆密码页面如图4-7所示: 图4-7 修改登陆密码页面显示结果4.2 类的分布毕业设计选题系统是利用SSH框架实现的,毕业设计选题系统中类的分布如图4-8所示。图4-8 类的分布类存放的文件夹功能如表4-1所示。表4-1类存放的文件夹功
18、能列表名称功能实体映射层(dto文件夹)各种方法(登陆、信息显示等)的实现数据层(dao文件夹)用户登陆信息,课题信息的接口实现类用户层(stu文件夹和action文件夹)存放实现学生模块的Action类,它是Struts的控制器类Stu文件夹中存放界面操作的各种jsp文件5 系统主要功能模块设计5.1 登陆模块设计主要是学生登陆,学生通过注册成用户,登陆系统进行选课,而老师直接通过数据库连接对后台进行操作,包括对课题的增删改等,如图5-1所示: 图5-1 登陆页面结果显示如果输入的账号或密码不正确,则会有如下提示。如图5-2所示:图5-2 登陆错误提示页面5.1.1 用户层具体代码如下:/*
19、stuUserAction.java部分代码*/学生添加基础信息:public ActionForward insert(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm stu = (DynaActionForm) form;StuUser user = new StuUser();user.setId(Integer)request.getSession().getAttribute(id);user.setStuNa
20、me(stu.getString(stuName);user.setStuNo(stu.getString(stuNo);user.setSpecialtyId(Integer.valueOf(stu.getString(specialtyId);user.setStuSex(stu.getString(stuSex);user.setBirthday(stu.getString(birthday);user.setTel(stu.getString(tel);stuUserDao.insert(user);Specialty specialty = specialtyDao.findById
21、(user.getSpecialtyId();request.setAttribute(stuUser, user);request.setAttribute(specialty, specialty);return mapping.findForward(welcome);进入学生模块:public ActionForward welcome(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) Integer id = (Integer) reques
22、t.getSession().getAttribute(id);StuUser stuUser = stuUserDao.findById(id);Specialty specialty = specialtyDao.findById(stuUser.getSpecialtyId();request.setAttribute(stuUser, stuUser);request.setAttribute(specialty, specialty);return mapping.findForward(welcome);查询已选课题:public ActionForward selected(Ac
23、tionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) Integer id = (Integer) request.getSession().getAttribute(id);List list = stuUserDao.findSelected(id);request.setAttribute(list, list);return mapping.findForward(selected); 查询可选课题:public ActionForward selec
24、t(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) Integer id = (Integer) request.getSession().getAttribute(id);List list = stuUserDao.findSelect(id);System.out.println(id);request.setAttribute(list, list);return mapping.findForward(select); 选题新课题操作:pu
25、blic ActionForward selectting(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) Integer id = (Integer) request.getSession().getAttribute(id);String courseIds = request.getParameterValues(courseId);if(courseIds!=null)stuUserDao.insertSC(courseIds,id);ret
26、urn select(mapping, form, request, response);5.1.2 数据层的方法此处采用MySQL数据库的方法进行验证输入账号和密码。也就是对输入的账号及密码判断是否正确,也就是学生通过注册成为用户后,数据库就会保留有相关数据,从而下次登录只要准确的记住密码和用户名,那么就可以登录成功,否则就登录失败。/*StuUserDao.java部分代码*/public class StuUserDao extends HibernateDaoSupport implements IStuUserDao public StuUser findById(Integer i
27、d) StuUser user = (StuUser) getHibernateTemplate().get(StuUser.class, id);return user;public void insert(StuUser user) getHibernateTemplate().save(user);public List findSelect(Integer id) String sql = FROM StuUser stu,Course c WHERE stu.id=? +AND stu.specialtyId=c.specialtyId AND c.isFinish=true AND
28、 c.id NOT IN +(SELECT courseId FROM StuCourse WHERE stuId=?);System.out.println(id);Query q = getSession().createQuery(sql);q.setInteger(0, id);q.setInteger(1, id);List list = q.list();if(!list.isEmpty()Object o = list.get(0);Course course = (Course) o1;System.out.println(course.getName();return lis
29、t;public List findSelected(Integer id) String sql = FROM StuUser stu,Course c,StuCourse sc WHERE stu.id=? AND stu.id=sc.stuId And c.id=sc.courseId;Query q = getSession().createQuery(sql);q.setInteger(0, id);List list = q.list();if(!list.isEmpty()Object o = list.get(0);Course course = (Course) o1;Sys
30、tem.out.println(course.getName();return list; 下面代码为对应的接口类: /* IStuUserDao.java部分代码*/public interface IStuUserDao public StuUser findById(Integer id);/按照编号查询用户public List findSelect(Integer id);public List findSelected(Integer id);public void insert(StuUser user);/增加新用户public void insertSC(String cou
31、rseIds,Integer stuId);/将用户编号与课程编号关联起来5.1.3 实体映射层的方法/* course.java部分代码*/public Course(String name,Short credit, String teacherName, String schooltime, String addr,String courseInfo,String teacherInfo,Boolean isFinish, Integer specialtyId) this.name = name;this.schooltime = schooltime;this.addr = addr
32、;this.credit = credit;this.courseInfo = courseInfo;this.teacherName = teacherName;this.teacherInfo = teacherInfo;this.isFinish = isFinish;this.specialtyId = specialtyId;public String getCourseInfo() return courseInfo;public void setCourseInfo(String courseInfo) this.courseInfo = courseInfo;public In
33、teger getId() return this.id;public void setId(Integer id) this.id = id;public String getName() return this.name;public void setName(String name) this.name = name;public String getSchooltime() return this.schooltime;public void setSchooltime(String schooltime) this.schooltime = schooltime;public Str
34、ing getAddr() return this.addr;public void setAddr(String addr) this.addr = addr;public Short getCredit() return this.credit;public void setCredit(Short credit) this.credit = credit;public String getTeacherName() return this.teacherName;public void setTeacherName(String teacherName) this.teacherName
35、 = teacherName;public String getTeacherInfo() return this.teacherInfo;public void setTeacherInfo(String teacherInfo) this.teacherInfo = teacherInfo;public Boolean getIsFinish() return this.isFinish;public void setIsFinish(Boolean isFinish) this.isFinish = isFinish;public Integer getSpecialtyId() ret
36、urn this.specialtyId;public void setSpecialtyId(Integer specialtyId) this.specialtyId = specialtyId;6 学生模块具体实现6.1 学生注册流程学生注册用户注册功能主要针对学生,学生注册的具体流程如图6-1所示。进入注册页面后输入登录账号等注册所需信息,然后系统会判断用户输入的登录账号是否已经被人占用,如果被占用则返回注册页面并给出提示;如果没被占用,则将用户输入的信息写入数据库,然后进入输入用户基本信息页面。 输入注册信息是判断登录账号是否被占用否将登录信息写入数据库进入填写基本信息页面 图6-1
37、 学生用户注册流程6.2 学生登录流程首先判断用户输入的用户名、密码是否正确,如果错误直接返回登录页面重新输入,否则检查学生是否已经填写过了基本信息,如果没填写过将进入输入基本信息页面,如果填写过则进入首页。用户登录流程如图6-2所示:用户登录 输入登录信息错误验证用户名、密码 正确判断是否填写过基本信息否是填写基本信息学生模块首页 图6-2 学生登录流程用户登录控制器类:/* UserLoginAction.java部分代码*/public class UserLoginAction extends Action private IUserLoginDao userLoginDao;priv
38、ate IStuUserDao stuUserDao;private ISpecialtyDao specialtyDao;public void setSpecialtyDao(ISpecialtyDao specialtyDao) this.specialtyDao = specialtyDao;public void setStuUserDao(IStuUserDao stuUserDao) this.stuUserDao = stuUserDao;public void setUserLoginDao(IUserLoginDao userLoginDao) this.userLogin
39、Dao = userLoginDao;public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm userLoginForm = (DynaActionForm) form;UserLogin userLogin = userLoginDao.findbyNameAndPwd(userLoginForm.getString(loginName), userLoginForm.getString(pwd);if (userLogin = null) request.setAttribute(error, 用户登录失败,用户名或密码不正确!);return mapping.findFor