当前位置:文档之家› 软件工程实验报告

软件工程实验报告

1.1 实验一结构化需求分析一.实验类型图书馆管理系统假定校图书馆需要你设计一个图书馆管理系统,要求包括以下功能:●图书管理员可以管理馆藏图书,包括每本图书的藏书编号、书名、编著者、ISBN号、出版社、出版时间、入馆时间、馆藏数量(如果馆藏数量为1,则标明为孤本图书)、在馆数量、学科类别等(或其它你认为有用的信息);●管理员可以查询、统计所有图书、每一类图书或每一本书的借阅记录;●图书管理员可以管理所有读者的信息,包括读者类型(学生、教师、社会人士)、姓名、图书证编号、办证时间、证件状态(正常、挂失、冻结)等信息;●图书管理员可以查询和统计所有读者、每一类读者或每一个读者的借阅记录;●读者可以通过本系统查询馆藏图书;●读者可以通过本系统借阅读书。

但对于孤本图书或在馆数量为1的图书则不准外借;●管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年不归还图书的读者冻结其图书证;●读者可以通地本系统归还图书。

如果图书超期,则自动计算罚款金额。

二.实验目的1.掌握数据流的分析技术2.掌握软件需求分析的过程和方法。

3.熟悉项目开发计划和需求规格说明书的制定方法。

三.实验内容和要求1.用结构化数据流分析技术进行软件系统需求分析,得出系统的数据流图和数据字典。

2.正确运用图表工具进行表示。

3.按规范正确编写软件文档。

四.实验步骤1.理解所承担项目的业务流程和业务内容。

本软件项目是面向中小型学校、单位机构对于图书管理的基于服务的一款便捷式软件。

能满足一系列常用图书管理的功能模块,提供简介、准确的操作性,可以很大程度减少人为因素带来的数据错误,统计错误,系统逻辑错误。

并且规模小,很容易进行推广。

●本项目的参与对象有图书管理员及读者。

●对于读者,能通过该软件浏览馆藏的所有图书。

读者在图书馆找到自己喜欢的书后,能自行通过该软件操作完成借阅操作。

若读者是第一次借书,必须通过图书管理员进行添加读者记录,登记读者信息。

读者在登陆后方能完成借阅操作,对于孤本图书(即图书馆中馆藏只有一本的图书)则拒绝进行借阅操作。

在规定期限内,读者可以通过该软件完成还书操作,对于超期的图书,应将扣除一定罚款金额,对于超期一年不归还图书的读者冻结其图书证。

并且读者能修改个人信息。

●对于图书管理员,能管理自己和比自己低一级管理权限的管理员。

一级管理员能完成维护管理员的基本信息和二级管理员的一切操作。

二级管理员则能维护自己的信息和添加读者、添加图书的功能。

管理员可以对超期未归还图书的读者发送电子邮件进行提醒,对于超期一年不归还图书的读者冻结其图书证;2.按照系统的功能及性能要求,系统的作业范围等,确定软件系统的开发环境(操作系统、开发工具、程序设计语言等)。

根据软件编程经验,本系统将采用面向对象的设计方法,使用Eclipse开发工具,java窗体应用程序,操作系统使用Win8。

3.绘制数据流图、功能分析图等。

0层数据流图:4.编写数据字典、数据加工处理的描述等。

数据字典(数据字典卡片形式):5.阅读相关的软件开发的标准文档。

6.编写需求规格说明书。

1.2 实验二结构化软件设计一.实验类型设计性(总体设计)二.实验目的1.掌握结构化软件设计的过程和方法。

2.掌握设计说明书的编写。

三.实验内容和要求1.在需求分析的基础上,用结构化软件设计方法进行系统设计,给出系统合理的体系结构。

2.完成数据设计、软件结构设计、接口设计及过程设计。

过程设计:可以参看系统体系结构,对整个系统运行的状态都有详细的描述,不再赘述。

3.正确运用图表工具进行表示,如层次图、HIPO图、结构图、N—S图、PAD图、判定表及伪码等描述方式。

4.按规范正确编写软件文档。

四.实验步骤1.分析数据流特性,确定流类型(变换流/事务流),进行系统结构设计。

2.处理过程设计(Jackson方法)。

由Jackson方法的处理过程如下:(一)读者检索图书的输入输出数据结构的Jackson图(二)读者借阅图书的输入输出数据结构的Jackson图(三)读者归还图书的输入输出数据结构的Jackson图3.界面设计。

登陆界面:学生用户界面:学生图书查询界面:借阅图书界面:还书界面:4.存储文件格式设计(数据库结构设计)。

5.阅读相关的软件开发标准文档。

6.编写设计说明书(概要设计说明书或详细设计说明书)。

1.3 实验三面向对象的软件分析一.实验类型设计性实验二.实验目的掌握面向对象的软件分析方法三.实验内容和要求1.用面向对象的分析方法进行软件系统需求分析,得出系统的分析模型(对象模型、动态模型、功能模型)。

2.正确运用图表工具进行表示。

3.按规范正确编写软件文档。

四.实验步骤1.建立问题域的对象模型,确定类与对象、确定关联、确定属性等。

(用对象图表示)2.建立动态模型,定义行为、过程和事件。

(用顺序图、协作图、状态图、活动图等表示)主要活动描述如下读者借书顺序图活动图:图书的状态图:3.建立功能模型,表明系统内的数据如何由输入值得到输出值。

(用数据流图表示)4.编写分析文档。

1.4 实验四软件编码与测试一.实验类型设计性实验二.实验目的1.掌握软件测试的过程和方法。

2.掌握测试用例的设计方法。

3.熟悉测试计划说明书、测试记录与分析报告的编写。

三.实验内容和要求1.用程序设计所规定的编程语言,编写一段代码实现软件需求给出的一个功能。

每个小组至少有两个功能模块。

2.根据前面实验中完成的软件项目进行相应软件测试,制定测试计划、设计测试用例,特别是一些异常情况的处理。

3.模块的动态测试以黑盒法为主,辅以白盒法。

重要执行路径的测试使用白盒法。

白盒法必须先列出所有判定,再选择覆盖标准,根据不同的覆盖标准所列出的情况,设计测试用例。

4.集成测试重点测试模块的接口部分,要求保留测试过程所设计的驱动模块或桩模块。

5.应根据需求规格说明书所确定的系统功能和性能设计测试用例。

6.阅读相关的软件开发标准文档,正确编写测试计划、测试记录与分析报告。

四.实验步骤1.编写一段代码实现软件项目的一个功能。

2.制定测试计划,设计软件项目相应的测试用例。

3.测试数据,调试运行策略。

4.编写测试记录与分析报告。

5.完成实验报告。

附主要代码:(主要是与数据库相关代码)(一):注册文件JDBC_DRIVER = com.mysql.jdbc.DriverDB_URL = jdbc:mysql://localhost:3306/LibraryManageSystem DB_USER = rootDB_PASSWORD = mysql123(二):解析注册文件public class PropertyReader {static private Properties ps;static{p s = new Properties();t ry{//db.conf与PropertyReader.class位于同一目录下InputStream in =PropertyReader.class.getResourceAsStream("db.conf.txt");ps.load(in); //载入属性in.close();}catch(IOException e){e.printStackTrace();}}public static String get (String key){ //读取属性return (String)ps.getProperty(key);}}(三):获取数据库的Connectionpublic class ConnectionProvider {private String JDBC_DRIVER;private String DB_URL;private String DB_USER;private String DB_PASSWORD;public ConnectionProvider(){JDBC_DRIVER = PropertyReader.get("JDBC_DRIVER");DB_URL = PropertyReader.get("DB_URL");DB_USER = PropertyReader.get("DB_USER");DB_PASSWORD = PropertyReader.get("DB_PASSWORD");try{Class.forName(JDBC_DRIVER);}catch(ClassNotFoundException e){e.printStackTrace();}}public Connection getConnection(){Connection con = null;try{con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);}catch(SQLException e){e.printStackTrace();}return con;}}(四):增,删,改,查等操作(以查询为例,其他类似)public Book getBook(String id)throwsSQLException{ //返回用户信息Connection con = null;PreparedStatement pstmt = null;Book book = new Book ();con = provider.getConnection();String sql = "select * from Book where ID = ?";pstmt = con.prepareStatement(sql);pstmt.setString(1, id);ResultSet rs = pstmt.executeQuery();while(rs.next()) {book.setID(rs.getString("ID"));book.set Author(rs.getString("Author"));book.setName(rs.getString("Name"));book.setDate(rs.getString("Date"));book.setPrice(rs.getString("Price"));book.setIntro(rs.getString("intro"));}closeResultSet(rs);closeStatement(pstmt);closeConnection(con);return book;}。

相关主题