软件工程之学生成绩管理系统Java版_第1页
软件工程之学生成绩管理系统Java版_第2页
软件工程之学生成绩管理系统Java版_第3页
软件工程之学生成绩管理系统Java版_第4页
软件工程之学生成绩管理系统Java版_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 实验课成绩管理系统实验课成绩管理系统院(系)名称 信息工程学院 专 业 班 级 软件工程 学 号 080112040 学 生 姓 名 指 导 教 师 2010 年 月 日实验课成绩管理系统的设计与实现摘 要随着现代科学的发展,计算机的应用几乎进入了生活中的每一个领域。计算机技术在信息管理上也得到了越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。使用计算机管理学生实验课成绩,不但可以节省时间和人力,更能全面、有效的掌握学生实验课基本情况,及时获取最新的准确资料和信息。本软件是一个管理实验课成绩的系统,功能与实现方面有相当的针对性和实用性。本文详细的介绍了“学生成绩管理系统”的设计

2、思想,设计过程,本软件是在 Java 平台上开发的,采用SQL Server 作为数据库,严格按照关系数据库原理思想的有关规定进行数据库的设计,数据操作语言采用 SQL 中的有关命令,能方便的实现对数据库的操作与管理。本次课程设计实现了一个实验课成绩管理系统所需的功能,以及具体的设计步骤。通过需求分析以及概念设计,设计出了数据库的具体结构以及所需要功能个关系的联系。为操作人员的数据添加和查询提供了极大方便。关键词:Java SQL Server 分析 数据库 实验课成绩管理目目录录1 绪论.31.1 研究背景.31.2 开发意义.32 系统需求分析.42.1 系统功能分析.42.2 设计目标.

3、42.3 开发及运行环境.43 系统概要设计.53.1 数据库结构设计.53.1.1 数据库概念结构设计.53.1.2 数据库逻辑结构设计.53.1.3 数据库物理结构设计.6系统功能设计.83.2.1 数据库功能设计.83.2.2 系统功能结构设计.123.3 数据库的连接.124 系统模块详细设计.144.1 登录管理模块.144.2 系统主模块.144.3 各表操作模块.174.3.1 学生表操作模块.204.3.2 课程表操作模块.234.3.3 成绩表操作模块.255 系统运行与测试.285.1 系统调试.285.2 测试与运行.295.2.1 测试的目的.295.2.2 测试的原则

4、.295.2.3 测试的内容.305.2.4 测试用例.31 测试结论.32结 论.33参考资料.341 绪论 研究背景实验课成绩管理系统是学校管理实验课管理的重要工具,是学校不可或缺的部分。 随着在校大学生人数的不断增加,教务系统的数量也不断的上涨, 。学校工作繁杂、资料众多,这样一来依靠传统的人工来处理这些信息,显然是不能满足实际的需要,并且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。 1.2 开发意义随着科学技术的不断提高,计算机科学日渐成熟,其

5、强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对实验课成绩信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。随着学校的规模不断扩大,学生数量急剧增加,有关学生的实验课成绩信息量也成倍增长面对庞大的信息量,就需要有一种管理系统来提高学生管理工作的效率。因此,我们有必要开发一种实验课管理系统来管理这一庞大的数据。通过这个系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理

6、制度,提高学校教学质量与办学水平有着显著意义2 系统需求分析2.1 系统功能分析经过调查、分析,本系统设计实现以下功能。(1)可以让管理人员登录。(2)提供添加、删除和修改学生基本信息及成绩。 (3)提供 T-SQL 语句和基本查询两种查询满足不同的用户。(4)用户按不同的需求来查询不同的信息。2.2 设计目标通过分析,主要实现如下目标:(1)编写登录模块,设置登录用户的用户名和密码。(2)编写主模块,设置通过菜单选项进入系统不同的子模块。(3)编写查询操作模块。(4)编写对各表的删除,更新和插入操作模块。2.3 开发及运行环境1、硬件平台:(1) 。(2)内存:256MB 以上。2、软件平台

7、:(1)操作系统:Windows XP。(2)数据库:SQL Server 2005。(3)开发工具:Eclipse。3 系统概要设计系统概要设计首先对数据库的编码进行设计,方便数据信息的处理,其次是根据需求分析,对数据库的结构进行设计,建立相关的数据表,最后构画出系统功能的结构图。3.1 数据库结构设计 数据库概念结构设计根据软件工程所学知识和以上对本次毕业设计系统的分析,最终画出系统的实体学生课程学习性别住址 出生日期专业班级姓名学号课程号指导教师课程名成绩图 3.1.1 系统实体关系图3.1.2 数据库逻辑结构设计由 3.1.1 的实体关系图可以得到系统的关系模式为:学生信息(学号,姓名

8、,性别,专业,班级,住址, ,出生年月)课程信息(课程号,课程名,指导教师)学习信息(学号,课程号,成绩)3. 数据库物理结构设计1、数据库的设计CREATE DATABASE Students ( NAME = NStudents, FILENAME = ND:sqlStudents.mdf , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = NStudents_log, FILENAME = ND:sql_logStudents_log.ldf , SIZE = 1024KB , MAXS

9、IZE = 2048GB , FILEGROWTH = 10%)2、表的设计(1)user(用户信息表)图3.1 user的结构CREATE TABLE dbo.user(姓名 nvarchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,密码 nvarchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,权限 nchar(10) COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARY(2)Students_Information(学生信息表)图 Students_Information的结构CR

10、EATE TABLE dbo.Students_Information(学号 nchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL,姓名 nvarchar(10) COLLATE Chinese_PRC_CI_AS NOT NULL,性别 nvarchar(2) COLLATE Chinese_PRC_CI_AS NOT NULL,出生日期 smalldatetime NULL,专业 nvarchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,班级 nvarchar(20) COLLATE Chinese_PRC_CI_A

11、S NOT NULL, nvarchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,住址 nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_Students_Information PRIMARY KEY CLUSTERED (学号 ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY(3)Course(课程信息表)图3.3 Course的结构CREATE TABLE dbo.Course(课程号 varchar(6) COLL

12、ATE Chinese_PRC_CI_AS NOT NULL,课程名 char(16) COLLATE Chinese_PRC_CI_AS NOT NULL,指导教师 char(10) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_Course PRIMARY KEY CLUSTERED (Cno ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY(4)Score(成绩信息表)图3.4 Score的结构 CREATE TABLE dbo.Score(学号 nchar(10) COLLATE

13、Chinese_PRC_CI_AS NOT NULL,课程号 varchar(6) COLLATE Chinese_PRC_CI_AS NOT NULL,成绩 int NOT NULL, CONSTRAINT PK_Score PRIMARY KEY CLUSTERED (学号 ASC,课程号 ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY系统功能设计3.2.1 数据库功能设计(1)stu_score(学生成绩视图)图3.5 stu_score的结构CREATE VIEW dbo.stu_scoreASSELECT dbo.Stud

14、ents_Information.Sno AS 学号, dbo.Students_Information.Sname AS 姓名, dbo.Course.Cname AS 课程名, dbo.Score.SC AS 成绩FROM dbo.Course INNER JOIN dbo.Score ON dbo.Course.Cno = dbo.Score.Cno INNER JOIN dbo.Students_Information ON dbo.Score.Sno = dbo.Students_Information.Sno(3)stu_class(班级成绩视图) 3.6 stu_class 的结

15、构CREATE VIEW dbo.stu_classASSELECT dbo.Students_Information.Sno AS 学号, dbo.Students_Information.Sname AS 姓名, dbo.Students_Information.class AS 班级, dbo.Course.Cname AS 课程名, dbo.Score.SC AS 成绩FROM dbo.Course INNER JOIN dbo.Score ON dbo.Course.Cno = dbo.Score.Cno INNER JOIN dbo.Students_Information ON

16、dbo.Score.Sno = dbo.Students_Information.Sno(4)stu_cs(各科成绩视图)CREATE VIEW dbo.stu_csASSELECT dbo.Score.Sno AS 学号,dbo.Students_Information.Sname AS 姓名, dbo.Course.Cno AS 课程号, dbo.Course.Cname AS 课程名, dbo.Score.SC AS 成绩FROM dbo.Course INNER JOIN dbo.Score ON dbo.Course.Cno = dbo.Score.Cno INNER JOIN db

17、o.Students_Information ON dbo.Score.Sno = dbo.Students_Information.Sno(5)存储过程Stu_as(学生的平均分和总分)存储过程创建的代码:CREATE proc dbo.stu_asasselect Sname as 姓名,avg(SC)as 平均分,sum(SC) as 总分from Score sc,Students_Information swhere s.Sno=sc.Snogroup by Snameorder by 平均分DESCpersonal_score(个人成绩)存储过程代码:CREATE proc dbo

18、.personal_score(sname varchar(8)as select Sname as 姓名,Cname as 课程名,SC as 分数from Students_Information s,Score sc,Course cwhere s.Sno=sc.Sno and c.Cno=sc.Cno and Sname=snameclass_score(班级成绩)存储过程代码CREATE proc dbo.class_score(class char(20)asselect Sname as 姓名,class as 班级,Cname as 课程名,SC as 成绩from Stude

19、nts_Information s,Score sc,Course cwhere s.Sno=sc.Sno and sc.Cno=c.Cno and class=class order by Cname ,SC DESC(6)本系统所创建的触发器Students_Information 表的触发器: set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo CREATE trigger delson dbo.Students_Informationfor deleteas delete Scorewhere Score.Sno=(select Snofrom de

20、leted)Course表的触发器set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoCREATE trigger delon dbo.Coursefor deleteas delete Scorewhere Score.Cno=(select Cnofrom deleted)(7)本系统创建的索引Students_Information表索引pk_telCREATE NONCLUSTERED INDEX pk_tel ON dbo.Students_Information (tel ASC)WITH (SORT_IN_TEMPDB = OFF, DROP_E

21、XISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON PRIMARYCourse表索引cnameCREATE NONCLUSTERED INDEX cname ON dbo.Course ( Cname ASC)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON PRIMARY(8)约束Score表的约束CK_ScoreUSE StudentsGOALTER TABLE dbo.Score WITH CHECK ADD

22、 CONSTRAINT CK_Score CHECK (SC=(0) AND SC=(100)Students_Information表约束CK_Students_InformationUSE StudentsGOALTER TABLE dbo.Students_Information WITH CHECK ADD CONSTRAINT CK_Students_Information CHECK (gender=男 OR gender=女)3.2.2 系统功能结构设计根据需求分析和数据库的设计,构画出实验课成绩管理系统功能结构图,如图 3.6所示。实验课成绩管理系统统课程管理成绩管理学生管理基

23、本查询图3.6 系统功能结构图3.3 数据库的连接通过 JDBC 访问数据库:在系统级别上预先定义好数据源 DSN,在定义 DSN 的过程中指定数据源需要的 ODBC 驱动程序,数据库文件的实际路径和名字,在程序中需要引用预先定义好的数据源名(DSN)即可。本设计是通过 DSN 和数据库建立连接并访问数据库的,代码如下:private static String driver=sun.jdbc.odbc.JdbcOdbcDriver;private static String URL=jdbc:odbc:stu;/private static String driver=com.microso

24、ft.sqlserver.jdbc.SQLServerDriver;/private static String URL=jdbc:sqlserver:/localhost;Database=Students;private Connection con=null;private static Connection createConnection() try/ 显示加载驱动程序Class.forName(driver);return DriverManager.getConnection(URL,sa,6609); catch(SQLException e) System.out.print

25、ln(e.getMessage(); e.printStackTrace(); catch(java.lang.ClassNotFoundException e) System.out.println(Cant load Driver); return null;4 系统模块详细设计4.1 登录管理模块登录模块是为保证信息的安全,只允许由用户名和密码的用户进入对系统进行相关的操作,当输入正确时即可进入系统。登入界面 Login,效果图如图 4.1 所示。图 4.1 登录界面4.2 系统主模块系统主模块提供对查询和各个表的基本的操作。主模块 mainFrame,效果图如图 4.3 所示。图 4.

26、3 系统主模块主模块 mainFrame 的主要代码:public mainFrame() initComponents();public static void main(String args) installLnF();SwingUtilities.invokeLater(new Runnable() public void run() mainFrame m=new mainFrame();CloseOperation(mainFrame.EXIT_ON_CLOSE);m.setTitle(mainFrame);m.getContentPane().setPreferredSize(m

27、.getSize();m.pack(); m.setLocationRelativeTo(null);m.setVisible(true););private void jButton0ActionActionPerformed(ActionEvent event) if(f2!=null)f2.dispose();f2=new SQLTable();f2.setVisible(true);private void jButton2ActionActionPerformed(ActionEvent event) if(f3!=null)f3.dispose();f3=new newStu();

28、f3.setVisible(true);private void jButton3ActionActionPerformed(ActionEvent event) if(f4!=null)f4.dispose();f4=new newScore();f4.setVisible(true);4.3 各表操作模块 查询模块针对不同的用户可以使用 T-SQL 语句和基本的查询操作,可以显示用户所想查询的记录,以供参考或决策。查询模块 SearchFrame,效果图如图 4.4 所示。图 4.4 信息管理模块的主要代码:private void getTable(String sql) tryresu

29、ltSet=db.sqlQuery(sql); displayResultSet(resultSet); catch(SQLException sqlex) sqlex.printStackTrace(); private void getProc(String proc) try resultSet=db.sqlProc(proc); displayResultSet(resultSet); catch(Exception sqlex) private void displayResultSet(ResultSet rs)throws SQLException boolean moreRec

30、ords=rs.next(); Vector columnHeads=new Vector(); Vector rows=new Vector(); try ResultSetMetaData rsmd=rs.getMetaData();for(int i=1;i=rsmd.getColumnCount();+i)columnHeads.addElement(rsmd.getColumnName(i);do rows.addElement(getNextRow(rs,rsmd);while(rs.next();table=new JTable(rows,columnHeads);JScroll

31、Pane scroller=new JScrollPane(table); catch(SQLException sqlex) sqlex.printStackTrace(); public void actionPerformed(ActionEvent e)if(basesearch.isSelected()&si.isSelected()sql=select * from Students_Information;getTable(sql);else if(basesearch.isSelected()&ci.isSelected()sql=select Cno as 课程号,Cname

32、 as 课程名, teacher as 教师 from Course;getTable(sql);else if(basesearch.isSelected()&sc.isSelected()sql=select * from stu_score;getTable(sql);else if(basesearch.isSelected()&sas.isSelected()sql=call stu_as;getProc(sql);else if(basesearch.isSelected()&cs.isSelected() if(bycno.isSelected()sql=select * fro

33、m stu_cs where 课程号=+t.getText().trim()+;getTable(sql);elected()&bycname.isSelected()sql=select * from stu_cs where 课程名=+t.getText().trim()+;getTable(sql); else if(basesearch.isSelected()&ps.isSelected()&bysname.isSelected()sql=select * from stu_ps where 姓名=+t.getText().trim()+;getTable(sql);else if(

34、basesearch.isSelected()&ps.isSelected()&bysno.isSelected()sql=select * from stu_ps where 学号=+t.getText().trim()+;getTable(sql);else if(basesearch.isSelected()&classc.isSelected()sql=select * from stu_class where 班级=+t.getText().trim()+;getTable(sql);else if(sqlsearch.isSelected()inputQuery.setEnable

35、d(true);sql=inputQuery.getText().trim();getTable(sql);4.3.1 学生表操作模块 该模块是对学生表的操作包括查询对某一记录是否存在数据库中以备对该记录的更新、插入和删除,通过本模块可以将数据交互。学生表操作模块 stuFrame,效果图如图 4.5 所示。图 4.5 添加模块学生表操作模块 stuFrame 的主要代码: private void jButton0ActionActionPerformed(ActionEvent event) if(isNull()String mess=所有信息都必须填写!;JOptionPane.sho

36、wMessageDialog(this, mess);elseDBConn db=new DBConn();String sql=insert into Students_InFormation values(+jTextField0.getText().trim()+,+jTextField1.getText().trim()+,+jComboBox0.getSelectedItem().toString()+,+jTextField2.getText().trim()+,+jTextField3.getText().trim()+,+jTextField4.getText().trim()

37、+,+jTextField5.getText().trim()+,+jTextField6.getText().trim()+);db.updateSQL(sql);String message=你确定插入该学生信息吗?;JOptionPane.showMessageDialog(this, message);db.closeConnection();jLabel8.setText(该学生信息已成功插入!);private void jButton2ActionActionPerformed(ActionEvent event) DBConn db=new DBConn();String sq

38、l;if(jRadioButton0.isSelected()sql=select * from Students_Information where Sno=+jTextField0.getText().trim()+;else sql=select * from Students_Information where Sname=+jTextField1.getText().trim()+;tryResultSet rs=db.sqlQuery(sql);if(rs.next()jTextField0.setText(rs.getString(Sno);jTextField1.setText

39、(rs.getString(Sname);jComboBox0.setSelectedItem(rs.getString(gender);jTextField2.setText(rs.getString(major);jTextField3.setText(rs.getString(class);jTextField4.setText(rs.getString(tel);jTextField5.setText(rs.getString(address);jTextField6.setText(rs.getString(birthday);elseString message=抱歉!你查询的记录

40、不存在!;JOptionPane.showMessageDialog(this, message);catch(Exception e)db.closeConnection();private void jButton3ActionActionPerformed(ActionEvent event) String message=你确定删除该记录吗?;JOptionPane.showConfirmDialog(this, message);DBConn db=new DBConn();String sql=delete from Students_Information where Sno=+

41、jTextField0.getText().trim()+;db.updateSQL(sql);db.closeConnection();message=恭喜!删除成功!;JOptionPane.showMessageDialog(this, message);private void jButton4ActionActionPerformed(ActionEvent event) DBConn db=new DBConn();String sql=update Students_Information set Sno=+jTextField0.getText().trim()+,Sname=

42、+jTextField1.getText().trim()+,gender=+jComboBox0.getSelectedItem().toString()+,birthday=+jTextField6.getText().trim()+,major=+jTextField2.getText().trim()+,class=+jTextField3.getText().trim()+,tel=+jTextField4.getText().trim()+,address=+jTextField5.getText().trim()+ where Sno=+jTextField0.getText()

43、.trim()+;db.updateSQL(sql);db.closeConnection();String message=数据更新成功!;JOptionPane.showMessageDialog(this, message);4.3.2 课程表操作模块 该模块用于对课程表的操作包括查询、更新、插入和删除, 。课程表操作模块的主要代码:private void jButton0ActionActionPerformed(ActionEvent event) String message=你确定插入该记录吗?;JOptionPane.showConfirmDialog(this, messa

44、ge);DBConn db=new DBConn();String sql=insert into Course values(+jTextField0.getText().trim()+,+jTextField1.getText().trim()+,+jTextField2.getText().trim()+);db.updateSQL(sql);db.closeConnection();message=恭喜!你已成功插入该记录;JOptionPane.showMessageDialog(this, message);private void jButton2ActionActionPerf

45、ormed(ActionEvent event) DBConn db=new DBConn();if(jRadioButton2.isSelected()sql1=select * from Course where Cno=+jTextField0.getText().trim()+;else if(jRadioButton3.isSelected()sql1=select * from Course where Cname=+jTextField1.getText().trim()+;tryResultSet rs=db.sqlQuery(sql1);if(rs.next()jTextFi

46、eld0.setText(rs.getString(Cno);jTextField1.setText(rs.getString(Cname);jTextField2.setText(rs.getString(teacher);elseString m=抱歉!数据库中没有你查询的内容!请你重新输入!;JOptionPane.showMessageDialog(this,m);catch(SQLException e)private void jButton4ActionActionPerformed(ActionEvent event) String m=你确定删除吗?;JOptionPane.

47、showConfirmDialog(this, m);DBConn db=new DBConn();trydb.updateSQL(delete from Course where Cno=+jTextField0.getText().trim()+);catch(Exception ex)db.closeConnection();String message=记录已成功删除!;JOptionPane.showMessageDialog(this, message);private void jButton3ActionActionPerformed(ActionEvent event) DB

48、Conn db=new DBConn();String sql=update Course set Cno=+jTextField0.getText().trim()+,Cname=+jTextField1.getText().trim()+,teacher=+jTextField2.getText().trim()+ where Cno=+jTextField0.getText().trim()+;db.updateSQL(sql);db.closeConnection();String message=更新成功!;JOptionPane.showMessageDialog(this, me

49、ssage);4.3.3 成绩表操作模块 成绩表操作模块出对某一记录删除外与课程表操作相同,因为对成绩表中的记录可以通过课程表和学生表的触发器来实现级联删除。 成绩操作模块 ScoreFrame,效果图如图 4.7 所示。 图 4.7 删除信息对话框成绩表操作模块的主要代码:private void jButton3ActionActionPerformed(ActionEvent event) JOptionPane.showConfirmDialog(this, 你确定插入该信息吗?);DBConn db=new DBConn();String sql=insert into Score

50、values(+jTextField0.getText().trim()+,+jTextField1.getText().trim()+,+jTextField2.getText().trim()+);db.updateSQL(sql);db.closeConnection();JOptionPane.showMessageDialog(this, 你已成功插入该记录!);private void jButton2ActionActionPerformed(ActionEvent event) tryDBConn db=new DBConn();String sql=select * from

51、 Score where Sno=+jTextField0.getText().trim()+ and Cno=+jTextField1.getText().trim()+;ResultSet rs=db.sqlQuery(sql);if(rs.next()jTextField0.setText(rs.getString(Sno);jTextField1.setText(rs.getString(Cno);jTextField2.setText(rs.getString(SC);elseString m=你查询的记录不存在!;JOptionPane.showMessageDialog(this

52、, m);catch(SQLException e)private void jButton4ActionActionPerformed(ActionEvent event) DBConn db=new DBConn();String sql=update Score set Sno=+jTextField0.getText().trim()+,Cno=+jTextField1.getText().trim()+,SC=+jTextField2.getText().trim()+ where Sno=+jTextField0.getText().trim()+;db.updateSQL(sql

53、);db.closeConnection();String message=数据更新成功!;JOptionPane.showMessageDialog(this, message);5 系统运行与测试5.1 系统调试系统测试和系统调试都是开发软件过程中必不可少的测试,但它们在方法、目的、思想等方面存在很大的差异,主要体现在:(1)测试的目的是找出存在的错误;而调试的目的是定位错误、找出错误的原因并修改程序以修正错误;测试活动中发现的缺陷需要通过调试来进行定位;两者在目标、方法和思路上有所不同;(2)调试是编码阶段和缺陷修复阶段的活动,测试活动则可以贯穿整个软件的生命周期;(3)测试是从已知的条

54、件开始,使用预先定义的过程和步骤,有预知的结果;调试从未知的条件开始,结束时间无法预计;(4)软件测试可以计划,可以预先制定测试用例和过程,工作进度可以度量.而调试不能计划,进度不可度量;(5)调试是在测试之后,在方法,思路,策略上都有所不同;(6)测试的对像可以是文档和代码而调试的对像只能是代码。本着以上调试的原则及调试的方法和过程在系统设过程中进行了相关的调试,可以说调试是一个相当繁琐而又复杂的过程,在本系统调试过程中主要遇到的错误主要体现在以下几个方面:由于单词的拼写或者是输入法不当造成的程序错误;由于代码书写格式的不正确而带来的错误;由于自己的技术不够熟练和粗心导致代码位置不正确带来的

55、错误;由于操作顺序不当带来的错误;更有甚者有的单词明明是对的但系统提示错误,但只要对这些单词或词组剪切粘贴一下就显示正确,这一原因的出现可能是服务器在运行过程中所导致的,在老师和同学们的帮助下最终还是调试出了正确的程序,开发出了可以利用的系统。 测试与运行 测试的目的软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing) ,另一方面是确认软件以正确的方式来做了这个事件(Do it right) 。第二是提供信息,比如提供给开发人员或程

56、序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。 软件质量是由几个方面来衡量的:(1)在正确的时间用正确的的方法把一个工作做正确。 (2)符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。 (3)质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。 (4)质量也代表着它符合客户的需要。作为软件测试这个行业,最重

57、要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。 测试的原则软件包括源程序、数据和文档,因此,软件测试不是仅对源程序进行测试,开发各阶段得到的文档包括需求规格说明书、概要设计说明书、详细设计说明书等都是软件测试的对象。软件测试应力求遵循以下七条原则:(1)所有的测试都应追溯到用户需求。这是因为软件的目的是使用户完成预定的任务,满足其需求,而软件测试揭示软件的缺陷和错误,一旦修正这些错误就能更好地满足用户需求。(2)应尽早地和不断地进行软件测试。由于软件的复杂性和抽象性,在软件生命

58、周期各阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中去。在需求分析和设计阶段就应开始进行测试工作,编写相应的测试计划及测试设计文档,同时坚持在开发各阶段进行技术评审和验证,这样才能尽早发现和预防错误,杜绝某些缺陷和错误,提高软件质量。测试工作进行得越早,越有利于提高软件的质量,这是预防性测试的基本原则。(3)在有限的时间和资源下进行完全测试找出软件所有的错误和缺陷是不可能的,软件测试不能无限进行下去,应适时终止。因为,测试输入量大、输出结果多、路径组合太多,用有限的资源来达到完全测试是不现实的。(4)测试只能证明软件存在错误而不能证明软件没有错误,测试无法显示潜在的错误和缺陷,继续进一步测试可能还会找到其它错误和缺陷。(5)充分关注测试中的集群现象。在测试的程序段中,若发现的错误数目多,则残存在其中的错误数目也比较多,因此应当花较多的时间和代价测试那些具有更多错误数目的程序模块。(6)程序员应避免检查自己的程序。考虑到人们的心理因素,自己揭露自己程序中的错误是件不愉快的事,自己不愿意否认自己的工作;另一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论