收藏 分销(赏)

选题系统设计与实现.doc

上传人:精**** 文档编号:2769383 上传时间:2024-06-05 格式:DOC 页数:27 大小:1.43MB 下载积分:10 金币
下载 相关 举报
选题系统设计与实现.doc_第1页
第1页 / 共27页
选题系统设计与实现.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
中南民族大学 毕业论文(设计) 学院: 计算机科学学院 专业:计算机科学与技术 年级:2010 题目:毕业设计选题系统设计与实现 学生姓名: 学号: 指导教师姓名: 刘赛 职称:副教授 2014年5月 中南民族大学本科毕业论文(设计)原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。 作者签名: 年 月 日 目 录 摘要 1 关键词 1 Abstract 1 Key words 1 1 引言 2 1.1 JSP简介 2 1.2 My eclipse简介 2 1.3 Mysql简介..........................................................................................................................2 2 系统分析 2 2.1 需求分析 2 2.2 可行性分析 3 3 系统设计 3 3.1 系统功能结构......................................................................................................................3 3.2 设计目标 3 3.3 开发及运行环境 4 3.4 数据库设计 4 4 系统总体架构 5 4.1 系统页面具体结果显示 5 4.2 类的分布 8 5 系统主要功能模块设计 9 5.1 登录模块设计 9 5.1.1 用户层.......................................................................................................................10 5.1.2 数据层的方法 12 5.1.3 实体映射层的方法 13 6 学生模块具体实现 15 6.1 学生注册流程 15 6.2 学生登陆流程 15 6.3 总结 17 7 MYSQL数据操作……………………………………………………………………………….17 7.1 课题录入 18 7.2 专业录入 18 8 系统测试 19 8.1 测试的意义 19 8.2 测试内容 19 8.3 测试结果 19 结论 19 致 谢 20 参考文献 21 毕业设计选题系统设计与实现 摘要:随着信息技术与计算机科学的飞速发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Web应用的潮流。利用JSP以及my eclipse技术开发的毕业设计选题系统,实现了网站上导师发布课题信息、学生正确选择课题的动态管理,因为可以用来动态发布、选择课题,所以使得对信息的管理更加及时、高效,提高了工作效率,同时为导师和学生都带来了一定的便利。 关键词:Struts框架;Hibernate框架;Spring框架;JSP;My eclipse Design and Implementation 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 has become the trend of today's 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 management 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 framework; Hibernate framework; Spring framework; JSP; My eclipse 1引言 随着社会信息化程度地不断提高,Internet的快速发展,信息的传播方式发生了翻天覆地的变化,传统的信息传播方式,如电视、广播、报纸等已经满足不了当今物质生活丰富的时代,人们更加愿意通过网络来了解各行各业的信息,通过网络来拓展自己的视野,学习新的知识。在全球网络化、信息化高度普及的今天,它已经成为人们生活中不可或缺的重要组成部分。未来的中国乃至世界将会成为互联网的世界,互联网紧紧地把世界地每一个角落联系在一起,而网站系统也将在它所在的领域扮演越来越重要的角色,发挥越来越重要的作用。 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并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便;更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开。   除了普通的HTML代码之外,JSP页面的其他成分主要有如下三种:脚本元素(Scripting Element)、指令(Directive)和动作(Action)。脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;JSP指令用来从整体上控制Servlet的结构,动作用来引入现有的组件来控制Web容器的行为[9,10,11,12]。 JSP与Java Servlet一样,是在服务器端执行的,因此客户端只要有浏览器就能浏览。 1.2 My 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 简介 Mysql是开放源代码的关系型数据库管理系统,可以在多个系统平台中运行,目前广泛应用于Internet上的中小型网站。由于其体积小、运行速度快、成本低、开源等特性,许多PHP、JavaWeb等网站都采用了该数据库[2]。 2 系统分析 2.1 需求分析[13,14,15] 通过实际调查,要求毕业设计选题系统具有以下功能: ① 界面设计要美观大方、操作要简洁灵活。 ② 实现课题信息的具体管理。 ③ 实现毕业学生的注册功能。 ④ 实现毕业学生选课功能。 ⑤ 实现毕业学生查看自己所选课题。 2.2 可行性分析 由于学生选题时间比较集中,而且都想选到自己喜欢的老师,所以难免会出现一些问题,为了改变这样一种现况,决定开发毕业设计选题系统。这样一来,学生可以登陆进入选题系统,可以根据自己的专业特长或者自己喜欢的老师来选择毕业课题进行毕业设计,毕业设计选题系统中,老师模块可以进入该系统发布自己的课题和课题选择人数限制,以供学生更好的选择,而学生模块,除了可以选择自己想做的课题之外,还可以随时查询自己所选课题。当然,在学生选择课题之前,需要注册成为本系统的用户,才能够进行毕业课题选择,也就是在进入学生模块之前,首先要进入用户管理模块,通过个人信息注册成为系统用户,从而选择自己的毕业课题。这样大大的减少了教务人员的工作量,提高了工作效率,使学生能够轻松、自由地进行网上选题操作。毕业设计选题系统的注册用户可以随时修改自己的密码,大大提高了用户的安全性,从而也就保证了系统的安全性。 3 系统设计 3.1 系统功能结构 毕业设计选题系统功能结构,如图3-1所示。 毕业设计选题系统 用户登陆 用户管理模块 老师模块 学生模块 修改专业信息 选择课题 查询已选课题 查询个人信息 修改密码 增加专业信息 修改课题信息 查询可选课题 输入基本信息 用 户 注册 图3-1 毕业设计选题系统功能结构图 3.2 设计目标 该毕业设计选题系统是为了优化毕业设计选题的一系列操作,提高老师和学生的效率,主要的任务是要完成毕业设计选题中的选题操作,学生可以通过该系统实现快速选择自己喜欢的课题,同时,老师也能够更好地帮助自己的学生完成毕业设计,帮助学生完成大学里面最后的也是最重要的一页篇章。 3.3 开发及运行环境 硬件平台: CPU:Intel(R) Core(TM) i5 2.53GHz 内存:2GB 软件平台: 操作系统: Microsoft Windows 7 数据库:MySQL Web服务器:My eclipse8.5自带Tomcat 6.0服务器 分辨率:1024*768像素 3.4 数据库设计 本毕业设计选题系统采用MySQL 数据库,系统数据库名称为db_graduation。 数据库中各表结构如下所示。 表3-1 课题信息表 Column Name Datatype Length Auto Inc Comment ID int 10 是 课题编号 Name varchar 40 否 课题名称 Credit decimal 30 否 课题学分 Teachername varchar 20 否 老师姓名 isfinish bit 1 否 是否结题 specialtyld int 10 否 专业编号 表3-2 专业信息表 Column Name Datatype Length Auto Inc Comment ID int 4 是 专业编号 enteryear varchar 10 否 入学年份 name varchar 40 否 专业名称 langthyear varchar 10 否 学制 isfinish bit 1 否 是否毕业 表3-3 关联学生与课题一对一关系表 Column Name Datatype Length Auto Inc Comment stuID int 4 否 学生编号 courseID int 4 否 课题编号 id int 4 是 表3-4 学生基本信息表 Column Name Datatype Length Auto Inc Comment ID int 4 是 学生编号 stuname varchar 20 否 学生姓名 stuNo varchar 10 否 学号 specialtyld int 4 否 专业编号 stusex varchar 2 否 性别 tel varchar 20 否 联系电话 表3-5 登陆信息表 数据类型 长度 是否主键 描述 ID int 4 是 用户编号 loginName varchar 20 否 登陆名称 pwd varchar 20 否 登陆密码 type varchar 1 否 用户类型 mail varchar 50 否 注册邮箱 4 系统总体架构 4.1 系统页面具体结果显示 系统首页的显示结果如图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类存放的文件夹功能列表 名称 功能 实体映射层(dto文件夹) 各种方法(登陆、信息显示等)的实现 数据层(dao文件夹) 用户登陆信息,课题信息的接口实现类 用户层(stu文件夹和action文件夹) 存放实现学生模块的Action类,它是Struts的控制器类 Stu文件夹中存放界面操作的各种jsp文件 5 系统主要功能模块设计 5.1 登陆模块设计 主要是学生登陆,学生通过注册成用户,登陆系统进行选课,而老师直接通过数据库连接对后台进行操作,包括对课题的增删改等,如图5-1所示: 图5-1 登陆页面结果显示 如果输入的账号或密码不正确,则会有如下提示。如图5-2所示: 图5-2 登陆错误提示页面 5.1.1 用户层 具体代码如下: /*************************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.setStuName(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(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) request.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(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Integer id = (Integer) request.getSession().getAttribute("id"); List<Object[]> list = stuUserDao.findSelected(id); request.setAttribute("list", list); return mapping.findForward("selected"); } 查询可选课题: public ActionForward select(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Integer id = (Integer) request.getSession().getAttribute("id"); List<Object[]> list = stuUserDao.findSelect(id); System.out.println(id); request.setAttribute("list", list); return mapping.findForward("select"); } 选题新课题操作: public 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); } return select(mapping, form, request, response); } 5.1.2 数据层的方法 此处采用MySQL数据库的方法进行验证输入账号和密码。也就是对输入的账号及密码判断是否正确,也就是学生通过注册成为用户后,数据库就会保留有相关数据,从而下次登录只要准确的记住密码和用户名,那么就可以登录成功,否则就登录失败。 /**************************StuUserDao.java部分代码***************************/ public class StuUserDao extends HibernateDaoSupport implements IStuUserDao { public StuUser findById(Integer id) { StuUser user = (StuUser) getHibernateTemplate().get(StuUser.class, id); return user; } public void insert(StuUser user) { getHibernateTemplate().save(user); } public List<Object[]> findSelect(Integer id) { String sql = "FROM StuUser stu,Course c WHERE stu.id=? " + "AND stu.specialtyId=c.specialtyId AND c.isFinish=true AND 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<Object[]> list = q.list(); if(!list.isEmpty()){ Object[] o = list.get(0); Course course = (Course) o[1]; System.out.println(course.getName()); } return list; } public List<Object[]> 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<Object[]> list = q.list(); if(!list.isEmpty()){ Object[] o = list.get(0); Course course = (Course) o[1]; System.out.println(course.getName()); } return list; } 下面代码为对应的接口类: /************************* IStuUserDao.java部分代码***************************/ public interface IStuUserDao { public StuUser findById(Integer id); //按照编号查询用户 public List<Object[]> findSelect(Integer id); public List<Object[]> findSelected(Integer id); public void insert(StuUser user); //增加新用户 public void insertSC(String[] courseIds,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; 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 Integer 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 String 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 = 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() { return this.specialtyId; } public void setSpecialtyId(Integer specialtyId) { this.specialtyId = specialtyId; } 6 学生模块具体实现 6.1 学生注册流程 学生注册 用户注册功能主要针对学生,学生注册的具体流程如图6-1所示。进入注册页面后输入登录账号等注册所需信息,然后系统会判断用户输入的登录账号是否已经被人占用,如果被占用则返回注册页面并给出提示;如果没被占用,则将用户输入的信息写入数据库,然后进入输入用户基本信息页面。 输入注册信息 是 判断登录账号是否被占用 否 将登录信息写入数据库 进入填写基本信息页面 图6-1 学生用户注册流程 6.2 学生登录流程 首先判断用户输入的用户名、密码是否正确,如果错误直接返回登录页面重新输入,否则检查学生是否已经填写过了基本信息,如果没填写过将进入输入基本信息页面,如果填写过则进入首页。 用户登录流程如图6-2所示: 用户登录 输入登录信息 错误 验证用户名、密码 正确 判断是否填写过基本信息 否 是 填写基本信息 学生模块首页 图6-2 学生登录流程 用户登录控制器类: /***************************** UserLoginAction.java部分代码**********************/ public class UserLoginAction extends Action { private IUserLoginDao userLoginDao; private 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.userLoginDao = 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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服