软件工程课程设计报告模板
软件工程课程设计模板

软件工程课程设计 模板一、课程目标知识目标:1. 理解软件工程的基本概念、原则和方法;2. 掌握软件开发各阶段的目标、任务和常用工具;3. 了解软件项目管理、软件质量保证及软件工程标准化知识。
技能目标:1. 能够运用结构化分析方法,进行软件需求分析,编写软件需求规格说明书;2. 能够运用结构化设计方法,进行软件设计,编写软件设计说明书;3. 能够运用软件工程方法,编写符合编程规范的代码,实现小型软件系统的开发;4. 能够运用软件测试方法,进行软件测试,提高软件质量。
情感态度价值观目标:1. 培养学生严谨、细致、负责任的科学态度;2. 培养学生团队合作精神,提高沟通与协作能力;3. 培养学生面对复杂问题的解决能力,增强自信心;4. 培养学生对软件工程的兴趣,激发学生创新意识和探索精神。
课程性质:本课程为高中信息技术课程,结合学生年级特点,注重理论与实践相结合,培养学生的实际操作能力和问题解决能力。
学生特点:高中学生具有一定的逻辑思维能力和动手操作能力,对新鲜事物充满好奇心,但需引导其将注意力集中在课程内容上。
教学要求:教师应充分运用案例教学、任务驱动等方法,引导学生主动参与、积极思考,注重培养学生的实际操作能力和综合运用能力。
通过课程学习,使学生能够达到上述课程目标,为未来软件开发和信息技术应用奠定基础。
二、教学内容根据课程目标,教学内容分为以下五个部分:1. 软件工程基本概念- 软件与软件工程定义- 软件生命周期- 软件工程的目标、原则和方法2. 软件开发过程- 软件需求分析- 软件设计(结构化设计、面向对象设计)- 编码与实现- 软件测试3. 软件项目管理- 项目计划与管理- 风险管理- 质量管理- 团队协作与沟通4. 软件质量保证- 软件质量标准- 软件评审- 软件度量- 软件可靠性5. 软件工程标准化- 软件开发规范- 软件文档编写规范- 软件测试标准- 软件项目管理标准教学大纲安排如下:第一周:软件工程基本概念第二周:软件开发过程(需求分析、设计)第三周:软件开发过程(编码、测试)第四周:软件项目管理第五周:软件质量保证第六周:软件工程标准化教学内容与教材紧密关联,按照教学大纲逐步推进,确保学生能够掌握软件工程的核心知识,提高实践操作能力。
软件工程课程设计报告模板

软件工程课程设计报告题目基于cv的人脸识别匹配学院:信息科学技术学院专业:计算机科学与技术班级: XXX班姓名:王XXX学号: 202415612546报告内容(1)课程设计要求要求:(1)设计背景:随着科技的不断发展,人工智能技术在各个领域得到了广泛的应用。
人脸识别技术作为一种生物特征识别技术,具有高安全性、便捷性和实用性等特点,已逐渐成为现代社会中不可或缺的一部分。
为了提高人脸识别的准确性和实时性,本设计要求基于计算机视觉库(OpenCV)开发一套人脸识别匹配系统。
(2)对采集到的人脸图像进行预处理;(3)提取人脸特征;(4)进行人脸识别匹配;(5)输出识别结果;(6)训练自己的识别图集;(2)相关人工智能方法阐述和数据集(1)利用OpenCV库中的Haar级联分类器,通过加载预训练模型来快速且有效地检测图像中的正面人脸。
在人脸识别的应用中,OpenCV库提供了一系列强大的工具和算法。
我首先采用了Haar级联分类器来检测图像中的面部区域。
这种方法通过加载预训练的Haar级联模型,能够有效地识别图像中的正面人脸。
Haar级联分类器是一种基于机器学习的方法,它通过训练大量的正面和负面图像来创建一个能够识别特定目标的模型。
这个模型是一系列级联的弱分类器,每个分类器都基于图像的Haar特征,即图像中相邻区域的亮度差异。
级联设计允许快速排除非面部区域,从而提高检测效率。
(2)我们使用OpenCV库对灰度图像进行多尺度扫描,通过缩放和进行像素分析,以适应不同尺寸和距离的面部,从而提高人脸识别的准确性。
我运用OpenCV库中的函数对灰度图像进行多尺度扫描,以检测不同大小的面部。
这种多尺度扫描方法通过对图像进行缩放和像素扫描,来查找可能的面部区域。
一旦找到潜在的匹配,它就会使用更复杂的分类器来确定是否真的是一个面部。
这种方法能够适应不同距离和不同尺寸的面部,从而提高识别的准确性。
(3)在人脸识别过程中,提取面部ROI并转换为灰度图像是为了减少计算量,集中处理与人脸相关的关键信息,并加速识别过程。
软件工程课程设计报告.doc

软件工程课程设计报告.doc一、课程目标知识目标:1. 让学生掌握软件工程的基本概念、原理和方法,理解软件生命周期各阶段的目标和任务。
2. 使学生了解软件需求分析、设计、编码、测试和维护等环节的相关知识。
3. 帮助学生掌握软件项目管理的方法和技巧,了解软件质量保证与评价标准。
技能目标:1. 培养学生运用软件工程方法进行问题分析、设计和实现的能力。
2. 提高学生团队协作和沟通能力,能够撰写规范的技术文档。
3. 培养学生运用软件工具进行项目管理和开发的能力。
情感态度价值观目标:1. 培养学生严谨、认真、负责的工作态度,养成良好的编程习惯。
2. 激发学生对软件工程的兴趣,鼓励学生积极参与课堂讨论和实践操作。
3. 培养学生的创新意识和解决问题的能力,使其具备持续学习和适应发展的素质。
课程性质:本课程为专业必修课,旨在让学生全面了解软件工程的理论体系,培养实际软件开发能力。
学生特点:学生已具备一定的编程基础,具有较强的逻辑思维能力,但缺乏实际项目经验。
教学要求:结合学生特点,注重理论与实践相结合,强调动手能力和团队协作能力的培养。
通过本课程的学习,使学生能够独立完成中小型软件项目的开发。
二、教学内容1. 软件工程基本概念:软件、软件工程、软件生命周期、软件过程模型等。
2. 需求分析:需求获取、需求分析、需求规格说明书编写。
3. 软件设计:总体设计、详细设计、设计模式、UML建模。
4. 编码与实现:编程规范、编码技巧、版本控制、调试方法。
5. 软件测试:测试基础、测试策略、测试级别、自动化测试。
6. 软件维护:维护类型、维护策略、软件演化。
7. 软件项目管理:项目管理概念、进度控制、风险管理、团队协作。
8. 软件质量保证:质量标准、质量保证方法、评审与审计。
9. 实践环节:以小组为单位,完成一个中小型软件项目的开发。
教学大纲安排:第1周:软件工程基本概念第2周:需求分析第3周:软件设计第4周:编码与实现第5周:软件测试第6周:软件维护第7周:软件项目管理第8周:软件质量保证第9-16周:实践环节教学内容关联教材章节:第1章:软件工程概述第2章:需求分析第3章:软件设计第4章:编码与实现第5章:软件测试第6章:软件维护与演化第7章:软件项目管理第8章:软件质量保证与评价实践环节:结合全书内容,进行实际项目操作。
软件工程课程设计报告

软件工程课程设计报告一、项目背景。
随着信息技术的不断发展,软件工程作为一门重要的学科,对于培养学生的实际动手能力和团队协作能力具有重要意义。
本次软件工程课程设计的项目背景是基于一家虚拟公司的需求,通过团队合作完成一个实际的软件项目,从而提高学生的实际动手能力和团队协作能力。
二、项目目标。
本次课程设计的项目目标是设计并开发一款虚拟公司的管理系统,包括人事管理、财务管理、项目管理等模块,以满足公司日常运营的需求。
通过这个项目,学生将学习到软件工程的相关知识和技能,包括需求分析、系统设计、编码实现、测试调试等方面的内容。
三、项目内容。
1. 需求分析。
在项目开始阶段,团队成员将对虚拟公司的需求进行分析,包括人事管理、财务管理、项目管理等方面的需求,明确系统的功能和性能需求,为后续的系统设计和开发奠定基础。
2. 系统设计。
在需求分析的基础上,团队将进行系统设计,包括数据库设计、系统架构设计、模块设计等内容,确保系统的稳定性和可扩展性。
3. 编码实现。
根据系统设计的结果,团队将进行编码实现,采用合适的编程语言和开发工具,保证代码的质量和可维护性。
4. 测试调试。
在编码实现完成后,团队将进行系统测试和调试,包括单元测试、集成测试、系统测试等内容,确保系统的功能完备和稳定可靠。
四、项目成果。
最终,团队将完成一款虚拟公司管理系统的设计和开发,并提交相应的文档和报告。
项目成果将得到老师和同学的评审,以及虚拟公司的模拟运营,从而检验项目的实际效果和学生的实际能力。
五、总结。
通过本次软件工程课程设计,学生将学习到软件工程的相关知识和技能,包括需求分析、系统设计、编码实现、测试调试等方面的内容。
同时,学生将提高实际动手能力和团队协作能力,为将来的工作和学习打下坚实的基础。
六、致谢。
在此,特别感谢老师和同学们的支持和帮助,也感谢虚拟公司的配合和支持,使得本次软件工程课程设计能够顺利进行。
软件工程课程设计报告书

软件工程课程设计报告书1. 引言本报告书是针对软件工程课程设计的项目开发过程中所进行的详细记录和总结。
软件工程课程设计是为了培养学生实际运用软件工程知识和方法进行软件开发的能力,通过实际动手的项目开发过程,使学生加深对软件工程原理和方法的理解和掌握。
本次课程设计的项目选题为xxxx。
2. 项目需求分析2.1 用户需求对于本项目的用户来说,他们希望能够通过这个软件解决某个问题,提供某种服务或者实现某个功能。
2.2 功能需求在进行需求分析的过程中,我们展开了和用户的多次交流,收集到了用户的需求,并对这些需求进行了整理和归纳。
根据这些需求,我们将系统的功能需求进一步细化。
•功能1:xxxxxx•功能2:xxxxxx•…2.3 非功能需求除了功能需求外,系统还存在着一些非功能需求,这些需求对于系统的性能、可用性、安全性等方面有要求。
在需求分析的过程中,我们对这些非功能需求进行了分类和描述。
•性能需求:xxxxxx•可用性需求:xxxxxx•安全性需求:xxxxxx•…3. 系统设计3.1 架构设计在系统设计阶段,我们根据需求分析的结果,进行系统的架构设计。
我们选择了某某架构作为本系统的基本架构,并对各个模块的功能和交互进行了详细的说明。
3.2 数据库设计在系统设计中,我们还进行了数据库的设计。
通过对系统的数据进行建模,设计出符合系统需求的数据库表结构,并定义了各个表之间的关系。
3.3 界面设计在系统设计中,我们还进行了界面的设计。
通过分析用户的操作方式和操作习惯,我们设计了简洁、直观并且易于使用的界面。
4. 开发过程4.1 开发环境在开发过程中,我们使用了xxxxxx作为开发环境,并列出了所需的开发工具和技术栈。
4.2 开发计划在开发过程中,我们根据项目的需求和资源的限制,制定了详细的开发计划。
我们将项目分解为多个子任务,并为每个子任务设定了起止时间和负责人。
4.3 功能实现在开发过程中,我们通过迭代、增量的方式逐步实现系统的各个功能。
软件课程设计实验报告(3篇)

软件课程设计实验报告(3篇)【导语】软件课程设计试验报告怎么写出亮点?整理了3篇优秀的《软件课程设计试验报告》通用版范文,有规范的开头结尾写法和标准的书写格式。
是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。
【第1篇】软件课程设计试验报告一、目的、要求通过该课程设计要使同学树立起剧烈的工程化意识,用工程化思想和方法开发软件。
切实体会出用软件工程的方法开发系统与一般程序设计方法的不同之处,同学在对所开发的系统进行软件方案、需求分析、设计的基础上,实现并测试实际开发的系统。
通过一系列规范化软件文档的编写和系统实现,使同学具备实际软件项目分析、设计、实现和测试的基本力量。
二、主要内容要求同学把握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。
每个同学选择一个小型软件项目(内容参照《计算机综合实践指导》,宋雨等编著,清华高校出版社出版),根据软件工程的生命周期,完成软件方案、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的`文档。
详细的方法可以选用传统的软件工程方法或者面对对象的方法,开发环境和工具不限。
三、进度方案略四、设计成果要求1.至少提交4个文档,包括软件方案、软件需求规格说明书、软件设计说明书、软件测试方案,要求文档格式规范、规律性强(可参考《计算机综合实践指导》中给出的要求及格式)、图表规范;2.独自实现了系统的某些功能,基本达到了要求的性能,经过了测试,基本能运行。
五、考核方式(1)提交的文档规范,工作量大,文档规律性强、正确,按《计算机综合实践指导》标准考核(附《软件工程课程设计》试验报告评分表)占60%(2)系统验收、讲解、答辩占25% (3)考勤占15%软件课程设计试验报告【第2篇】应用软件课程设计报告计算机是一门技术性、工程性和应用性很强的学科,教育部高等学校计算机科学与技术教学指导委员会的进展战略讨论报告中也指出:计算机专业的人才应当被分为科学型、工程型、应用型三类,而绝大多数应当是工程型和应用型的。
软件工程课程设计模板

软件工程课程设计报告课题名称:员工工资管理系统指导教师:梁鸿专业班级:地信1班小组成员: 向凤 20045964(组长)朱江涛彭晃渊刘华丽石吉吉完成日期:2011 年 6 月12 日目录目录 (2)1 问题的提出 (4)1.1 选题背景与意义 (4)1.2 开发工具简介 (4)1.3 开发人员分工介绍 (5)2 系统分析 (5)2.1 系统性能 (5)2.2 系统特色 (5)2.3 可行性分析 (6)2.3.1 社会可行性 (6)2.3.2 技术可行性 (6)2.3.3 经济可行性 (6)3 软件需求分析 (6)3.1系统业务流程图 (7)3.2 系统的功能划分 (8)3.3 系统的功能要求 (8)3.4 用户的功能需求: (8)3.4.1登陆功能 (8)3.4.2 员工信息维护功能 (8)3.4.3 工资信息维护功能 (9)3.4.4查询功能 (9)3.4.5计算功能 (9)3.4.6打印功能 (10)3.4.7退出功能 (10)3.5系统的数据需求: (10)3.5.1 总结出数据信息 (10)3.5.2数据流程图如下 (10)3.5.3 数据流图的数据字典 (12)3.6 系统的性能需求: (13)4 系统的概要设计: (14)4.1系统结构的总体设计 (14)4.2 各个模块的功能描述如下: (15)4.2.1 员工基本信息维护模块: (15)4.2.2 工资信息维护模块: (15)4.2.3 查询信息模块: (16)4.2.4 计算工资模块: (16)4.2.5 打印模块: (16)4.2.6 登陆模块: (16)4.2.7退出模块: (16)5 数据库概念结构设计 (17)5.1 系统的E-R图 (17)5.2 系统的物理模型图 (18)5.3 数据库的设计 (19)6 系统的详细设计 (20)6.1 生成报表 (20)6.2 查询模块的详细设计: (21)7 软件测试 (22)7.1 黑盒测试 (23)7.2 白盒测试 (23)8 调试 (23)结论 (24)参考文献 (26)评分表 (27)1 问题的提出工资管理系统是一个数据库管理系统,是针对企业的工资管理业务进行计算机处理而开发的应用软件。
软件工程课程设计报告

软件工程课程设计报告摘要:本报告旨在分析和总结软件工程课程设计的过程和结果。
通过对课程设计的详细说明,包括需求分析、系统设计、编码实现、测试和维护等环节,展示了一个完整的软件工程项目的生命周期。
通过这个过程,我深入了解了软件工程的理论和实践,并且提升了自己的技能和能力。
本报告将对我在这个课程设计项目中获得的经验和教训进行总结和反思。
第一章:引言1.1 研究背景和目的在现代社会中,软件已经成为各行各业的核心要素之一。
软件工程作为一门学科,旨在帮助开发人员和团队有效地组织和管理软件项目,以满足用户需求和提高软件质量。
本课程设计旨在通过一个实际的项目,让学生们学习和实践软件工程的基本理论和方法。
1.2 课程设计目标本课程设计的目标是让学生们通过一个完整的软件工程项目,从需求分析到维护的全过程,深入了解和掌握软件工程的基本概念、原理和方法。
通过实际操作,学生们将提高软件开发能力,并培养团队合作和沟通的能力。
第二章:需求分析2.1 项目背景和目标我选择了一个在线购物平台的设计项目作为课程设计的主题。
该项目旨在开发一个用户友好、功能完善的电子商务平台,以便用户能够方便地浏览、搜索和购买商品。
2.2 需求收集和分析通过市场调研、用户访谈和竞品分析等方法,我们确定了以下功能需求:用户注册和登录、商品浏览和搜索、购物车管理、订单生成和支付等。
通过用例图和活动图的设计,我们对系统的功能和交互过程进行了详细描述。
第三章:系统设计3.1 架构设计基于需求分析阶段的结果,我们选择了一个三层架构来设计我们的系统。
这个架构包括展示层、业务逻辑层和数据访问层,以实现系统的松耦合和可扩展性。
3.2 模块设计根据系统的功能需求,我们将系统划分为几个独立的模块,如用户管理模块、商品管理模块、订单管理模块等。
每个模块都有特定的功能和接口,并且可以独立开发和测试。
第四章:编码实现4.1 技术选择在编码实现阶段,我们选择了一些流行的开发技术和工具,如Java 语言、Spring框架、MySQL数据库等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
滨江学院软件工程课程设计报告( 2011 -- 2012 年度第一学期)课程名称:软件工程课程设计题目:学生选课系统院系:计算机科学与技术系班级:学号:姓名:指导教师:李振宏设计周数:两周日期:2012 年4月4日摘要:本系统实现学生选课的基本功能,包括学生退选课,查看自己的选课信息;教师查看选课学生的信息,提交成绩;管理员添加学生、管理学生、管理成绩、添加教师、管理教师和管理课程等。
系统利用.Net平台技术进行开发,实现学生选课的动态管理,使得对信息的管理更加及时、高效,提高了效率。
同时还对系统的开发原理、功能特点和设计方案进行了介绍。
关键词:学生选课数据库管理 一、课程设计的目的与要求通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;2.熟悉自动化的软件开发工具Rational Rose 2003,并将其运用于软件开发的全过程;3.进一步加强和提高软件工程文档的编写能力;4.培养协作能力和团队精神。
二、设计正文1.概述1.1课题题目:学生选课系统1.2系统的主要目标:本系统目标是实现选课系统所需的各种基本功能,包括学生选课、退课功能和教师查看选修课程、提交课程成绩功能以及管理员添加学生、维护学生信息、成绩管理、添加教师、维护教师信息、维护选修课程,还有公用的修改密码等功能。
1.3 系统的开发环境及运行环境:操作系统:Windows XP Pro SP2建模工具:Rational Rose 2003数据库系统:SQL Server2000开发工具:Visual Studio 2005Web服务器:IIS+ 2.0平台2.系统需求分析学生选课系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户,也即是三类用户角色。
(1)学生用户是主要的需求者,主要需求功能是查询可选课程、查看自己选课情况及进行选课、退课操作等;(2)教师用户主要需求功能是查看自己所教授的课程、课程有哪些学生选修、以及利用本系统提交学生的成绩;(3)管理员用户的功能需求较为复杂,包括对学生信息、教师信息、课程信息进行管理。
在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。
在教师管理子模块中,实现对教师信息的添加、修改、删除、查询等操作。
在课程管理子模块中,实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。
本系统将管理员用户、教师用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程成绩的权限;让学生拥有选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。
通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。
2.1用例图图2-1 学生选课系统用例图用例图说明:(1)系统的外部角色有:学生用户、教师用户和管理员。
(2)系统主要用例的文档描述:①学生管理用例:学生用户可见的功能,包含了选课、退课和查看选课三个用例功能。
②教师管理用例:教师用户可见的功能,包含了查看学生选课和提交成绩两个用例功能。
③信息管理用例:管理员可见的功能,这个用例进一步分为三个用例:学生信息管理用例、教师信息管理用例和课程信息管理用例。
④学生信息管理用例:信息管理用例可见的功能,实现学生信息的管理功能,包含了添加学生、修改学生信息和删除学生三个用例。
⑤教师信息管理用例:信息管理用例可见的功能,实现教师信息的管理功能,包含了添加教师、修改教师信息和删除教师三个用例。
⑥课程信息管理用例:信息管理用例可见的功能,实现课程信息的管理功能,包含了添加课程、修改课程信息和删除课程三个用例。
⑦修改密码用例:所有用户都可见的功能,用于修改用户的密码信息。
(3)系统用例之间的关系:①学生管理用例与选课、查看选课、退课三用例之间是包含关系。
②教师管理用例与查看学生选课、提交成绩两用例之间是包含关系。
③信息管理用例与学生信息管理用例、教师信息管理用例和课程信息管理用例之间是包含关系。
④学生信息管理用例与添加学生、修改学生信息和删除学生三个用例之间是包含关系。
⑤教师信息管理用例与添加教师、修改教师信息和删除教师三个用例之间是包含关系。
⑥课程信息管理用例与添加课程、修改课程信息和删除课程三个用例之间是包含关系。
(4)系统关键用例的正常事件流图和异常事件流图表2-1 修改密码用例的正常事件流图和异常事件流图表2-2 提交成绩用例的正常事件流图和异常事件流图2.2类图图2-2 学生选课系统类图类图说明:(1)BaseUser类是一个系统角色用户的基类,主要方法有两个:modifyPWD() 用于修改用户的密码;loginCheck() 用于用户登录验证。
(2)Admin类继承自BaseUser类。
(3)Student类继承自BaseUser类,主要方法有:studentAdd() 用于添加学生;studentDel() 用于删除学生;studentUpdate() 用于更新学生信息;getStudents() 用于获取学生列表。
(4)Teacher类继承自BaseUser类,主要方法有:teacherAdd() 用于添加教师;teacherDel() 用于删除教师;teacherUpdate() 用于更新教师信息;getTeachers() 用于获取教师列表。
(5)Course类是一个课程类,主要方法有:courseAdd() 用于添加课程;courseDel() 用于删除课程;courseUpdate() 用于修改课程信息;getCourses() 用于获取课程列表。
(6)Elect类是一个选课表类,主要方法有:elect() 选修课程;electDel() 退选课程;getElectInfo() 获取选课信息;haveSubmit() 检测是否已提交过成绩;submitScore() 提交成绩。
2.3顺序图(1) 管理员修改课程信息顺序图:图2-4 学生用户退选课的顺序图(3) 教师提交成绩顺序图图2-5 教师提交成绩顺序图2.4 协作图(可选):教师用户(1) 学生用户选课协作图图2-6 学生用户选课协作图(2) 教师提交成绩协作图图2-7 教师提交成绩协作图3.系统总体设计3.1 设计问题域子系统学生选课系统是实现学生选课退课、教师提交成绩以及学校教务管理员维护信息的一个平台,整个学生选课系统有前台和后台两部分,共分为4个模块:管理员模块,教师模块,学生模块和公有模块,分别用于完成各自的功能。
以下为学生选课系统总体设计图和各功能模块说明:(1)总体设计图(2)各模块功能表3-1 学生选课系统功能模块表3.2 设计数据管理子系统(1)数据库表表3-2 数据库表(2)数据表之间的关系图3-2 数据表之间的关系图(3)数据库表结构①学生表Student的详细数据字段:②教师表Teacher的详细数据字段:③课程表Course的详细数据字段:④选课表Elect的详细数据字段:⑤系统管理员表Users的详细数据字段:⑥系院表Depart的详细数据字段:3.3 设计人机交互子系统(1)用户分类本系统的用户可分为三类:①管理员用户;②教师用户;③学生用户。
(2)用户描述①管理员用户的描述:管理员用户在整个选课系统中起到管理和维护的作用,对学生和教师的信息进行管理和维护以及开设课设等职责。
②教师用户的描述:教师用户在本系统中具有管理选修了自己开设的课程的学生的权限,查看选修了自己开设课程的学生信息有及提交学生成绩。
③学生用户的描述:选课系统主要是针对管理学生的,学生在本系统中具有修改自己的信息,以及选课和退选的功能。
(3)设计命令层次①系统的人机交互子系统的内容和准则:本学生选课系统的人机交互子系统在根据不同的用户身份登陆到不同的页面,然后按②通过采用树形结构,细化命令的组织方式,如下:4.详细设计学生选课系统是实现学生网上选课、教师提交成绩以及学校教务管理员维护信息的一个平台,整个学生选课系统共分为4个大模块:管理员模块,教师模块,学生模块和公有模块,其中复杂的方法和模块的详细设计流程图如下。
4.1系统用户登录流程图4.2 用户密码修改流程图图4-1 系统用户登录流程图图4-2 用户密码修改流程图4.3教师提交成绩流程图图4-3教师提交成绩流程图4.4管理员添加课程流程图图4-4 管理员添加课程流程图4.5学生选修课程流程图图4-5 学生选修课程流程图5.系统实现本系统采用了三层架构来实现,即分为用户界面层(UI)、业务逻辑层(BLL)和数据访问层(DAL),用户界面层是展示给用户的界面,方便用户与系统进行交互;业务逻辑层是对系统业务实体的封装,完成系统业务功能;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。
5.1 Database类主要是与数据库连接,提供数据库操作功能,代码如下:namespace MyElectCourse.DAL{public class Database{protected string connectionString;protected SqlConnection connection = null;public Database(){connectionString =ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();}~Database(){if (connection != null){connection = null;}}protected void Open(){if (connection == null){connection = new SqlConnection(connectionString);}if (connection.State.Equals(ConnectionState.Closed)){connection.Open();}}protected void Close(){if (connection != null){connection.Close();}}public int ExecuteSQL(string sqlstr){int count = -1;this.Open();SqlCommand cmd = new SqlCommand(sqlstr, connection);count = cmd.ExecuteNonQuery();this.Close();return count;}public DataSet GetDataSet(string sqlstr){this.Open();DataSet ds = new DataSet();SqlDataAdapter adapter = new SqlDataAdapter(sqlstr,connection);adapter.Fill(ds);this.Close();return ds;}public DataTable GetDataTable(string sqlstr){DataSet ds = this.GetDataSet(sqlstr);DataTable dt = new DataTable();if (ds.Tables.Count > 0){dt = ds.Tables[0];}return dt;}public SqlDataReader GetDataReader(string sqlstr){this.Open();SqlCommand cmd = new SqlCommand(sqlstr, connection);SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//this.Close();return sdr;}}}5.2 UserBase类是所有系统角色用户的基类,完成用户登录验证与修改密码的功能,代码如下:namespace MyElectCourse.BLL{public class UserBase{private string userID;public string UserID{get { return userID; }set { userID = value; }}private string userPSW;public string UserPSW{get { return userPSW; }set { userPSW = value; }}public string loginCheck(string uid, string upwd, string urole){String selectStr = String.Empty;switch (urole){case"0": //身份为教师时selectStr = "Select * from Teacher where teaID = '" + uid + "'";break;case"1": //身份为学生时selectStr = "Select * from Student where stuID = '" + uid + "'";break;case"2": //身份为管理员时selectStr = "Select * from Users where adminName = '" + uid + "'";break;default:return null;}Database db = new Database();DataTable dt = db.GetDataTable(selectStr);if (dt.Rows.Count > 0) //如果该用户存在{if (dt.Rows[0][1].ToString().Equals(upwd)) //密码正确{switch (urole){case"0": //身份为教师时return"0";case"1": //身份为学生时return"1";case"2": //身份为管理员时return"2";default:return null;}}else//密码错误,给出提示信息!{return"-1";}}else//用户不存在或用户名输入错误{return"-2";}}public string modifyPWD(String urole, String uid, String oldPwd, String newPwd){String updateStr = String.Empty;switch (urole){case"0": //身份为教师时updateStr = "update Teacher set teaPwd='" + newPwd + "' where teaID='" + uid + "'";break;case"1": //身份为学生时updateStr = "update Student set stuPwd='" + newPwd + "' where stuID='" + uid + "'";break;case"2": //身份为管理员时updateStr = "update Users set adminPwd='" + newPwd + "' where adminName='"break;}string ucheck = this.loginCheck(uid, oldPwd, urole);if (ucheck.Equals("0") || ucheck.Equals("1") || ucheck.Equals("2")){int t = new Database().ExecuteSQL(updateStr); //根据修改后返回的结果给出提示if (t > 0){return"1";}else{return"0";}}else{return"-1";} } }}5.3 系统登录页面,代码及运行效果如下:<head runat="server"><title>登录页面</title></head><body onload="document.all.txtUserName.focus()"leftmargin="0"rightmargin="0"><form id="form1"runat="server"><div><table align="center"style="font-size: 12px; font-family: Tahoma; border-collapse: collapse"<tr><td colspan="2"style="text-align: center"><span style="font-size: 24pt; font-family: 隶书">学生选课系统</span></td></tr><tr><td><div align="right"><span style="font-family: 宋体">用户名</span>:</div></td><td style="width: 242px"><asp:TextBox ID="txtUserName"runat="server"Width="150px"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1"runat="server" ErrorMessage="不能为空!"></asp:RequiredFieldValidator></td></tr><tr><td style="height: 32px"><div align="right">密 码:</div></td><td style="height: 32px; width: 242px;"><asp:TextBox ID="txtPwd"runat="server"TextMode="Password"<asp:RequiredFieldValidator ID="RequiredFieldValidator2"runat="server"ErrorMessage="不能为空!"></asp:RequiredFieldValidator></td></tr><tr><td colspan="2"align="center"style="height: 46px"><asp:RadioButtonList ID="rblClass"runat="server"RepeatDirection="Horizontal"><asp:ListItem Value="0">教师</asp:ListItem><asp:ListItem Selected="True"Value="1">学生</asp:ListItem><asp:ListItem Value="2">管理员</asp:ListItem></asp:RadioButtonList><asp:Label ID="lblMessage"runat="server"ForeColor="Red"></asp:Label></td></tr><tr><td align="center"colspan="2"><asp:ImageButton ID="imgbtnLogin"runat="server"ImageUrl="~/Images/Login.GIF"<asp:ImageButton ID="imgbtnClose"runat="server"ImageUrl="~/Images/Close.GIF"</td></tr></table></div></form></body></html>图5-1系统登录页面5.4 学生用户选课界面代码及运行效果图如下:<html xmlns="/1999/xhtml"><head runat="server"><title>学生选课</title></head><body leftmargin="0"rightmargin="0"topmargin="0"><form id="form1"runat="server"><div><table width="100%"bgcolor="#ccccff"><tr><td><uc1:top ID="Top1"runat="server"/></td></tr></table><table id="table1"width="80%"border="0"align="center"><tr><td align="center"><span style="font-size: 16pt;">可选修课程</span></td></tr><tr><td><asp:GridView ID="GridView1"runat="server"AutoGenerateColumns="False" BackColor="White"Width="100%"BorderColor="#999999"BorderStyle="None"BorderWidth="1px" CellPadding="3"DataSourceID="SqlDataSource1"GridLines="Vertical"OnRowCommand="GridView1_RowCommand"Font-Size="10pt"DataKeyNames="courceID,teaID"><FooterStyle BackColor="#CCCCCC"ForeColor="Black"/><RowStyle BackColor="#EEEEEE"ForeColor="Black"Font-Size="10pt"/><SelectedRowStyle BackColor="#008A8C"Font-Bold="True"ForeColor="White"/><PagerStyle BackColor="#999999"ForeColor="Black"HorizontalAlign="Center" /><HeaderStyle BackColor="Blue"Font-Bold="True"ForeColor="White"Font-Size="10pt"/><AlternatingRowStyle BackColor="Gainsboro"/><Columns><asp:BoundField DataField="courceID"HeaderText="courceID"ReadOnly="True"Visible="False"SortExpression="courceID"/><asp:BoundField DataField="teaID"Visible="False"HeaderText="teaID" ReadOnly="True"SortExpression="teaID"/><asp:BoundField DataField="courceName"HeaderText="课程名称" SortExpression="courceName"></asp:BoundField><asp:BoundField DataField="teaName"HeaderText="教师姓名" SortExpression="teaName"></asp:BoundField><asp:BoundField DataField="courceTime"HeaderText="上课时间" SortExpression="courceTime"></asp:BoundField><asp:BoundField DataField="courceAddress"HeaderText="上课地点" SortExpression="courceAddress"></asp:BoundField><asp:HyperLinkField DataNavigateUrlFields="courceID,teaID" DataNavigateUrlFormatString="courseDetail.aspx?courceID={0}&teaID={1}"HeaderText="详细..."Text="详细..."/><asp:ButtonField HeaderText="选修"CommandName="select"Text="选修"></asp:ButtonField></Columns></asp:GridView><asp:SqlDataSource ID="SqlDataSource1"runat="server"ConnectionString="<%$ ConnectionStrings:ConnectionString %>"SelectCommand="SELECT Cource.courceID, Cource.teaID, Cource.courceName, Teacher.teaName, Cource.courceTime, Cource.courceAddress FROM Cource INNER JOIN Teacher ON Cource.teaID = Teacher.teaID WHERE NOT EXISTS (SELECT * FROM Elect WHERE (courceID=Cource.courceID and teaID=Cource.teaID and stuID = @stuID))"><SelectParameters><asp:SessionParameter Name="stuID"SessionField="userID"/></SelectParameters></asp:SqlDataSource></td></tr><tr><td><asp:Label runat="server"ID="errormess"ForeColor="Red"Font-Size="Smaller"></asp:Label></td></tr><tr><td style="height: 24px; text-align: center"><span style="font-size: 16pt;">您已经选修的课程</span></td></tr><tr><td><asp:GridView ID="GridView2"runat="server"AutoGenerateColumns="False" BackColor="White"Width="100%"BorderColor="#999999"BorderStyle="None"BorderWidth="1px" CellPadding="3"DataSourceID="SqlDataSource2"GridLines="Vertical"OnRowCommand="GridView2_RowCommand"DataKeyNames="stuID,courceID,teaID"><FooterStyle BackColor="#CCCCCC"ForeColor="Black"/><RowStyle BackColor="#EEEEEE"ForeColor="Black"Font-Size="10pt"/><SelectedRowStyle BackColor="#008A8C"Font-Bold="True"ForeColor="White"/><PagerStyle BackColor="#999999"ForeColor="Black"HorizontalAlign="Center" /><HeaderStyle BackColor="Blue"Font-Bold="True"ForeColor="White"Font-Size="10pt"/><AlternatingRowStyle BackColor="Gainsboro"/><Columns><asp:BoundField DataField="stuID"HeaderText="stuID"ReadOnly="True" SortExpression="stuID"Visible="False"/><asp:BoundField DataField="courceID"HeaderText="courceID"ReadOnly="True"SortExpression="courceID"Visible="False"/><asp:BoundField DataField="teaID"HeaderText="teaID"ReadOnly="True"SortExpression="teaID"Visible="False"/><asp:BoundField DataField="courceName"HeaderText="课程名称"SortExpression="courceName"><asp:BoundField DataField="teaName"HeaderText="教师姓名"SortExpression="teaName"></asp:BoundField> <asp:BoundField DataField="courceTime"HeaderText="上课时间"SortExpression="courceTime"><asp:BoundField DataField="courceAddress"HeaderText="上课地点"SortExpression="courceAddress"> <asp:ButtonField HeaderText="退选"CommandName="shanchu"Text="退选</Columns></asp:GridView><asp:SqlDataSource ID="SqlDataSource2"runat="server"ConnectionString="<%$ ConnectionStrings:ConnectionString %>"SelectCommand="SELECT Elect.stuID,Elect.courceID, Elect.teaID,<SelectParameters><asp:SessionParameter Name="stuID"SessionField="userID"/></SelectParameters></asp:SqlDataSource><td style="height: 21px"align="center"><asp:HyperLink ID="HyperLink1"runat="server"NavigateUrl="~/ModifyPwd.aspx"Font-Size="10pt">修改密码</asp:HyperLink><asp:HyperLink ID="HyperLink2"runat="server"Font-Size="10pt"NavigateUrl="javascript:window.close()">退出系统</asp:HyperLink></td></tr></table></div></form></body></html>图5-2 学生选课界面5.5 教师用户提交成绩界面代码及运行效果如下:<head runat="server"><title>提交成绩</title></head><body leftmargin="0"rightmargin="0"topmargin="0"><form id="form1"runat="server"><div><table width="100%"bgcolor="#ccccff"><tr><td><uc1:top ID="Top1"runat="server"/></td></table><table id="table1"width="400"border="0"runat="server"align="center"><tr valign="top"><td align="left"><asp:Label ID="lblmessage"Font-Size="10pt"runat="server">课程名称: </asp:Label><asp:TextBox runat="server"ID="cname"></asp:TextBox></td></tr><tr><td align="center"><asp:GridView ID="GridView1"runat="server"AutoGenerateColumns="False" BackColor="White"BorderColor="#999999"BorderStyle="None"BorderWidth="1px"CellPadding="3" Font-Size="10pt"GridLines="Vertical"Width="100%"><FooterStyle BackColor="#CCCCCC"ForeColor="Black"/><Columns><asp:BoundField DataField="stuID"HeaderText="学号"/><asp:BoundField DataField="stuName"HeaderText="姓名"/><asp:BoundField DataField="stuGrade"HeaderText="年级"/><asp:BoundField DataField="stuClass"HeaderText="班级"/><asp:TemplateField HeaderText="成绩"><ItemTemplate><asp:TextBox ID="txtScore"Width="30"runat="server"></asp:TextBox></ItemTemplate></asp:TemplateField></Columns><RowStyle BackColor="#EEEEEE"Font-Size="10pt"ForeColor="Black"/><SelectedRowStyle BackColor="#008A8C"Font-Bold="True"ForeColor="White"/><PagerStyle BackColor="#999999"ForeColor="Black"HorizontalAlign="Center" /><HeaderStyle BackColor="Blue"Font-Bold="True"ForeColor="White"/><AlternatingRowStyle BackColor="Gainsboro"/></asp:GridView></td></tr><tr><td align="center"><asp:ImageButton ID="imgBtnSubmitScore"runat="server" ImageUrl="~/Images/SubmitScore.GIF"OnClick="imgBtnSubmitScore_Click"/></td></tr><tr><td><asp:Label runat="server"ID="mess"Font-Size="Smaller" ForeColor="Red"></asp:Label></td></tr><tr><td align="center"><asp:HyperLink ID="HyperLink1"runat="server"Font-Size="10pt" NavigateUrl="teacherQueryElect.aspx">查看选课</asp:HyperLink> <asp:HyperLink ID="HyperLink2"runat="server"Font-Size="10pt" NavigateUrl="~/ModifyPwd.aspx">修改密码</asp:HyperLink></td></tr></table></div><br/></form></body></html>图5-3 教师用户提交成绩界面5.6 管理员用户添加课程代码及运行效果如下:<html xmlns="/1999/xhtml"><head runat="server"><title>课程详细信息</title></head><body leftmargin="0"rightmargin="0"><form id="form1"runat="server"><div align="center"><table style="font-size: 12px; font-family: Tahoma; border-collapse: collapse"id="table"width="450"border="0"runat="server"><tr><td align="center"><asp:Label ID="courceName"runat="server"Font-Size="16"ForeColor="red"></asp:Label><font size="4"> 的详细信息</font><br/><asp:Label ID="lblMessage"runat="server"ForeColor="Red"></asp:Label></td></tr><tr height="25"align="left"><td style="height: 25px"><br><b>课程名称:<asp:TextBox ID="txtName"runat="server"></asp:TextBox></b></td></tr><tr height="25"align="left"><td><b>教师姓名:<asp:TextBox ID="teaName"runat="server"></asp:TextBox></b></td></tr><tr height="25"align="left"><td style="height: 25px"><b>上课时间:<asp:TextBox ID="txtTime"runat="server"></asp:TextBox></b></td></tr><tr height="25"align="left"><td><b>上课地点:<asp:TextBox ID="txtAddress"runat="server"></asp:TextBox></b></td></tr><tr height="10"><td><hr size="1"></td></tr><tr><td align="left"><b>课程简介:</b><br/><asp:TextBox ID="txtDetails"runat="server"Height="100px"Width="100%" TextMode="MultiLine"BorderColor="Transparent"BorderStyle="Groove"BorderWidth="1px"Font-Size="9pt"></asp:TextBox></td></tr></table></div><br/></form></body></html>图5-4 管理员添加课程界面6.系统测试在系统测试中,我们首先对各个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。