学生选课
系统的设计与实现摘要本文以一个具体的应用系统—
学生选课信息系统的设计与实现来说明如何利用UML和EJB组件来设计和构建分布式软件系统平台。UML和组件技术结合使用能提高开发效率,增加系统的易维护性。关键词UMLEJB实例1引言现在信息管理系统软件的开发,采用组件技术可以提高效率,信息管理系统的分析设计也采用UML来进行。两者的结合可以极大的提高开发效率,保证系统开发的易维护性。本文用UML这种设计方法和EJB这种组件技术来设计和实现一个系统。2系统分析本系统设计为学生通过网页登陆学校网站,进行选课。下面用用例图来说明该系统要实现的功能。2.1用例图2.2系统总体结构图本系统采用三层体系结构,分为表示层,事务处理层,数据存储层。三层结构层次清晰,易维护。图3类图学生选课系统涉及到三个实体类学生,
课程,以及学生和课程之间的一个一对多关系类。对每一个类,映射到一张表。学生类和课程类用Container-ManagedEntityBean实现,学生和课程间的一对多关系类,用Bean-ManagedPersistence的EntityBean实现。再设计一个SessionBean对学生选课过程进行控制。页面显示部分用JSP实现。3数据库设计学生表对应学生实体,详细内容如下表1学生表关联表对应学生和课程间的一对多关系,详细内容如下研究开发4实现4.1SessionBean的设计4.1.1定义HomeInterface4.1.2定义RemoteInterfacepublicinterfaceEnrollSessionextendsEJBObject{//-----//这是一个基于SessionBean的Remote接口,这个SessionBean是基于//Stateful的SessionBean,用来对特定学生选课的登记过程进行 *** 作//-----------------------------publicStringgetStudentName()throwsRemoteExceptionpublicvoidenroll(ArrayListcourseItems)throwsRemoteExcep-tionpublicvoidunenroll()throwsRemoteExceptionpublicvoiddeleteStudent()throwsFinderException,RemoteEx-ceptionpublicvoiddeleteCourse(Stringcourse_id)throwsRemoteExcep-tion}4.1.3Client获取HomeInterface和RemoteInterface的参考方式,我们使用JNDI机制来获取Home接口和Remote接口的对象参考。4.1.4定义回调方法4.1.5实现远程数据库的连接使用JNDI机制,通过数据库的JNDI名称javacomp/env/jdbc/StudentCourseDB来连接后台数据库。4.1.6SessionBean方法实现//定义变量publicStudentHomesHomepublicEnrollHomeeHomepublicStringstudent_idpublicStringname//回调方法实现publicvoidejbCreate(Stringstudent_id)throwsCreateException{try{Studentstudent=sHome.findByPrimaryKey(student_id)name=student.getName()}catch(ObjectNotFoundExceptione){thrownewCreateException(Student+student_id+notfoundinStudentTBL!)}catch(Exceptione){thrownewEJBException(e.getMessage())}this.student_id=student_id}//商业方法实现publicvoidenroll(ArrayListcourseItems){Enrollenroll=nulltry{enroll=eHome.findByPrimaryKey(student_id)}catch(Exceptione){}try{if(enroll!=null){enroll.replaceCourseItems(courseItems)}else{eHome.create(student_id,courseItems)}}catch(Exceptione){thrownewEJBException(e.getMessage())}}publicvoidunenroll(){try{Enrollenroll=eHome.findByPrimaryKey(student_id)enroll.remove()}catch(Exceptione){thrownewEJBException(e.getMessage())}}//涉及到对两张表的删除。publicvoiddeleteStudent()throwsFinderException{try{Enrollenroll=eHome.findByPrimaryKey(student_id)Studentstudent=sHome.findByPrimaryKey(student_id)enroll.remove()student.remove()}catch(Exceptione){thrownewEJBException(e.getMessage())}}publicvoiddeleteCourse(Stringcourse_id){PreparedStatementps=nulltry{getConnection()StringdeleteStatement=deletefromEnrollTBL+wherestudent_id=?andcourse_id=?ps=con.prepareStatement(deleteStatement)ps.setString(1,student_id)ps.setString(2,course_id)ps.executeUpdate()}catch(Exceptione){thrownewEJBException(e.getMessage())}finally{try{ps.close()con.close()}catch(Exceptione){thrownewEJBException(e.getMessage())}}}4.2EntityBean的设计我们以关联表(EnrollTBL)对应的实体Bean为例进行说明,它涉及到两个表的一对多关系。4.2.1定义Home接口4.2.2定义RemoteInterfacepublicinterfaceEnrollextendsEJBObject{//---------------//这是一个基于EntityBean的Remote接口,这个EntityBean是基于//Bean-ManagedPersistence的EntityBean,用来对EnrollTBL表进行 *** 作//--------------------------publicArrayListgetCourseItems()throwsRemoteExceptionpublicStringgetStudent_id()throwsRemoteExceptionpublicvoidreplaceCourseItems(ArrayListcourseItems)throwsRemoteException}4.2.3变量定义publicStringstudent_idpublicArrayListcourseItems4.2.4增加数据记录实现publicStringejbCreate(Stringstudent_id,ArrayListcourseItems)throwsCreateException{if(courseItems==null||courseItems.size()==0){thrownewCreateException(ejbCreateexception!)}this.student_id=student_idtry{enroll(courseItems)}catch(Exceptione){thrownewEJBException(ejbCreateexception+e.getMessage())}this.courseItems=courseItemsreturnstudent_id}//根据学生ID,插入课程项。privatevoidenroll(ArrayListcourseItems)throwsSQLException{StringinsertStatement=insertintoEnrollTBLvalues(?,?)PreparedStatementps=con.prepareStatement(insertStatement)try{//------------//依次将所有的课程项目插入EnrollTBL表//------------------ps.setString(1,this.student_id)for(inti=0i<courseItems.size()i++){Stringcourse_id=(String)courseItems.get(i)ps.setString(2,course_id)ps.executeUpdate()}}finally{ps.close()}}//根据学生ID,删除课程项privatevoidunenroll()throwsSQLException{StringdeleteStatement=deletefromEnrollTBL+wherestudent_id=?PreparedStatementps=con.prepareStatement(deleteStatement)try{ps.setString(1,student_id)ps.executeUpdate()}finally{ps.close()}}5部署和运行5.1部署程序5.1.1部署StudentEntityBean,设置事务属性,生成部署文件。5.1.2同样,再部署其他三个EJB组件EnrollSessionBean,CourseEntityBean,EnrollEntityBean。5.1.3部署web组件5.1.4部署整个应用程序5.2运行启动J2EE服务器,启动数据库服务器,打开浏览器。学生登录,即可选课。6结论组件技术使得复杂的多层结构应用系统开发变得容易。采用组件技术能提高开发人员的效率,降低软件的开发和维护成本,提高软件的质量,控制所构建系统的复杂性。UML设计方法的使用能提高软件设计的效率和保证设计的规范性。参考文献[1]CraigLarman.UML和模式应用-面向对象分析与设计导论[M].北京机械工业出版社,2003.10-100.[2]刘特.J2EEEJB应用编程实例[M].北京清华大学出版社,2003.90-150.[3]GeriSchneider.用例分析技术[M].北京机械工业出版社,2003.1-98.
-----------------------------------------------
谢谢请采纳:
不能发连接啊,请在百度
搜索‘珍惜知识网’点进去就是了[ORDA]
关于选课系统的设计 周 虹
摘要:随着课程改革的不断深入,学校规模不断扩大、课程项目不断增多,为了解决学生选课管理上的复杂的人工 *** 作,减轻重复工作,故设计了选课系统。学校规模的扩大使得学校对每年新生入学、毕业生离校及本校各种分流机制造成的学生信息产生变动,如学籍变动、个人信息修改。为了适应课程的改革,学校在每个学期都要开设一定的课程提供给学生,让学生根据自己的情况来选择,根据学生选择结果给出课程表。本校根据教学实际,为了使教师有效地管理学生信息,设计学生信息管理系统,由此形成学生成绩管理系统,本文就此设计思路进行阐述。
关键词:选课系统 学生信息管理系统 数据流图 DFD图 E-R图 SC图 IPO图 Delphi软件
随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工 *** 作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的课程信息管理系统来提高管理工作的效率。基于互联网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性。
一、选课系统的任务概述
1. 目标
选课系统开发的目标是实现学生选课信息关系的系统化、规范化和自动化。
2. 系统技术
学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。
3. 基本设计概念和处理流程
采用基于SQL Server的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户。更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的 *** 作而影响到其他的用户,所以可靠性、稳定性和效率都比较好。(其结构如图)
4. 用户的特点
为保证系统安全高效地运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。
(1)教务处可以完成本系统所有的功能
学生信息管理:除学生基本信息外,还可管理学生所选课程、成绩等。
教师信息管理:包括教师个人的基本情况和任课情况。
项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定。
排课:根据上一步分班情况安排任课教师。
报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。
(2)教师在本系统的功能
查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。
(3)学生在本系统的功能
查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。
二、需求规定
(一)对功能的规定
1. 可实现学生选课注册。
2. 方便实现学生选课信息查询。
3. 可对学生成绩档案进行管理,成绩表单生成简便。
4. 安全有效的用户区分,管理。
5. 档案数据的高安全性,保密性。
6. 有帮助文档
(二)对性能的规定
使用稳定, *** 作性能好, *** 作方法易于掌握,系统的安全性强。
三、设计思想
用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图。
(一)数据库的设计
通过对学生选课管理系统工作内容和相关数据流程分析,根据学生选课管理系统的需要,就可以设计出能满足用户需求的各种实体,以及它们之间的关系,由此得到数据库所支持的数据模型,即数据库的逻辑结构,具体情况如下:
1. 学生信息表
开学时将教务处提供的学生信息库按系统的要求修改库结构并导入Access数据库中,应包括如下信息:姓名、学号、院系、班级、性别、所选课程、任课教师、备注等。
2. 教师信息表
包括教师姓名、教师代码、性别、年龄、职称、主要教授课程、兼任课程等。
3. 课程信息
包括课程目录、课程、课程代码、教学内容、任务与目的、考试方法、要求等。
4. 课程表
包括课程名称、课程编号、任课教师、课程学分、上课时间。
5. 成绩单列表
包括学生姓名、学号、院系、班级、课程、任课教师、成绩。
(二)系统功能特点
1. 内容全面 系统全面覆盖了体育课信息,可为学校、教师和学生提供全面准确的信息。
2. 层次分明 系统采用模块化程序设计结构。各模块之间既相互独立,又具有一定的联系,各模块可独立编制、调试、查错、修改和执行,结构严谨,便于扩展和维护。
四、数据库概念设计
根据以上数据流图导出数据库所需数据项和数据结构。
学生:学号、姓名、性别、生日、所在院系、所在班级。
课程:课程号、课程名、讲师、上课时间、地点、课程简介。
选课结果:记录号、选课学生、所选课程。
学籍变更记录:记录号、变更情况、记录时间、详细描述。
1. 数据库逻辑结构设计
设计五个基本表:学生信息表、课程信息表、选课结果表、奖惩信息表、教师信息表。其中教师信息表是外部表,不列出。由于使用打开系统的不只是教务人员,每个学生都要登录到选课系统进行课程的选择,所以需要对不同的登录人员进行密码的认证和权限的限制,防止越权行为,用户名、密码、权限保存在一个表中。分别设计如下表:(具体内容略)
USER-PASS用户密码信息表
COURSE课程信息表
COURSE-SELECT选课结果表
STUDENT学生个人信息表
奖惩记录信息表
2. 概要设计
4. 选课模块详细设计说明书
功能:接受学生选课信息,刷新学生课程表。
界面:调用添加、删除模块,打印课表模块。
设计感想
通过这次实践,我对Delphi有了全新的认识。Delphi可以让你用最少的程序量来得到最高的开发效率,从而迅速地开发Windows的应用程序。开发者可按照自己的喜好及用户要求,随心所欲地安排窗口的外观。Delphi是以面向对象的方式设计程序代码的,有着面向对象的四大特征:封装性、可维护性、继承性和多态性。
当然,这个系统还有些地方需要修改和完善,我将在以后的时间里逐步学习改进。
参考文献:
〔1〕〔美〕Grady Booch,James Rumbaugh,Ivar Jacobson,UML用户指南.机械工业出版社,2001年8月.
〔2〕Microsoft,MSDN.
〔3〕Microsoft,SQL Server 2000联机手册.
〔4〕Roger S. Pressman.软件工程——实践者的研究方法.机械工业出版社,1997.
〔5〕IPL. Software Testing and Software Development Lifecycles. IPL,1996.
〔6〕Karl E. Wiegers.软件需求.机械工业出版社,1999.
〔7〕张海藩.软件工程导论.清华大学出版社.
http://www.google.cn/search?q=%E5%AD%A6%E7%94%9F%E9%80%89%E8%AF%BE%E7%A8%8B%E5%BA%8F+delphi%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1&sourceid=navclient-ff&ie=UTF-8&rlz=1B2GGFB_zh-CNCN278CN278
评论列表(0条)