一.需求描述 1、系统设计的背景信息 教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁重、复杂。迫切需要研制开发一款基于Internet网的综合网上教育管理软件。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教学管理行为,从而提高了管理效率和水平。教务管理系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量。目前还有一些单位和部门还是使用传统人工的方式公务员之家管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。同时随着学校的规模不断扩大,学生数量急剧增加,有关教务的各种信息量也成倍增长。所以教务信息管理系统的可运行性和功能效用的多少就显得尤为重要了。 2、需求分析 描述对系统的功能需求、信息需求和系统性能要求等。 教务管理系统(Educati0nal Administrati0n Man— agement System)~ 个学校管理系统的一个重点。从 业务角度来分析.高校的教务管理系统应满足以下需 求: (1)通过智能化资源调配管理优化高校教学资源,高效调配和合理利用教师、教室、实验室、时间等.解决高校资源紧缺、多校区、院系两级管理状况下排课、排实验室、排考场难等问题; (2)随着学分制的教学改革.大部分高校正在由传统的学年制向学分制过渡.系统在设计时考虑了学年制、学年学分制、学分制以及过渡时期等不同阶段教学管理软件衔接的需求.从而解决了学校课程库、 成绩库、学生库等的数据迁移问题 (3)强化基于Intemet/Intranet面向师生的服务和互动管理.使高校教学管理工作效率大大提高.同时 也方便了学生 如通过计算机快速高质的选课管理给学生的课表随机派位.让学生根据自己的意愿在较短的时间内完成课程的选择(4)系统严格遵循教育部的学籍学历规范和有关信息标准,规范课程代码、教师代码、学号等编码,避免代码重复等不合理现象发生
#include <stdio.h>
struct Student
{
int num
char name[20]
float score[3]
float avg
}stus[30]
void Add()//填加学员
void List()//学员详细列表
void Asc()//显示后三名学员
void Desc()//显示前三名学员
void Display()
void main()
{
int s
while(1)
{
printf("学员管理系统:n")
printf("1、增加学员n")
printf("2、学员详细列表n")
printf("3、显示前三名n")
printf("4、显示后三名n")
printf("5、显示平均成绩n")
printf("6、退出n")
printf("请选择:")
scanf("%d",&s)
switch(s)
{
case 1:
Add()
break
case 2:
List()
break
case 3:
Desc()
Display()
break
case 4:
Asc()
Display()
break
case 5:
Display()
break
case 6:
return
break
default:
printf("选择错误!n")
break
}
}
}
void Add()
{
int i,k
float sum
char c
for(i=0i<30i++)
{
printf("请输入第%d个学员信息:n",i+1)
printf("学号:")
scanf("%d",&stus[i].num)
printf("姓名:")
fflush(stdin)
scanf("%s",stus[i].name)
printf("请输入三门课的成绩:n")
sum=0
for(k=0k<3k++)
{
printf("%d:",k+1)
scanf("%f",&stus[i].score[k])
sum+=stus[i].score[k]
}
stus[i].avg=sum/3
printf("是否继续?")
fflush(stdin)
scanf("%c",&c)
if(c=='n' || c=='N')
return
}
}
void List()
{
int i,j=0
printf("学号t姓名t成绩1t成绩2t成绩3t平均n")
for(i=0i<30i++)
{
if(stus[i].num!=0)
{
printf("%dt%st%.2ft%.2ft%.2ft%.2fn",stus[i].num,stus[i].name,stus[i].score[0],stus[i].score[1],stus[i].score[2],stus[i].avg)
}
}
}
void Asc()
{
int i,j
struct Student c
for(i=0i<30i++)
{ for(j=0j<29-ij++)
if(stus[j].avg<stus[j+1].avg)
{
c=stus[j]
stus[j]=stus[j+1]
stus[j+1]=c
}
}
}
void Desc()
{
int i,j
struct Student c
for(i=0i<30i++)
{ for(j=0j<29-ij++)
if(stus[j].avg>stus[j+1].avg)
{
c=stus[j]
stus[j]=stus[j+1]
stus[j+1]=c
}
}
}
void Display()
{
int i,d=0
printf("学号t姓名t平均n")
for(i=0i<30i++)
{
if(stus[i].num!=0)
{
printf("%dt%st%.2fn",stus[i].num,stus[i].name,stus[i].avg)
d++
}
if(d==3)
break
}
}
看看我写的这个!
教务管理系统需求基本上围绕三方面展开:
1、提高招生转化率也就是CRM系统,目前市面上做的很多可以参考一下,但是与之后教务和财务系统无法打通;
2、教务管理系统:有了(意向)学员就需要对学生信息,课程,学费等进行管理,除此之外还有销售提成,教师课时提成是财务头疼的事,排课和签到管理是老师工作量巨大;
3、营销系统:主要是将教学过程和成果沟通和分享出去,再结合社会化媒体,从口碑方面促进招生工作。
学生选课系统的设计与实现摘要本文以一个具体的应用系统—学生选课信息系统的设计与实现来说明如何利用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]
以上就是关于课程管理系统分析报告与设计报告书怎么写全部的内容,如果了解更多相关内容,可以关注醉学网,你们的支持是我们更新的动力!