《软件工程导论》实验报告

合集下载

软件工程导论实习报告

软件工程导论实习报告

一、实习背景随着信息技术的飞速发展,软件工程作为一门研究软件开发和维护的学科,其重要性日益凸显。

为了更好地理解和掌握软件工程的基本原理和方法,我参加了为期两周的软件工程导论实习。

本次实习旨在通过实际操作,加深对软件工程概念、方法、工具和过程的了解。

二、实习目的1. 熟悉软件工程的基本概念和原则。

2. 掌握软件开发的基本流程和方法。

3. 学习使用常用的软件开发工具。

4. 培养团队协作和沟通能力。

三、实习内容1. 软件工程基本概念在实习的第一周,我们学习了软件工程的基本概念,包括软件、软件工程、软件开发过程、软件质量等。

通过学习,我对软件工程的定义、目标和任务有了更清晰的认识。

2. 软件开发流程接下来,我们学习了软件开发的基本流程,包括需求分析、系统设计、编码、测试和维护等阶段。

通过实际案例分析,我了解了每个阶段的具体任务和目标。

3. 软件开发方法实习期间,我们学习了两种软件开发方法:瀑布模型和敏捷开发。

通过对比分析,我认识到敏捷开发在应对需求变更和快速迭代方面的优势。

4. 软件开发工具为了提高软件开发效率,我们学习了常用的软件开发工具,如版本控制工具(Git)、集成开发环境(IDE)、数据库设计工具等。

通过实际操作,我掌握了这些工具的基本使用方法。

5. 团队协作与沟通在实习过程中,我们分组进行软件开发项目。

通过团队协作,我学会了如何与他人沟通、协调和分工,提高了团队协作能力。

四、实习成果1. 完成软件开发项目在实习期间,我们分组完成了一个简单的软件开发项目。

通过实际操作,我掌握了软件开发的基本流程和方法,提高了编程能力。

2. 撰写实习报告为了总结实习经验,我撰写了这份实习报告。

通过回顾实习过程,我对软件工程有了更深入的理解。

3. 提高团队协作能力通过实习,我学会了与他人沟通、协调和分工,提高了团队协作能力。

五、实习体会1. 理论与实践相结合本次实习让我深刻体会到理论与实践相结合的重要性。

只有将所学知识应用于实际项目,才能真正提高自己的能力。

软件工程导论实验报告

软件工程导论实验报告

软件工程导论实验报告实验项目名称:Microsoft Visio 软件的使用日期2013年9月26日地点实验中心404【实验目的】1) 熟悉 Visio 的工作环境及组成;2) 掌握用 Visio 软件绘制图表的基本操作;3) 能熟练全用 Visio 软件绘制各种较复杂的专业图表;4) 掌握各种图表文档创建方法.【实验重点】要求能够熟练运用Visio软件所提供的菜单工具、模型等制作图形或图表。

能用Visio 软件所提供专业图形模板,来自行绘制出专业化、高质量的图形或图表【实验难点】使用Microsoft Visio来设计一个基本流程图【实验步骤】1、打开模板并向图表添加形状来开始创建图表2、在图表中移动形状并调整形状的大小3、向图表添加文本4、连接图表中的形状5、设置图标格式并保存(数据流图)【实验小结】熟悉了Microsoft Visio的的工作环境及组成,会基础地创建图标文档。

【实验评语】指导教师签名:【实验小结】能熟练地建立初始文件结构图,并能对其进行改进与优化。

【实验评语】指导教师签名:实验项目名称:软件详细设计日期11月16日地点实验中心404【实验目的】:1、完成系统的总体设计;2、完成系统的详细设计工作;【实验重点】确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。

【实验难点】进行软件系统的结构设计,逐个模块的程序描述。

【实验步骤】1、完成实验分析总体设计,确定详细设计方案;2、在进行构设计;3、然后对进行描述;4、详细设计【实验小结】能熟练的完成系统的详细设计方案。

【实验评语】指导教师签名:实验项目名称:UML用例图的设计和制作日期12月7日地点实验中心404【实验目的】:1、能够根分析系统的用例组成;2、正确确角色;3、能够分析系统的用例、活动者以及它们之间的关系。

【实验重点】使用visio正确画出用例图,并说明每一个用例的事件流。

软件工程导论实验报告-白盒测试-黑盒测试

软件工程导论实验报告-白盒测试-黑盒测试

.《软件工程导论》实验报告学生姓名:学号:班级:指导老师:专业:实验日期:.白盒测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试形成初步了解,并养成良好的测试习惯。

熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。

二、实验内容:1、被测试程序功能:求解系数为整数的方程ax2+bx+c=02、程序定义:键盘输入 3 个数字 a,b ,c,求解方程 ax2 +bx+c=03、测试环境: Windows8.1 、Eclipse4、说明:本次测试采用插桩测试法,由于程序比较简单,手动输入测试用例。

四、实验步骤1、程序流程图开始输入 a, b, ca=0 Y Y Y无穷多解b=0 C=0NN NX= 无解N无解b2-4ac>=0.YX1=x2=结束2、代码:import java.util.Scanner;public class test {public static void main(String[]args ) {Scanner sc= new Scanner(System.in );System. out .println( "请输入 3个整数 a,b,c:" );String as;String bs ;String cs;int a=0;int b =0;int c=0;double x, x1 , x2 ;as= sc.nextLine();bs = sc.nextLine();cs= sc.nextLine();try {a=Integer.parseInt (as );b =Integer.parseInt (bs );c=Integer.parseInt (cs);}catch (Exception e){System. out .println( " 输入错误 ");System. exit (0);}if (a == 0){if (b == 0){if ( c == 0)System. out .println(" 无穷多解 " );elseSystem. out .println(" 无解 " );}else{x = -( c / b );System. out .println( "x=" + x);}}else{double h = b * b - 4 * a*c;if (h<0)System. out .println(" 无解 " );else{x1 = (- b + Math. sqrt (h )) / (2 * a);x2 = (- b - Math. sqrt (h )) / (2 * a); System. out .println( "x1=" + x1 + "\tx2="+ x2 );}}}}3、流图:.4、程序基本路径:(1) 1 2 3 4 5 11 预期输出:无穷多解(2) 1 2 3 4 6 11 预期输出:无解(3) 1 2 3 7 11 预期输出: x=(4) 1 2 8 9 11 预期输出: x1= x2=(5) 1 2 3 10 11 预期输出:无解5、测试实验用例:路径覆盖编号测试用例覆盖路径对应输出1a=0 ,b=0 , 1 2 3 4 5 11无穷多解c=02 a=0 ,b=0 ,c=1 1 234 6 11 无解3 a=0 ,b=1 ,c=1 1 2 3 7 11 x=-14 a=1 ,b=2 ,c=1 1 2 8 9 11 x1=-1x2=-15 a=1 ,b=1 ,c=1 1 2 3 10 11 无解黑盒测试一、实验目的黑盒测试是常用的软件测试的方法,用这种方法测试时,把被测试程序当作一个黑盒,在不考虑程序内部结构和内部特性,测试者只知道该程序的输入和输出之间的关系或程序的功能的情况下,依靠能反应这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结构的正确性。

软件工程导论总结报告

软件工程导论总结报告

软件工程导论总结报告软件工程总结报告序言本期软件工程专业导论课程结束后,为圆满完结本期此课程的学习,特此总结个人学习所得以求些许回报先生无私教导。

主体第一节课主要讲述了软件工程各领域之间的联系以及贯穿始终的基础为何。

其中较为基础并相当重要使的应该是算法。

对于算法重要性与基础性的理解,我个人有比较切身的体验。

比如前不久的ACM竞赛,在比赛中我所在的小组以及当场几乎所有小组都遇到这样一个问题:超时—这无非就是个人设计的算法的效率不够高,这也证明我们对算法理论知识的匮乏(不清楚优化个人算法的方法)。

我对软件工程这一专业有了一个较为全面的把握,对我个人未来进取方向而言也起到了一定的指导作用。

第二节课老师带来了三位本专业的前辈向我们传授大学生活应如何度过以及对我等一些问题作出解答。

其中我个人印象深刻的是其中一位学姐PPt中引用李开复的那部分内容。

即试着记录下自己一整天做的所有事以及其所花费的时间,再仔细研究自己在哪些事上浪费了时间,应该如何整改。

我个人认为这方法可能有一定直观性,因为直观的数据更能深刻的反映真实和刺激一个人整改,但此法实施起来又太古板,中觉得生活有些教条化、章程化,缺乏新意与自由。

求上进,珍惜时间也无需以丧失人生情趣为代价。

还有就是学长再提潘老师曾讲过的那些重要、紧急优先次序。

他提到的个人的学习生活情况倒没什么深刻感,但我认为他引用的一番话较有道理,大概意思是比起个人兴趣更为优先的应该是谋生的本领,尤其是当自己感兴趣的正好是冷门时。

当掌握了一些实实在在有能保证自身良好发展前景后,再去做一些自己感兴趣的事也来得及。

于我而言,一个人尚不能独善其身,何求其兼济天下。

成己方成人就是如此道理。

第三节课主要讲解了大学学习生活中应着重的基础课以传递重基础的要旨。

据个人体会,其中英语科目实是基础中的基础,主要是为辨认单词(即代码变量以及注释)意义以达到理解他人算法并顺利接手他人接下来的工作。

企业和公司出于其本身利益主张雇方市场--讲究项目的可接手性,而不希望对现有人员的过分依赖。

软件工程导论报告

软件工程导论报告

软件工程导论报告实验报告课程名称实验题目学生学号实验目的:本课程实验的教学目标在于通过绘制数据流图、实体关系图、用例图、状态图等实验,重点熟悉软件设计中的逻辑模型设计方法及其绘制工具软件,从软件工程角度理解和掌握软件设计开发过程。

实验条件:电脑一台、能上网查阅资料。

实验项目一熟悉软件工程工具 1.实验目的、任务:通过创建、编辑、保存一个简单的Visio图形文件,让学生学习掌握Microsoft Office Visio 的基本用法,掌握使用Microsoft Office Visio绘制业务流程图、数据流图、功能模块图、软件结构图和软件界面的方法。

2.实验基本要求:熟练应用Visio绘制软件开发图形的基本操作。

3.实验内容:打开Microsoft Office Visio,按照给出的业务流程图、数据流图、功能模块图、软件结构图和软件界面,绘制出相同的图形。

实验结果:软件工程姓名日期班级 2021-6-10 实验项目二绘制数据流图和实体关系图 1.实验目的、任务:能够根据业务描述,分析设计并绘制其数据流图和实体关系图。

2.实验基本要求:基本掌握数据流图和实体关系图的分析设计方法。

3.实验内容:银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

要求用数据流图描绘本系统的功能,并用实体关系图描绘系统中的数据对象。

实验结果:数据流图: E-R图:实验项目三绘制用例图和状态图 1.实验目的、任务:掌握用例图分析方法和绘制方法,掌握状态分析方法和状态图的绘制方法。

2.实验基本要求:能够根据业务描述分析绘制用例图和状态图,能够熟练使用绘图工具软件绘制出用例图和状态图。

软件工程导论实验报告材料

软件工程导论实验报告材料

软件工程导论实验报告一、实验题目:学生成绩管理系统、图书借阅管理系统、工资管理系统、网络订餐系统、招聘考试成绩管理系统二、实验目标通过独立完成项目开发,加深对软件开发分析过程的流程和方法的理解,建立软件工程的思想,同时,明确软件开发的成本和时间管理的相关概念。

实验一实验要求:①.在实验题目列出的几个系统中选择一个作为自己要开发的软件系统,要求该系统有明确的功能需求,并建立系统的分析模型。

②.对系统进行需求分析,掌握ER图、DFD、DD的设计与编写③.熟悉Visio环境和基本操作,制作一个简单的系统流程图和数据流图、主要数据项的数据字典描述及主要加工的逻辑说明(自己选择结构语言、判定树、判定表等)。

④.撰写需求分析规格说明书用户需求分析作为图书管理系统,其主要的需求人员是借阅者,借阅者对其的要求可以大体概括如下:1)能按各种方式,比如书名、编号、作者等查询图书馆的藏书情况;2)能熟悉使用图书管理系统;3)能方便地借阅图书、续借图书、归还图书;4)能查询自己的基本资料、借阅图书情况;5)能方便图书管理员对图书的录入登记、注销;6)能方便对新生的登记或注销已经毕业学生的信息;7)能及时发布一些学院学生借阅图书超期情况、馆内藏书情况等。

功能说明1)、读者管理系统(1)未注册者可以进入注册系统进行注册;(2)已注册借阅者可按姓名、编号或身份证号登陆进入借阅者检索系统查询借阅者情况;(3)、已注册借阅者可按书名、出版社或作者对图书信息进行检索查询或提出预约请求;2)、图书管理员管理系统(1)图书管理员通过图书管理员身份认证进入图书管理员管理系统;(2)读者可借阅在库图书;(3)在规定期限内借阅者归还借阅图书;(4)读者在不违规情况下可继续借阅已借阅图书;(5)读者可以预约图书。

3)、系统管理员管理系统(1)系统管理员通过系统管理员身份认证进入系统管理员管理系统;(2)系统管理员可以对图书进行图书管理(如:查询、删除、修改图书资料或图书分类查询修改、删除管理);(3)系统管理员可以对借阅者进行学生管理(如:查询、删除、修改借阅者信息或借阅者类别修改、删除管理,查询浏览借阅者详细资料,包括借阅次数,登陆次数,最后登陆时间);4)、罚款管理系统(1)罚款管理员通过罚款管理员身份认证进入罚款管理系统;(2)罚款处理可以读取借阅信息表再生成超时罚款信息表,通过超时罚款信息表可以生成罚款单给罚款管理员;(3)图书管理员告知罚款系统图书超时未还,经罚款管理员鉴定后,对图书进行注销处理且罚款管理员对借阅者进行罚款处理。

软件导论实验报告范文

软件导论实验报告范文

一、实验目的通过本次实验,使学生掌握软件工程的基本概念、原理和方法,了解软件开发的流程,提高软件设计和开发能力。

二、实验内容1. 软件工程的基本概念2. 软件开发的流程3. 软件需求分析4. 软件设计5. 软件测试6. 软件维护三、实验步骤1. 软件工程的基本概念(1)了解软件工程的定义:软件工程是一门研究软件开发、维护和管理的技术科学。

(2)了解软件工程的基本原则:抽象、模块化、信息隐藏、可复用性、可维护性等。

(3)了解软件工程的基本方法:需求分析、设计、编码、测试、维护等。

2. 软件开发的流程(1)了解软件开发的生命周期:需求分析、设计、编码、测试、部署、维护。

(2)了解每个阶段的主要任务和目标。

3. 软件需求分析(1)了解需求分析的方法:访谈、问卷调查、观察等。

(2)了解需求分析的工具:UML(统一建模语言)、用例图、需求规格说明书等。

(3)以一个实际项目为例,进行需求分析。

4. 软件设计(1)了解软件设计的方法:模块化、层次化、面向对象等。

(2)了解软件设计的工具:UML、ER(实体-关系)图等。

(3)以一个实际项目为例,进行软件设计。

5. 软件测试(1)了解软件测试的方法:黑盒测试、白盒测试、灰盒测试等。

(2)了解软件测试的工具:Junit、Selenium等。

(3)以一个实际项目为例,进行软件测试。

6. 软件维护(1)了解软件维护的类型:错误修复、功能增强、性能优化等。

(2)了解软件维护的方法:版本控制、代码审查、自动化测试等。

(3)以一个实际项目为例,进行软件维护。

四、实验结果与分析1. 通过实验,掌握了软件工程的基本概念、原理和方法。

2. 熟悉了软件开发的生命周期和每个阶段的主要任务。

3. 学会了使用UML、ER图等工具进行软件需求分析和设计。

4. 掌握了软件测试的方法和工具,能够对软件进行有效的测试。

5. 了解软件维护的类型和方法,能够对软件进行有效的维护。

五、实验心得1. 软件工程是一门实践性很强的学科,需要我们在理论学习的基础上,不断进行实践。

学校内部工资管理系统《软件工程导论》实验报告

学校内部工资管理系统《软件工程导论》实验报告

《软件工程导论》实验报告学院:计算机科学与技术学院专业班级:指导教师:项目成员:项目课题:学校内部工资管理系统时间:目录小组情况 (1)一、可行性分析报告 (2)1.1 引言 (2)1.1.1 编写目的 (2)1.1.2 背景 (2)1.2 可行性分析的前提 (3)1.2.1 要求 (3)1.2.2 开发目标 (3)1.2.3 条件、假定和限制 (3)1.2.4 可行性研究的方法 (4)1.3 技术可行性 (4)1.3.1 简要描述 (4)1.3.2 与现有系统的优越性比较 (4)1.4 经济可行性 (5)1.4.1 成本 (5)1.4.2 效益 (5)1.5 社会因素可行性分析 (6)1.5.1 法律方面的可行性 (6)1.5.2 操作可行性 (6)1.6 结论意见 (6)二、软件需求规格说明书 (7)2.1 背景材料 (7)2.2 功能需求分析 (7)2.2.1 管理员用户设置 (7)2.2.2 普通用户创建 (8)2.2.3 用户登录 (8)2.2.4 远程信息接收与传递 (8)2.2.5 信息提醒 (8)2.2.6 职工编号的判断 (9)2.2.7 职工工资的计算 (9)2.3 性能需求分析 (10)2.3.1 运行环境 (10)2.3.2 精度 (10)2.3.3 响应时间 (10)2.3.4 内存占用 (11)2.3.5 安全与更新 (11)2.3.6 故障处理 (11)三、数据流程图 (12)四、功能分析图 (13)4.1 员工工资标准模块 (13)4.2 工资统计模块 (13)4.3 财务处理模块 (13)4.4 职工工资查询模块 (13)4.5 登录用户管理模块 (14)4.6 人事管理模块 (14)4.7 员工出勤管理模块 (14)五、数据字典 (15)六、概要设计 (16)七、详细设计说明书 (17)7.1 编写目的 (17)7.2 背景 (17)7.3 系统的结构 (17)7.4 程序流程图 (18)7.4.1 用户注册 (18)7.4.2 用户登录 (20)7.4.3 人事管理 (21)7.4.4 员工工资查询 (21)7.4.5 员工出勤管理 (21)7.4.6 财务部管理 (22)7.5 程序部分代码 (23)7.5.1 用户注册 (23)7.5.2 用户登陆 (29)7.5.3 人事部管理 (33)7.5.4 财务部管理 (36)八、测试报告 (39)8.1 单元测试 (39)8.1.1 用户注册登陆测试 (39)8.1.2 人事部测试 (41)8.1.3 财务部测试 (44)8.2 黑盒测试 (45)8.2.1 测试用例表 (46)8.3 测试总结 (48)九、参考资料 (49)小组情况项目题目:学校内部工资管理系统项目成员:项目负责人:任务分配表一、可行性分析报告1.1 引言1.1.1 编写目的可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。

软件工程导论实验报告

软件工程导论实验报告

目录第一章可行性分析报告 (2)1.1 引言 (2)1.2 可行性研究的前提 (3)1.3技术可行性分析 (4)1.3.1系统简要描述 (4)1.3.2处理流程和数据流程 (4)1.4操作可行性分析 (4)1.5经济可行性分析 (4)1.5.1支出 (4)1.5.2效益 (5)1.5.3收益/投资比 (5)1.5.4投资回收周期 (5)1.5.5敏感性分析 (5)1.6法律可行性 (6)1.7结论 (6)第二章需求分析报告 (6)2.1引言 (6)2.1.1 编写目的 (6)2.1.2 项目背景 (6)2.1.3 定义 (6)2.1.4 参考资料 (6)2.2任务概述 (7)2.2.1 目标 (7)2.2.2 假定和约束 (6)2.2.3 人力、资金、时间的约束 (6)2.2.4技术发展规律的约束 (7)2.3需求规定 (8)2.3.1对功能的规定 (8)2.3.2对性能的规定 (8)2.3.3精度 (8)2.3.4时间特性要求 (9)2.3.5旅客信息 (9)2.4数据描述 (9)2.4.1数据特征 (9)2.4.2系统数据流图 (9)2.5 运行环境规定 (11)2.5.1服务器端子系统运行要求 (11)2.5.2客户端子系统运行要求 (11)第三章概要设计 (11)3.1引言 (11)3.1.1编写目的 (11)3.1.1项目背景 (11)3.1.1定义 (12)3.2任务概述 (12)3.2.1目标 (12)3.2.2运行环境 (12)3.2.3需求概述 (12)3.3总体设计 (13)3.3.1处理流程 (13)3.3.2客户机程序流程 (13)3.3.3总体结构设计 (14)3.3.4功能分配 (14)3.4 接口设计 (14)3.4.1外部接口 (14)3.4.2软件接口 (15)3.4.3硬件接口 (15)3.4.4内部接口 (15)3.5 数据结构设计 (15)3.5.1 数据库数据结构设计 (15)3.5.2物理结构设计 (16)3.5.3 数据结构与程序关系 (17)3.6 运行设计 (17)3.6.1 运行模块的组合 (17)3.6.2 运行控制 (17)3.6.3 运行时间 (17)3.7出错处理设计 (17)3.7.1出错输出信息 (18)3.7.2出错处理对策 (18)3.8安全保密设计 (19)3.9维护设计 (19)第四章详细设计 (19)4.1引言 (19)4.1.1编写目的 (19)4.1.2项目背景 (19)4.1.3文中定义和缩写 (20)4.1.4参考资料 (20)4.2总体设计 (20)4.2.1需求概述 (20)4.3程序描述 (21)4.4代码设计 (21)4.5测试项目说明 (22)4.5.1测试项目名称及测试内容 (22)4.5.2测试用例 (22)第五章基于面向对象技术的机票预订系统开发 (23)5.1引言 (23)5.2需求分析 (23)5.3UML系统建模 (24)5.3.1机票预订系统的用例分析 (24)5.3.2机票预订系统的域类分析 (24)5.3.3机票预订系统的功能设计 (25)5.4数据库分析 (25)5.4.1E-R图分析 (25)5.4.2创建数据库 (26)5.5界面设计 (26)5.6代码分析和实现 (26)5.7小结 (27)第六章测试 (27)6.1测试计划 (27)6.1.1 编写目的 (27)6.1.2任务概述 (27)6.1.3 计划 (28)6.1.4测试项目说明 (29)6.1.5 条件 (29)6.2 测试分析报告 (30)6.2.1编写目的 (30)6.2.2 测试计划执行情况 (30)6.2.3软件需求测试结论 (31)6.2.4评价 (31)6.2.5建议 (31)6.2.6 测试结论 (31)第七章程序维护手册 (31)7.1 引言 (31)7.2 系统说明 (33)7.2.1 系统用途 (33)7.2.2安全保密 (33)7.2.3总体说明 (33)7.3 维护过程 (33)7.3.1 规则 (33)7.3.2 验证过程 (34)7.3.3 出错及纠正方法 (34)7.3.4 专门维护过程 (34)7.3.5 程序清单及流程图 (34)第八章总结性报告 (35)8.1 过程 (35)8.2 总结 (35)第一章可行性分析报告1.1 引言航空公司为方便旅客乘机,需要开发一个新机票预定系统。

软件工程导论实验报告

软件工程导论实验报告
.
.
ER模型图
程序流程图
.
.
数据字典
图书管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述 清楚。在定义的图书管理系统数据字典中, 主要对数据流图中的数据项、 数据流、 数据存储和处理过程进行说明。 (1)数据项描述
1)数据项名称:借书证号 含义说明:惟一标识一个借书证 类型:字符型 长度: 50
.
.
逻辑关系:不允许为空 2)数据项名称:用户名 含义说明:读者的名称 类型:字符型 长度: 20 逻辑关系:不允许为空 3)数据项名称:密码 含义说明:对用户名和操作员管理员进行加密 类型:字符型 长度: 10 逻辑关系:允许为空 4)数据项名称:性别 类型:字符型 长度: 10 逻辑关系:允许为空 5)数据项名称:所在系别 类型:字符型 长度: 10 逻辑关系:允许为空 6)数据项名称:所在班级 类型:字符型 长度: 10 逻辑关系:允许为空 7)数据项名称:操作员名称 类型:字符型 长度: 30 逻辑关系:不允许为空 8)数据项名称:操作员简称 含义说明:惟一标识一个操作员 类型:字符型 长度: 10 逻辑关系:不允许为空 9)数据项名称:操作员级别 含义说明:对操作员和管理员进行区分 类型:字符型 长度: 10 逻辑关系:不允许为空 10)数据项名称:图书编号 含义说明:惟一标识一个图书 类型:字符型 长度: 10 逻辑关系:不允许为空 11)数据项名称:图书名称 类型:字符型
( 2)读者可借阅在库图书; ( 3)在规定期限内借阅者归还借阅图书; ( 4)读者在不违规情况下可继续借阅已借阅图 书; ( 5)读者可以预约图书。 3)、系统管理员管理系统 ( 1)系统管理员通过系统管理员身份认证进入 系统管理员管理系统; ( 2)系统管理员可以对图书进行图书管理 (如:查询、删除、修改图书资料或图书分类查询 修改、删除管理); ( 3)系统管理员可以对借阅者进行学生管理 (如:查询、删除、修改借阅者信息或借阅者类别 修改、删除管理,查询浏览借阅者详细资料,包括借 阅次数,登陆次数,最后登陆时间); 4)、罚款管理系统

软件工程导论实验报告

软件工程导论实验报告

软件工程导论实验报告软件工程导论实验报告导论软件工程是一门涉及软件开发、测试和维护的学科,它的目标是提高软件开发的效率和质量。

为了更好地理解软件工程的概念和实践,我们进行了一系列的实验。

本报告将介绍我们在软件工程导论实验中所学到的知识和经验。

实验一:需求分析在软件开发过程中,需求分析是至关重要的一步。

我们的第一个实验是对一个虚拟的在线购物系统进行需求分析。

通过与团队成员的合作,我们学习了如何收集用户需求、分析需求的重要性和优先级,并将其转化为软件功能和特性。

实验二:软件设计软件设计是软件工程的核心环节之一。

在第二个实验中,我们学习了不同的软件设计模式和架构,如MVC(Model-View-Controller)和微服务架构。

通过实际操作,我们掌握了如何将需求转化为软件设计图,并理解了设计决策对软件开发的影响。

实验三:编码与测试编码和测试是软件开发的具体实施阶段。

在第三个实验中,我们使用了常见的编程语言和开发工具,如Java和Eclipse,来实现我们的软件设计。

同时,我们还学习了测试的重要性,并使用JUnit等测试框架进行单元测试和集成测试。

实验四:软件项目管理软件项目管理是确保软件开发项目按时、按质量完成的关键。

在第四个实验中,我们学习了项目管理的基本原理和方法,如项目计划、进度跟踪和风险管理。

通过实践,我们意识到合理的项目管理可以极大地提高团队的工作效率和项目的成功率。

实验五:软件质量保证软件质量保证是确保软件产品符合用户需求和质量标准的重要环节。

在最后一个实验中,我们学习了软件测试的不同方法和技术,如黑盒测试和白盒测试。

我们还了解了软件质量标准和认证,如ISO 9001和CMMI。

总结通过这一系列的实验,我们深入了解了软件工程的各个方面。

我们学会了如何分析用户需求、设计软件系统、实施编码和测试,并掌握了软件项目管理和质量保证的方法。

这些实验不仅提高了我们的理论知识,也培养了我们的团队合作和问题解决能力。

软件工程导论实验报告

软件工程导论实验报告

一、实验目的本次实验旨在通过实践操作,加深对软件工程基本概念、原理和方法的理解,掌握软件生命周期各个阶段的基本知识和技能。

通过实验,培养学生运用软件工程理论分析和解决实际问题的能力。

二、实验内容1. 软件生命周期概述- 软件生命周期:软件从提出需求、设计、开发、测试、部署到维护的整个过程。

- 软件生命周期模型:常见的软件生命周期模型包括瀑布模型、螺旋模型、敏捷开发模型等。

2. 需求分析- 需求分析:分析用户需求,明确软件功能、性能、接口等方面的要求。

- 需求分析方法:常用的需求分析方法包括结构化分析、面向对象分析等。

- 实验任务:分析某学生信息管理系统的需求,撰写需求分析报告。

3. 软件设计- 软件设计:根据需求分析结果,设计软件的架构、模块、接口等。

- 设计方法:常用的设计方法包括面向对象设计、结构化设计等。

- 实验任务:设计某学生信息管理系统的架构和模块,绘制类图、序列图等。

4. 编码- 编码:根据设计文档,编写软件代码。

- 编程语言:选择合适的编程语言进行编码,如Java、C++、Python等。

- 实验任务:根据设计文档,使用Java语言实现某学生信息管理系统的主要功能。

5. 测试- 测试:对软件进行测试,验证其功能、性能、可靠性等方面是否符合要求。

- 测试方法:常用的测试方法包括单元测试、集成测试、系统测试等。

- 实验任务:对某学生信息管理系统进行测试,编写测试用例,验证其功能。

三、实验过程1. 需求分析- 分析某学生信息管理系统的需求,包括学生基本信息、课程信息、成绩信息等。

- 撰写需求分析报告,明确系统功能、性能、接口等方面的要求。

2. 软件设计- 设计某学生信息管理系统的架构和模块,包括学生管理模块、课程管理模块、成绩管理模块等。

- 绘制类图、序列图等,展示系统模块之间的关系和功能。

3. 编码- 使用Java语言实现某学生信息管理系统的主要功能,包括学生信息的增删改查、课程信息的增删改查、成绩信息的增删改查等。

《软件工程导论》实验报告

《软件工程导论》实验报告

软件工程导论实验报告学院:班级姓名学号、2012年5月5日实验一::项目计划、分析和设计[ 实验日期] 2012年4月14日[ 实验目的]初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、设计文档。

[ 实验内容]根据周围的实际应用需求,自选一个小型的C语言应用项目,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求文档、设计文档。

[ 实验原理和步骤]当前的建模方法主要有传统的结构化分析、设计方法(SA/D)和面向对象分析、设计方法(OOA/D)两种,以下只对SA/D进行说明。

分析阶段:结构化分析(SA)是一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。

结构化分析方法的实质是采用一组分层数据流图及相应的数据字典作为系统的模型,从总体来看是一种强烈依赖数据流图的自顶向下的建模方法。

由事件列表、数据流图、实体关系图、数据流定义、数据字典、结构化英语、状态转换图等最终构成系统的分析模型。

设计阶段:分总体设计和详细设计两阶段。

总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务主要是设计每个模块的处理过程。

总体设计又称为概要设计或初步设计,它的基本目的就是回答‚概括地说,系统应该如何实现?‛这个问题。

总体设计通常由系统设计和结构设计两个阶段组成。

系统设计阶段确定一个合理的、具体的实现方案;结构设计阶段确定软件的结构,即确定系统由哪些模块组成,以及这些模块之间的相互关系。

【方案+体系结构】常用的结构化设计(SD)方法有面向数据流分析(DFA)的设计方法和面向数据的设计方法【如Jackson方法(JSD)和逻辑构造程序方法(LCP)(一般用于详细设计)】。

DFA方法以数据流图为基础,它定义了把DFD(变换型数据流,事务型数据流及混合型)变换成软件结构图(SC)的不同映射方法。

《软件工程导论》实验报告(小组)

《软件工程导论》实验报告(小组)

《软件工程导论》实验报告学院:计算机科学与技术学院专业班级:软件1702指导教师:辛雨璇项目成员:张玉、秦飞虎、徐连成项目课题:学生签到系统时间:2019年3月目录《软件工程导论》 (I)小组情况 (1)一、可行性分析报告 (2)1.1 引言 (2)1.2 可行性分析的前提 (3)1.3 技术可行性 (4)1.4 经济可行性 (4)1.5 社会因素可行性分析 (5)1.6 结论意见 (5)二、软件需求规格说明书 (6)2.1 背景材料 (6)2.2 功能需求分析 (6)2.4 数据流图 (9)2.5 数据字典 (11)2.6 加工说明 (17)2.7 E-R图 (22)三、总体设计-结构图 sc图 (23)四、详细设计说明书 (23)4.1 编写目的 (23)4.2 背景 (23)4.3 系统的结构 (24)4.4 程序流程图 (24)4.5 程序部分代码 (27)五、测试报告 (36)5.1 单元测试 (36)5.2 黑盒测试 (42)5.3 测试总结 (44)小组情况项目题目:学生签到系统项目成员:张玉、秦飞虎、徐连成项目负责人:张玉任务分配表一、可行性分析报告1.1 引言1.1.1 编写目的可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。

经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排,明确开发风险及其所带来的经济效益。

本报告经审核后,交项目负责人审查。

1.1.2 背景随着教育事业的飞速发展,我国教育水平已经跃上了一个更高的平台:普及九年义务教育,本科生,硕士研究生的大量扩招,各高等院校及地州院校的新建与升级,越来越多的学子走进了大学的殿堂,这意味着学生的考勤签到管理信息越来越复杂、繁重,传统的签到系统已无法承担当前的信息量,快速、高效的完成学生签到考勤系统的任务,无法减轻签到考勤管理人员的工作量与工作压力。

软件工程导论,数据流图实验报告

软件工程导论,数据流图实验报告

软件工程导论,数据流图实验报告软件工程导论实验报告实验项目名称: Microsoft Visio 软件的使用实验项目名称:软件概要设计实验项目名称: 软件详细设计日期11月16日地点实验中心404实验项目名称:UML用例图的设计和制作日期地点实验项目名称:UML类图的设计与实现篇二:软件工程上机实验报告(1-10)SHANGHAI UNIVERSITY软件工程实验总结学学姓院计算机工程与科学学院号名10122050 王杰陈圣波 2014.03指导老师日期实验一软件工程标准化文档一、实验目的1(了解国家标准GB/T8567-20062(熟悉软件产品开发文件的基本内容二、实验内容1. 搜索和下载国家标准GB/T8567-2006。

2. 通过阅读国家标准GB/T8567-2006,将以下文字填写完整:3. 通过阅读国家标准GB/T8567-2006,填写以下表格:实验2 数据流分析【说明】某直达列车车票预售系统接受顾客的订票和取票业务。

1(顾客为了提前订票,可向系统提供个人信息及其预订购的车次和日期,系统根据个人信息是否齐全和车次是否正确来判断订票单是否合格。

对于合格的订票单,系统通过查找座位表审核相应的车次是否有剩余票。

如果有剩余票,则记录顾客个人信息以及订票信息,并向顾客提供取票单。

2(到了可以取票的时间,顾客向系统提供取票单,在检查单据合格的情况下,系统想顾客提供火车票。

3(售票员可以利用系统查询各车次车票的已订购、已售出和剩余情况。

【问题1】画出系统的顶层数据流图。

【问题2】对问题1的结果进行分解,画出0层和1层数据流图。

(1) 系统的顶层数据流图(2)0层数据流图篇三:软件工程实验报告本科实验报告课程名称: 软件工程实验项目: 机票预订系统实验地点: 软件实验楼专业班级:学生姓名:指导教师:2015年 5月10日太原理工大学学生实验报告机票预订系统需求规格说明书实验报告一、实验目的与任务目的:确定项目要做什么及其可实施性,在此基础上完成系统的逻辑功能模型的建立。

软件工程导论实验报告

软件工程导论实验报告

软件工程导论实验报告摘要本实验主要是通过学习软件工程导论中的基本概念和方法,以及软件项目管理的过程和方法,来实现一个简单的面向对象程序。

本报告主要介绍了本实验的背景和意义、实验过程和结果、以及实验的评估和总结。

背景和意义软件工程作为计算机科学的一个重要分支,已经成为了当今信息化时代的支撑和基础。

因此,对于软件工程的学习和实践尤其重要。

本实验作为软件工程导论的一部分,旨在通过实践操作来加深对软件工程基础知识的理解和应用,并在操作中锻炼编程和协作能力。

实验过程和结果本实验分为三个主要的步骤:需求分析、设计和编码、以及测试和维护。

在需求分析阶段,我们先明确了该程序的功能和性能,以及其面向的用户和运行环境。

在设计和编码阶段,我们采用UML模型设计方法,完成了类图、用例图和时序图等建模工作,并在此基础上进行了程序的编写和调试。

在测试和维护阶段,我们进行了功能和性能测试,并根据测试结果对程序进行了调整和优化。

经过以上的实验过程,我们达到了以下的实验结果:1.程序实现了预期的功能和性能,基本满足了用户的需求。

2.程序的设计和编码遵循了UML建模的规范和约束,易于理解和维护。

3.测试结果表明,程序的稳定性和可靠性较高,在运行过程中没有出现过重大的错误或问题。

评估和总结本实验是一个比较成功的实验,对于我们的学习和实践都具有一定的帮助和意义。

通过这个实验,我们掌握了一些基本的软件工程知识和方法,比如需求分析、UML建模、编码和测试等,并将其应用到了实际的软件开发中。

同时,我们还学习到了一些编程和协作的技巧和方法。

然而,本实验还存在一些不足之处,比如时间的紧迫性、人员的不足和指导的不够到位等。

这些问题对于实验结果的影响并不太大,但对于我们自身的学习和提高还是需要加以改进和完善。

总之,本实验是一个有益而有意义的实践活动,相信在今后的学习和实践中,我们将会更好地运用所学知识和方法,为软件工程的发展和应用做出更大的贡献。

软件工程导论实验报告【最新】

软件工程导论实验报告【最新】

软件工程导论实验报告姓名:张胜男学号:091842153班级:软件0941指导老师:李伟安徽工业大学工商学院1、开发背景近年来,随着数据库技术的迅速发展以及数据库管理系统的光反应用,人们利用信息技术工作和搜索数据的能力大幅度提高,千千万万的数据库被应用于商业管理、政府办公、科学研究和工程开发等方面,特别是多媒体技术、网络技术与数据库的结合,使数据库有了更大的发展空间。

本文就公司人事管理系统的设计与实现进行了认真的分析研究,结合工作环境和管理需求,建立了一个高效、稳定的人事管理系统,达到了先进、安全、实用、可靠的目标,并对今后新的需求有很好的扩展性。

(1)公司人事管理系统开发的目的随着公司规模的扩大,经济体制的快速发展,公司组织管理会变得越来越庞大和困难,而信息的处理与使用也变得越来越重要。

它的内容对企业的决策者和管理者来说都至关重要,所以,人事管理系统应能够为用户提供充足的信息和快捷的查询手段。

建立一套人事管理系统能够加快物资的周转速度,提高生产效率,加强管理的信息化手段,提高本单位的经济效益。

从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。

因此,开发这样一套管理软件成为很有必要的事情。

人事管理的对象是一个单位或若干单位种的员工的基本信息,这些信息是在变化的。

人事部门要为本单位、上级部门提供准确的统计数据。

由于人员众多、数据复杂、统计管理工作困难,以往每做一项工作,都需要花费很多的时间和精力。

传统的人工管理方式有诸如效率低,保密性差,查找、更新、维护困难等各种各样的缺点。

因此,人事管理系统能够味用户提供充足的信息和快捷的查询手段。

使用计算机对人事资料进行管理,会给应用者带来很多方便,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高人事管理的效率,同时,这也是企业的科学化、正规化管理以及与世界先进管理技术接轨的重要条件。

(2)公司人事管理系统的意义人的管理是一切管理工作的核心。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011-2012《软件工程导论》实验报告学院:计算机学院班级:软件工程软112姓名:吴梦慧学号:119074202实验一:项目计划、分析和设计[ 实验日期] 2012 年 4 月20 日[ 实验目的]初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、设计文档。

[ 实验内容]要求学生根据周围的实际应用需求,自选一个小型的C语言应用项目,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求文档、设计文档。

[ 实验原理和步骤]当前的建模方法主要有传统的结构化分析、设计方法(SA/D)和面向对象分析、设计方法(OOA/D)两种,以下只对SA/D进行说明。

分析阶段:结构化分析(SA)是一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。

结构化分析方法的实质是采用一组分层数据流图及相应的数据字典作为系统的模型,从总体来看是一种强烈依赖数据流图的自顶向下的建模方法。

由事件列表、数据流图、实体关系图、数据流定义、数据字典、结构化英语、状态转换图等最终构成系统的分析模型。

分析阶段的重要文档有《可行性研究报告》、《项目计划》和《需求规格说明》。

设计阶段:分总体设计和详细设计两阶段。

总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务主要是设计每个模块的处理过程。

总体设计又称为概要设计或初步设计,它的基本目的就是回答“概括地说,系统应该如何实现?”这个问题。

总体设计通常由系统设计和结构设计两个阶段组成。

系统设计阶段确定一个合理的、具体的实现方案;结构设计阶段确定软件的结构,即确定系统由哪些模块组成,以及这些模块之间的相互关系。

【方案+体系结构】常用的结构化设计(SD)方法有面向数据流分析(DFA)的设计方法和面向数据的设计方法【如Jackson方法(JSD)和逻辑构造程序方法(LCP)(一般用于详细设计)】。

DFA方法以数据流图为基础,它定义了把DFD(变换型数据流,事务型数据流及混合型)变换成软件结构图(SC)的不同映射方法。

DFA设计技术实施的通用步骤:(1)复查并精化DFD;(2)确定DFD类型;(3)把DFD映射到系统模块结构,设计出模块结构的上层;(4)基于DFD逐步分解高层模块,设计出下层模块〈初步结构〉;(5)根据模块独立性原理,精化模块结构,得到更为合理的软件结构;(6)模块接口描述;(7)修改和补充数据词典;(8)制定测试计划。

详细设计阶段的任务主要是确定每个模块的处理过程,包括(1)确定每个模块的算法。

(2)确定每一个模块的数据组织。

(3)为每个模块设计一组测试用例。

(4)编写详细设计说明书。

详细设计阶段采用的方法是结构化程序设计(SP),与SA,SD方法衔接。

目标是给出可以直接用以编码的程序逻辑结构,强调清晰第一。

设计阶段的主要文档有《总体设计说明书》和《详细设计说明书》。

所有文档的格式可参照《软件设计文档国家标准_GB8567—88》具体步骤是:程序功能的文字陈述、图形描述;设计思路的文字描述和图形描述[ 实验报告要求]需求规格说明书。

主要功能:所编写程序欲实现插入删除、修改、查询、浏览、初始化、成绩录入、导入、导出等功能,并希望每次运行程序时将外部文件中的数据导入链表,程序结束时将链表中数据导出到文件。

选修课管理系统IPO图:输入处理输出总体设计说明书各模块功能:(1)main():主函数,控制整个程序的运行。

(2)menu():选单函数,显示菜单并接受选择。

(3)browse():浏览函数,将链表中各结点的数据依次输出。

(4)insert():插入函数,向链表中插入新结点,并使链表的各结点按学号升序排列。

(5)search():查找函数,在链表中按姓名或学号进行查找。

(6)delete():删除函数,在链表中按姓名或学号或序号删除结点。

(7)scorein():成绩录入函数,依次给链表中各结点的数据录入成绩。

(8)change():修改函数,对链表中各结点的数据进行修改。

(9)load():读入函数,从文件中将选课情况导入到链表。

(10)save():保存函数,将链表中选课情况保存到文件。

HIOP详细设计说明书:1. 2.3. 4.5.7. 8.[实验总结]①任何一个程序的设计都要经过计划、分析、设计。

需求分析是理解、分析和表达“系统必须做什么”的过程。

概要设计帮助我们明确了程序的总体流程,为编程指明方向。

详细设计将整个程序划分成一些功能模块,便于分工合作、查找错误,提高程序的目地性。

②流程图要符合单入口单出口原则。

实验二编码[ 实验日期] 2012 年 4 月20 日[ 实验目的] :培养良好的编码风格。

[ 实验内容] :根据详细设计的结果,按结构化思想编写代码,并对程序进行注释。

[ 实验原理和步骤] :编码风格强调“清晰易读”而不是个人技巧。

请注意变量或函数的名字要有意义,表达式和语句要一目了然,排版风格、循环语句风格要保持一致,函数宏的定义,常数的定义,注释要全面.。

注释包括序言性注释、函数模块注释和程序语句注释。

具体步骤:每个程序头部写序言性注释,每个函数前写模块注释,重要语句写功能性注释,变量或函数的名字要有意义,排版要美观。

[ 实验报告要求]//用单链表实现的选修课管理系统#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct st{ char num[10],name[9],bclass[11]; //学号、姓名、班级float score1,score2,score; //平时成绩、期末成绩、总评成绩struct st *next;}stud;char menu(); //选单stud*load(); //导入stud*search(stud*,int*); //查询void save(stud*); //导出void scorein(stud*); //成绩录入void insert(stud*); //插入void deletel(stud*); //删除void change(stud*); //修改void browse(stud*); //浏览//************************************************************************* main(){ char choice,c;int i;stud*head,*p;head=(stud*)malloc(sizeof(stud)); //准备好表头head->next=NULL;while(1){ choice=menu();switch(choice){ case '1':printf("浏览选课情况。

\n");browse(head);getchar();break;case '2':printf("插入选课学生。

\n");insert(head);break;case '3':printf("查询选课学生。

\n");p=search(head,&i);if(p!=NULL){printf("%2d%10s %8s %10s",i,p->num,p->name,p->bclass);printf("%5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);}else printf("未找到!");break;case '4':printf("删除学生记录。

\n");deletel(head);break;case '5':printf("学生成绩录入。

\n");scorein(head); break;case '6':printf("修改学生记录。

\n");change(head);break;case '7':printf("从文件中将选课情况导入链表。

\n");head=load();break;case '8':printf("将链表中选课情况保存到文件。

\n");save(head);break;case '9':printf("系统初始化。

\n");head=(stud*)malloc(sizeof(stud));head->next=NULL;printf("%d %d\n",head,head->next);break;case '0':printf("退出选修课管理系统。

\n");printf("是否保存当前数据到文件?(Y/N):");c=toupper(getchar());getchar();if(c=='Y')save(head);break;default:printf("输入错误!");}if(choice=='0')break;printf("\n按任意键继续......!");getchar();}}//******************************************************************* char menu(){char c;printf("\n\n\n\n\n\n\n = = = = =通讯录管理系统= = = = =\n");printf(" - - - - - - - - - -\n");printf(" 1.浏览选课情况\n");printf(" 2.插入选课学生\n");printf(" 3.查询选课学生\n");printf(" 4.删除学生记录\n");printf(" 5.学生成绩录入\n");printf(" 6.修改学生记录\n");printf(" 7.从文件中将选课情况导入打链表\n");printf(" 8.将链表中选课情况导出到文件\n");printf(" 9.系统初始化\n");printf(" 0.退出系统\n");printf("\n\n 请选择......\n\n\n\n\n");c=getchar();getchar();return c;}void browse(stud*head){ //将链表中各结点的数据依次输出int i=0;stud*p; //工作指针phead->next; //指向首结点printf("序号学号姓名班级平时成绩期末成绩总评成绩\n");while(p!=NULL){ printf(%2d %-10s %-8s %-10s",++i,p->num,p->name,p->bclass);printf(" %5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);p=p->next; //工作指针p移动}}//*********************************************************************** void insert(stud*head){ //插入新结点,并使链表各结点按学号升序排列char an,xh[10],xm[9],bc[11];stud*p,*q;do{ p=head;printf("请输入学生的学号、姓名、班级:\n");gets(xh);gets(xm);gets(bc); //输入数据if(!strcmp(xh,"0000"))return; //以“0000”作为结束标记while((p->next!=NULL)&&(strcmp(xh,p->next->num)>0))p=p->next; //查找新结点的插入位置q=(stud*)malloc(sizeof(stud)); //生成新结点由q指向strcpy(q->num,xh); //把数据送入新结点strcpy(q->name,xm);strcpy(q->bclass,bc);q->next=p->next;p->next=q;printf("继续吗?");an=toupper(getchar());getchar();}while(an=='Y');}//****************************************************************** stud*search(stud*head,int*i){ //在链表中按姓名或按学号进行查找int xz;char xh[10],xm[9];stud*p; //工作指针phead->next;*i=1; //指向首结点printf("1.按姓名查找0.按学号查找\n");scanf("%d",&xz);getchar();if(xz){ printf("请输入学生姓名:\n");gets(xm); //输入姓名while(p!=NULL&&strcmp(xm,p->name)!=0) //按姓名查找{ p=p->next;(*i)++;}}else{ printf("请输入学生学号:\n");gets(xh); //输入学号while(p!=NULL&&strcmp(xh,p->num)!=0) //按学号查找{ p=p->next;(*i)++;}}return p;}//*************************************************************** void deletel(struct st*head){ //删除结点int i,xz,n;char c,xm[9],xh[10];struct st*p,*q; //工作指针p=head; //指针p指向头结点if(p->nex!=NULL){ printf("1.按学号删除 2.按姓名删除 3.按序号删除\n");scanf("%d",&xz);switch(xz){ case 1:printf("请输入学生学号:\n");getchar();gets(xh); //输入学号while(p->next!=NULL&&strcmp(xh,p->next->num)!=0) //按学号查找p=p->next; break;case 2:printf("请输入学生姓名:\n");getchar();gets(xm); //输入姓名while(p->next!=NULL&&strcmp(xm,p->next->num)!=0) //按姓名查找p=p->next; break;case 3?printf("请输入序号:\n");i=1;scanf("%d",&n);getchar(); //输入序号while(p->next!=NULL&&i<n) //查找第n各结点{ p=p->next;i++;} break;default:printf("选择错误!\n");return;}q=p->next; //指针q指向p的直接后继if(q==NULL){ printf("未找到指定结点,没有执行删除!\n");return;}printf(" %-10s %-8s 请确认!(Y/N)",q-.num,q->name);c=getchar();getchar();if(tolower(c)=='y'){ p->next=q->next; //把结点从链表中删除free(q);return();} //释放q所指的结点}printf("无结点可删除!\n");}//***************************************************************void scorin(stud*head){ //依次给链表中各结点的数据录入成绩int i=0,ps,qm;stud*p; //工作指针p=head->next; //指向首结点printf("请输入平时成绩在总评成绩中所占的百分比:\n");scanf("%d",&ps);qm=100-ps;while(p!=NULL){ printf("%2d%10s %8s %10s\n",++i,p->num,p->name,p->bclass);printf("平时成绩期末成绩:\n");scanf("%f%f",&p->score1,&p->score2); //录入平时成绩和期末成绩p->score=p->score1*ps/100+p->score2*qm/100; //计算出总评成绩printf("%.51f %5.1f %5.1f\n",p->score1,p->score2,p->score);p=p->next; //工作指针p移动}getch();}//**********************************************************************void change(stud*head){ //对链表中指定结点的数据进行修改int i=0,xz;float x,y;stud*p; //工作指针do{ p=search(haed,&i); //查找要修改的结点if(p) //输出数据{ printf("%2d%10d %8s %10s",i,p->num,p->name,p->bclass);printf("%5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);}else printf("未找到!\n");}while(!p);printf("修改哪部分信息?\n");printf("1.修改学号\n");printf("2.修改姓名\n");printf("3.修改班级\n");printf("4.修改平时成绩\n")'printf("5.修改期末成绩\n");printf("0.不修改\n");scanf("%d",&xz);getchar();switch(xz){ case 1:printf("请重新输入学号:");gets(p->num);break;case 2:printf("请重新输入姓名:");gets(p->name);break;case 3:printf("请重新输入班级:");gets(p->blass);break;case 4:x=p->score1/p-score;y=1-x; //计算平时和期末在总评成绩中所占比例printf("请重新输入平时成绩:");scanf("%f",&p->score1);p->score=x*p->score1+y*p->score2; //重新计算总评成绩break;case 5:x=p->score1/p->score;y=1-x; //计算平时和期末在总评成绩中所占的比例printf("请重新输入期末成绩:");scanf("%f",&p->score2);p->score=x*p->score1+y*p->score2; //重新计算总评成绩break;}printf("%2d%10s %8s %10s",i,p->num,p->name,p->blass);printf("%5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);}//*******************************************************************stud*load() //从文件中将选课情况导入到链表{ FILE*fp;char fn[12];stud*head,*p,*q;puts("从哪个文件中将选课情况导入:");gets(fn);if((fp=fopen(fn,"rb"))==NULL){ printf("can't open file");exit(0);}q=head=(stud*)malloc(sizeof(stud));q->next=NULLlwhile(!feof(fp)){ p=(stud*)malloc(sizeof(stud));if(fread(p,sizeof(stud),1,fp)==1){ p->next=q->next;q->next=p;q=p;}}fclose(fp);return head;}//******************************************************************void save(stud*head) //将链表中选课情况保存到文件{ FILE*fp;char fn[12];stud*p;puts("将选课情况导出到哪个文件中:");gets(fn);p=head->next;if((fp=fopen(fn,"wb"))==NULL){ printf("can't open file");exit(0);}while(p!=NULL){ if(fwrite(p,sizof(stud),1,fp)!=1){ printf("File write error!\n");break;}p=p->next;}fclose(fp);}//*****************************************************************[注意事项] :模块的逻辑描述应该清晰第一、使用标准的、规范的控制结构、正确可靠[ 实验总结]:在此程序中,通过查找插入点的的方式使每次新结点之后都使链表仍然有序,而没有再考虑排序函数。

相关文档
最新文档