软工工程课程关系系统个人报告.docx
《软工工程课程关系系统个人报告.docx》由会员分享,可在线阅读,更多相关《软工工程课程关系系统个人报告.docx(41页珍藏版)》请在冰豆网上搜索。
软工工程课程关系系统个人报告
《软件工程》
个人课程设计报告
北京工业大学
计算机学院
学号:
报告人姓名:
严岩
承担角色:
程序辅助设计员
组号:
1
组长:
张钊
同组其他成员:
张阳,陈亢
课程教师:
付利华
一.课程设计概述:
1.开发目的:
我校在近些年经过不断的建设,课程数量和科目类别也越来越繁多,这样就引发了教室安排,学生选课查课,教师查询考勤,后勤管理等等一些课程管理上面的难题和需求。
为了解决这样的难题,提高教室使用率,满足教师和学生需求,方便管理员整体管理和监控,根据我校课程管理情况及问题所在,我们开发了这个大学课程管理系统。
本组所设计的课程管理系统,适用于大部分校园,对具有较多课程的学校有着较强的适用性。
同时在对监督学生自主完成课程,教师教室和设备预约以及管理员教室设备管理、保修等功能具有较好的实现能力。
2.任务:
随着大学课程不断发展,我们准备开发的软件为大学课程管理系统.应09界软件工程课设要求和说明,我们小组组长张钊提出了本次课题,由张钊,严岩,陈亢,张阳四人共同研发该课题.
3.开发环境:
WindowsXp/Vista/7,Unix,Linux,各版
开发语言:
c#
4.参考资料:
《软件工程课程设计指导书》;
XX文库
齐立波(译),C#入门经典(第四版)清华大学出版社,2008.6。
康博(译)。
高效掌握C#。
清华大学出版社,2002,10。
二.项目的需求分析:
1.需求分析概述
根据我们小组的项目开发计划讨论和可行性研究,我们提出了“大学课程管理系统”的需求说明书。
它全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
该选课系统,面向老师,学生以及管理员的综合选课软件。
在学校中实用这款软件,可以使全校师生选课,授课更加方便快捷。
本选课系统教师有优先选择更改的权利,管理员负责教师之间的协调和教室的调配。
系统管理员不参与开设课程、选择课程等,一切均由教师、学生等录网站自行完成。
系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;到达时间段以后,学生可以登陆网站选择课程。
教师用户登陆网站后可以开设课程,在下拉菜单中可以选着时间段,以及给与选择时间段的空余教室选择,如果教师对时间或者教室有特殊安排,可以联系管理员,管理员向各个教师之间进行协调,或者根据空余教室进行安排,将更改的时间或者教室以发布通知的形式发送到选课系统的首页。
教师为每门课程设置一个学分,并可以在课程结束后给予分数,并且可以查询更改分数。
对于学生用户,登陆系统后,可以查询各种课程,以及课程的详细信息,学生可以选择课程和退选课程,当这门课结束时,可以查询到自己获得的分数。
2.实体集设计
详细设计请参照《项目需求说明书》
3功能需求设计
详细设计请参照《项目需求说明书》
4.性能需求设计
1.正确性需求
系统正确性需求主要包括:
·系统能够把教室的使用情况,课程的信息,学生的信息,准确地导入数据库中
·管理员及用户查询时能够从数据库中准确地读取并且在界面显示
2.时间特征需求
响应时间:
0.5秒以内
更新处理时间:
0.5秒钟以内
数据的转换和传送时间:
1秒以内
解题时间:
1秒以内
3.稳定性需求
该系统部署后,在硬件和支持软件没有发生变化的情况下,能够一直保持运行状态,直到系统被升级或替代
4.灵活性需求
操作方式上的变化:
该软件实用与现在流行的操作系统
5.扩展性需求
支持环境的扩展:
系统运行所要求的操作系统可以从Windows平台扩展到Mac平台等
6.数据管理能力需求
系统数据库中应能对一定数量教师信息,课程信息和学生个人信息进行存储。
7.故障处理能力需求
系统出现软件故障时,为满足信息处理的要求,可以采取数据恢复来解决,因此平时要注意经常进行数据备份
三.项目设计的基本原理和采用的主要方法与技术:
1.技术概括:
课程管理系统运用到了C#语言来实现模块功能和界面设计,.NET,socket通信,MVC三层架构,WINDOWS服务来实现客户端的正常稳定的运行。
2技术原理
(a).C#与.NET技术
C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。
并定于在微软职业开发者论坛(PDC)上登台亮相。
C#是微软公司研究员AndersHejlsberg的最新成果。
C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。
但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。
组成.net软件技术的组件,组件之一,“智能”客户端应用软件和操作系统,包括PC、PA、手机或其他移动设备通过互联网、借助WebServices技术,用户能够在任何时间、任何地点都可以得到需要的信息和服务。
例如:
可以在手机上阅读新闻、定购机票、浏览在线相册等等。
现在我们假设一种场景,如公司内使用的CRM系统,应用了.NET的解决方案后所有的业务人员便可以通过手机或PDA直接访问客户信息了。
(b).socket通信,MVC三层架构,WINDOWS服务
Socket通信以其传输速度快且稳定的优点在程序开发中应用非常的广泛。
所谓Socket通常也称作“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:
服务器监听,客户端请求,连接确认。
服务器监听:
是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求:
是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:
是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。
而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
MVC(ModelViewController)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。
使用MVC的目的是将M和V实现代码分离,从而使同一个程序可以使用不同的表现形式。
比如一批统计数据你可以分别用柱状图、饼图来表示。
C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
三层架构(3-tierapplication)通常意义上的三层架构就是将整个业务应用划分为:
表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
区分层次的目的即为了“高内聚,低耦合”的思想。
MicrosoftWindows服务(即,以前的NT服务)使您能够创建在它们自己的Windows会话中可长时间运行的可执行应用程序。
这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。
这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。
还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
四.本人实现项目的过程与步骤
本人主要负责数据库设计、数据库建立、分配项目任务、记录项目进度、部分模块实现;参与了可行性分析,需求分析,接口设计,数据结构设计等。
(一).项目开发计划的设计
组长提出了我们的课题,我根据组里的人员能力和特点分配了组里人员的大致负责方向。
记录每次会议的内容和问题。
(二).需求分析
需求分析的过程中,根据数据流图,本人负责了功能需求的描述,分别设计了学生,教师,管理员的功能需求描述。
然后跟组员讨论,功能的结果,并按照意见修改。
(三).概要设计
本人在概要设计中,根据组员提供的数据流图和用例图,描述了功能需求与类的关系和本次课题需要用到的数据结构。
其中包括整体数据结构和客户端数据结构。
把数据结构设计交给模块设计的组员。
接着通过理解组员给的模块设计说明,给框架结构设计者提供了一定的分析和帮助。
对类图和E/R图的设计和修改提出了意见。
(四).详细设计
在详细设计中,本人主要设计了数据库和及其建立和部分模块的实现。
(一).
数据库部分说明“课程管理系统”的数据库设计、结构情况,用于开发人员进行项目设计,同时也为后续的数据库维护工作提供了良好的使用说明,也可以作为未来版本升级时的重要参考资料。
设计过程如下
数据库服务器:
SQLServer2008R2
应用程序端:
VisualStudio2010
1.根据E/R图,首先设计出实体集和关系。
2.分析数据结构,设计数据类型和极其约束。
3输入设计好的数据以备测试。
4检查数据库的设计及测试
(二)。
由于本人编程能力有限,在组长的帮助下设计了修改密码模块。
过程如下:
1根据模块设计和接口设计,设计修改密码算法过程。
2设计算法,根据需求描述完善代码。
我负责的模块是修改密码信息,算法上主要问题就是连接数据库的问题。
处理好数据库、数据集、规则集、结果集、客户端上的联系和实质。
建立数据库的一般过程。
(1).具体就是首先进行驱动联接,然后对数据库进行访问,访问的方式为(oledb),
(2).在联接数据库的时候需要导入2个包SYSTEM.DATA和SYSTEM.DATA.OLEDB。
(3).创造连接对象
(4).写连接指明驱动,指明数据源,指明连接哪个数据库,用户名,密码,并打开连接
(5).连接好数据库,然后做查询,修改
(6).修改后关闭联接
实际过程如下
首先打开DATASET,然后添加-数据-XML架构,接着新建数据集,新建连接,输入服务器和数据库,然后建立查询,配置好SQL语句即可。
3测试并修改代码。
4完成模块功能
(五).测试
主要负责测试添加用户信息模块实现的测试(并没用测试工具测试)。
并填写记录。
(六).分配项目任务并记录开发过程
由于编程能力有限,本人负责分配项目并记录开发过程,让编程任务主要由组长实现。
五.个人遇到的困难与获得的主要成果
总体概述:
主要成果(3部分)
(一)功能需求描述
根据其他组员的用况图,和需求调查,我设计了主要实体集的功能描述,首先绘出用况简述表,然后用用例设计流描述功能。
具体收获如下:
.1教师需求分析
1.1识别用例
用况简述表
编号
名称
使用者
说明
1
注册教师信息
教师
2
登录系统
教师
3
修改教师信息
教师
先登录
4
发布课程
教师
先登录
5
查询课程状态
教师
先登录
6
查询学生名单
教师
先登录
7
录入成绩
教师
先登录
1.2客户的用例图
1.3用例事件流描述
1.31注册教师信息
用例编号:
1
用例名称:
教师注册个人信息
用例描述:
教师通过客户端进行注册自己的个人信息
前置条件:
无
后置条件:
如果用例成功,则用户建立新的教师账户,否则系统状态不变
基流:
教师通过客户端进入注册界面
教师输入用户名,密码以及个人信息提交
系统验证教师用户名,系统为教师建立账户
系统保存到数据库
教师进入系统
替代流:
如果输入用户名已存在,系统提示错误信息,用户可以重新输入或终止该用例
1.32登录系统
用例编号:
2
用例名称:
教师登录系统
用例描述:
对教师的身份进行验证,教师通过客户端进行登录
前置条件:
教师用户注册成功
后置条件:
用例成功,则教师进入系统,否则系统状态不变
基流:
教师通过客户端进入登录界面
教师客户输入用户名,密码
教师收到身份验证结果提示信息
教师进入系统
替代流:
如果输入用户名验证失败,系统提示错误信息,教师可以重新输入或终止该用例
1.33修改教师信息
用例编号:
3
用例名称:
教师修改个人信息
用例描述:
教师设置个人信息,如购房意向的添加和撤销,联络方式的变更等
前置条件:
教师身份验证通过
后置条件:
用例成功,则系统更新用户信息
基流:
用户登陆系统
用户进入修改个人信息界面
用户修改个人的信息提交
系统对数据库进行更新
替代流:
无
1.34发布课程
用例编号:
4
用例名称:
教师发布课程
用例描述:
教师通过客户端对即将发布的课程进行发布
前置条件:
教师身份验证通过
后置条件:
用例成功,则系统中增加发布的课程
基流:
教师登陆系统
教师进入发布课程界面
教师填写课程基本信息
系统从数据库查询,课程时段可用教室,选择上课地点
教师确认课程信息并提交
替代流:
无
1.3.5查询课程状态信息
用例编号:
5
用例名称:
查询课程状态信息
用例描述:
教师通过自定义或系统提示的进行对课程查询,显示课程信息,包括是否通过审批
前置条件:
教师身份验证通过
后置条件:
用例成功,则教师用户显示课程查询结果
基本流:
教师登陆系统
教师打开课程查询界面
教师输入要查询的信息提交
系统对数据库进行查询
系统显示结果
替代流:
无
1.3.6查询学生名单
用例编号:
6
用例名称:
查询学生名单
用例描述:
教师对课程进行查询后,可查询学生名单
前置条件:
教师身份验证通过,根据需求查询某门课程
后置条件:
用例成功,则显示课程对应学生信息查询结果
基流:
教师登录系统
教师自定义查询课程
教师进入课程状态界面,进行查询学生名单操作
系统显示学生名单
替代流:
无
1.3.7成绩录入
用例编号:
7
用例名称:
成绩录入
用例描述:
客户对课程进行相应的学生成绩录入
前置条件:
客户身份验证通过,查询某门课程,显示学生信息
后置条件:
用例成功,则系统将根据学生信息添加相应课程成绩
基流:
教师登录系统
教师查询课程,并执行查询学生名单操作
教师进入学生成绩录入操作
系统将成绩录入结果的数据保存
替代流:
无
2学生需求分析
客户的功能需求使用用例图的方法描述
2.1识别用例
用况简述表
编号
名称
使用者
说明
1
注册学生信息
学生
2
登录系统
学生
3
修改学生信息
学生
先登录
4
查询课程信息
学生
先登录
5
选课
学生
先登录
6
查看选课结果
学生
先登录
7
查看课程教室
学生
先登录
8
退课
学生
先登录
2.2客户的用例图
2.3用例事件流描述
2.2.3.1注册学生信息
用例编号:
1
用例名称:
学生注册个人信息
用例描述:
学生通过客户端进行注册自己的个人信息
前置条件:
无
后置条件:
如果用例成功,则学生建立新的账号,否则系统状态不变
基流:
学生通过客户端进入注册界面
学生输入用户名,密码以及个人信息提交
系统验证用户名,系统为客户建立账户
系统保存到数据库
客户进入系统
替代流:
如果输入用户名已存在,系统提示错误信息,用户可以重新输入或终止该用例
扩展点:
无
异常处理:
用户名,密码,个人信息不符合格式要求。
提示错误,重新注册。
2.2.3.2登录系统
用例编号:
2
用例名称:
学生登录系统
用例描述:
对学生的身份进行验证,学生通过客户端进行登录
前置条件:
学生注册成功
后置条件:
用例成功,则学生进入系统,否则系统状态不变
基流:
学生通过客户端进入登录界面
学生输入用户名,密码
学生收到身份验证结果提示信息
学生进入系统
替代流:
如果输入用户名验证失败,系统提示错误信息,学生可以重新输入或终止该用例
扩展点:
无
异常处理:
用户名,密码不正确或不存在。
重新输入。
2.2.3.3修改个人信息
用例编号:
3
用例名称:
学生修改个人信息
用例描述:
学生可根据个人实际情况更改自己的个人信息。
前置条件:
学生身份验证通过
后置条件:
用例成功,则系统更新用户信息
基流:
学生登陆系统
学生进入修改个人信息界面
学生修改个人的信息提交
系统对数据库进行更新
替代流:
无
扩展点:
无
异常处理:
个人信息有误,重新填写
2.2.3.4查看课程信息
用例编号:
4
用例名称:
查看课程信息
用例描述:
学生通过客户端对课程信息进行查看
前置条件:
客户身份验证通过
后置条件:
用例成功,则系统显示课程信息
基流:
学生登陆系统
学生进入查看课程界面
学生从数据库查询,显示结果
替代流:
无
扩展点:
无
异常处理:
无
2.2.3.5选课
用例编号:
5
用例名称:
选课
用例描述:
根据已有课程选课
前置条件:
客户身份验证通过,并且在选课时间
后置条件:
用例成功,则学生请等待选课结果。
基本流:
学生登陆系统
客户打开选课界面
客户选课提交
系统录入数据库
系统显示报名成功,等待结果
替代流:
无
扩展点:
无
异常处理:
超过选课时间,不允许选课,退出界面。
2.2.3.6查看选课结果
用例编号:
6
用例名称:
查看选课结果
用例描述:
根据系统选课,选出各个学生选课结果
前置条件:
学生身份验证通过
后置条件:
用例成功,则系统显示选课结果
基流:
客户登录系统
客户进入选课结果界面
系统显示选课结果。
替代流:
无
扩展点:
无
异常处理:
无
2.1.3.7查询课程教室
用例编号:
7
用例名称:
查询课程教室
用例描述:
学生可以查询自己选到的课程的教室
前置条件:
客户身份验证通过
后置条件:
用例成功,则系统显示选课结果
基流:
学生登录系统
客户进入查询课程界面
系统显示结果
替代流:
无
扩展点:
无
异常处理:
无
2.1.3.8退课
用例编号:
8
用例名称:
退课
用例描述:
学生退课
前置条件:
客户身份验证通过,并且在退课期间
后置条件:
系统显示结果,并且更新数据库
基流:
客户登陆系统
系统显示退课界面
客户确认删除
系统从数据中删除学生
替代流:
无
扩展点:
无
异常处理:
超出退课时间,退出界面
2.1.3.9查询成绩
用例编号:
9
用例名称:
查询成绩
用例描述:
学生查询成绩
前置条件:
客户身份验证通过
后置条件:
系统显示结果
基流:
客户登陆系统
系统显示查询成绩界面
替代流:
无
扩展点:
无
异常处理:
无
3系统管理员需求分析
系统管理员的功能需求使用用例图的方法描述
3.2.1识别用例
用况简述表
编号
名称
使用者
说明
1
登录系统
管理员
2
查询学生信息
管理员
先登录
3
查询教师信息
管理员
先登录
4
审批课程
管理员
先登录
5
公布选课结果
管理员
先登录
6
公布教室
管理员
先登录
7
公布学生名单
管理员
先登录
8
公布成绩
管理员
先登录
3.2.2客户的用例图
3.2.3用例事件流描述
3.2.3.1登录系统
用例编号:
1
用例名称:
登录系统
用例描述:
管理员登录系统
前置条件:
无
后置条件:
无
基流:
管理员通过客户端进入登录界面
管理员进入系统
替代流:
无
扩展点:
无
异常处理:
无
3.2.3.2查询学生信息
用例编号:
2
用例名称:
查询学生信息
用例描述:
查询数据库中学生的信息
前置条件:
管理员登录
后置条件:
用例成功,则系统显示学生信息
基流:
管理员登陆系统
进入学生信息界面
系统从数据库中反馈结果
替代流:
无
扩展点:
无
异常处理:
无
3.2.3.3查询教师信息
用例编号:
3
用例名称:
查询教师信息
用例描述:
查询数据库中教师的信息
前置条件:
管理员身份验证通过
后置条件:
用例成功,则系统显示教师信息
基流:
管理员登陆系统
学生进入查看教师信息界面
系统从数据库中反馈结果
替代流:
无
扩展点:
无
异常处理:
无
3.2.3.4审批课程
用例编号:
4
用例名称:
审批课程
用例描述:
管理员根据教师提供的课程和教师,确认课程发布到选课系统
前置条件:
客户身份验证通过
后置条件:
无
基本流:
管理员登陆系统
管理员打开审批课程界面
系统从数据库中提取教师发布课程信息
审批确认
输入系统选课课程数据库
替代流:
审批失败,取消课程
扩展点:
无
异常处理:
无
3.2.3.5公布选课结果
用例编号:
5
用例名称:
公布选课结果
用例描述:
系统公布选课结果
前置条件:
管理员身份验证通过
后置条件:
用例成功,则系统显示选课结果
基流:
管理员登录系统
客户进入公布选课结果界面
管理员从数据库中提取选课结果
公布选课结果
替代流:
无
扩展点:
无
异常处理:
无
3.1.3.6公布教室
用例编号:
6
用例名称:
公布教室
用例描述:
系统公布教室
前置条件:
管理员身份验证通过
后置条件:
用例成功,则系统显示教室结果
基流:
管理员登录系统
客户进入公布教室结果界面
管理员从数据库中提取教室结果
公布选课结果
替代流:
无
扩展点:
无
异常处理:
无
3.1.3.7公布学生名单
用例编号:
8
用例名称:
公布学生名单
用例描述:
系统公布学生名单
前置条件:
管理员身份验证通过
后置条件:
用例成功,则系统显示学生名单结果
基流:
管理员登录系统
客户进入公布学生名单结果界面
管理员从数据库中提取选课结果
公布学生名单
替代流:
无
扩展点:
无
异常处理:
无
3.1.3.8公布成绩
用例编号:
8
用例名称:
公布成绩
用例描述:
系统公布学生成绩
前置条件:
管理员身份验证通过
后置条件:
用例成功,则系统显示成绩结果
基流:
管理员登录系统
客户进入公布成绩界面
管理员从数据库中提取成绩结果
公布成绩
替代流:
无
扩展点:
无
异常处理:
无
(二)数据库设计(截图)
根据组员E/R图的描述和系统数据设计,建立数据库。
成果截图如下
Account
Course
Grade
Respond
教室预约申请表:
教室使用记录表:
学生上课记录表:
(三)模块设计
我主要设计修改密码模块
主要为数据库的连接,其中驱动访问和访问数据库为核心
修改密码模块(学生,教师,管理员)以学生为例
遇到的困难
1.需求分析上的困难,主要在功能的设计(是否全面?
是否可行?
是否容易出现BUG?
)。
在组员的帮助下,完成了数据流的过程和功能描述。
2.数据库的建立是否完整并正确的描述了E/R图所描述的内容。
弱实体集的建立。
数据的约束等等。
3.模块算法的实现。
怎样实现联接数据库。
4.分配组员任务的合理性。
六.测试与运行记录
登录模块测试(学生,教师,管理员)
正确进入
失败进入
修改密码模块(学生,教师,管理员)以学生为例
修改课程,添加课程等模块测试(管理员)
所添加的课程为“张钊”
管理课程(学生,教师不能管理)以学生为例
预约教室(管理员学生不能预约)