软件工程程序设计
——学生成绩管理系统
班 级:
姓 名:
学 号:
专 业:
学 院:
指导老师:
完成日期
<<软件工程>>课程设计任务书
(08051051班)
一、设计目的:
学会运用软件工程的基本原理进行软件项目的分析、设计、实现、测试和维护,培养学生良好的软件工程能力和素质,为今后深入学习和从事实际软件工程研发奠定良好基础。
二、设计内容及要求:
1、可行性研究,查找资料,编写开发计划
2、需求分析,画出数据流图,编写软件需求规格说明书
3、概要设计,画出软件结构图
4、详细设计,采用盒图、判定树等工具设计模块的算法
5、编码,根据算法编写代码
6、测试,设计测试用例来查找漏洞并调试
三、参考题目:
1、学生成绩管理系统
2、停车场管理系统
3、求各城市间最短路径问题
四、相关要求:
1、分章节书写各个阶段的工作过程
2、绘制必要的图表(例如:数据流图、ER图、数据字典、软件结构图、盒图等);抓取相关界面图
3、报告书包括封面、任务书、教师评语、目录、章节内容、结束语、代码清单,最后装订成册
4、如发现报告书雷同,成绩均为不及格
5、设计时间:二周(分散实施)。
计算机工程系
指导教师:
年 月 日
教师评语
目录
【摘要】---------------------------------------------- 5
【关键词】-------------------------------------------- 6
【任务概述】------------------------------------------ 6
1,系统功能------------------------------------------- 6
2,运行环境------------------------------------------- 7
【可行性研究】---------------------------------------- 7
1 经济可行性------------------------------------------ 7
2 技术可行性------------------------------------------ 7
3 运行可行性------------------------------------------ 8
【系统需求分析】-------------------------------------- 8
【概要设计】------------------------------------------ 9
1, 处理流程------------------------------------------- 9
2, 功能分块------------------------------------------- 9
3, 总体结构-------------------------------------------10
【详细设计与实现】-------------------------------------11
1系统流程图------------------------------------------ 12
2系统功能设计---------------------------------------- 14
3 学生管理系统原代码----------------------------------16
【软件测试】------------------------------------------ 29
【课程设计总结】-------------------------------------- 30
【参考文献】------------------------------------------ 31
【摘要】
软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
围绕工程设计、工程支持以及工程管理已提出了以下四条基本原则:
(1)选取适宜的开发模型
该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其它因素间是相互制约和影响的,经常需要权衡。因此,必需认识需求定义的易变性,采用适当的开发模型,保证软件产品满足用户的要求。
(
2)采用合适的设计方法
在软件设计中,通常需要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
(3)提供高质量的工程支撑
工欲善其事,必先利其器。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
(4)重视软件工程的管理
软件工程的管理直接影响可用资源的有效利用,生产满足目标的软件产品以及提高软件组织的生产能力等问题。因此,仅当软件过程予以有效管理时,才能实现有效的软件工程。
【关键词】
学生信息管理系统 C++ SV 2005
【任务概述】
1.系统功能
这次我们做的这个学生信息管理系统是用来模拟管理学校学生信息的。
可用来查询,插入,更新,删除学生信息。
2.运行环境
软件环境:
Windows XP
Visual studio 2005
Oracle 9
硬件环境:
服务器端:处理器:Intel PentiumIII 以上
内存:推荐512或更高
客户机:处理器:Intel PentiumIII 以上
内存:256M以上推荐512
协议:TCP/IP
浏览器:Internet Explore 6.0
【可行性研究】
可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的。
1、经济可行性:
经济上的投入主要包括人力和物力。这次我们编写的学生信息管理系统的原理比较简单,实现起来也比较容易,所以物力上的投入比较少,主要的还是人力的投入,我们小组一共5人,人力资源比较丰富。所以我们小组完全可以承担这个系统的开发
2、技术可行性:
这次我们编写的学生信息管理系统主要功能是在界面上显示数据库中的学生信息,并且对数据库中的学生信息进行查询,插入,更新,删除操作。这些功能可以用visual studio 2005开发工具,用c#技术实现。而且,c#语言与c语言比较相似,学习起来也比较容易,可以在短时间内上手并完成这个学生信息管理系统。所以在技术上也是可行的。
3、运行可行性:
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个学生信息管理系统采用友好的交互界面,简洁明了,对数据库的操作也比较简单。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。因此,可以设计该系统的数据流图,建立数据字典。
【系统需求分析】
现在,几乎每个学校都有自己的学生信息管理系统,用来管理庞大的学生信息,如果没有一个有效,快速的计算机系统来支持,那工作量是非常大的。
我们设计的只是一个简单版的学生信息管理系统,用来模拟实现管理学生信息
1. 首先,我们要求学校内的所有人都可以方便地查询学生信息。
这就要求我们这个系统对学校内所有人都是公开的。
2. 只有特定的人才可以对学生信息进行添加,插入,更新以及删除的操作,比如学校的管理人员。
这就要求这个学生信息管理系统要有登录模块。
【概要设计】
1,处理流程
打开系统后,在欢迎界面上会有3个模块可以选择,即【文件】【登录】 【查看学生信息】
点击【登录】后,出现登录页面,按要求输入账号以及密码,系统检验正确后,就可以使用更高的权限了,欢迎界面上会多出两个模块【添加资料】 【管理信息】。
2,功能分块
1---【文件】用来退出系统
2---【登录】用来获得更大的权限
3---【查看学生信息】用来查看数据库中的学生信息。
4---【添加资料】用来向数据库内添加新的学生的信息
5---【管理信息】可以用来更新以及删除相应学生的信息。
3,总体结构
如图所示:
【详细设计与实现】
一、 系统流程图
系统总业务流程图
系统登录业务流程图
学生信息管理
数据字典
数据字典提供查阅对不了解的条目的解释。在数据字典中记录数据元素的下列信息:一般信息(名字,别名,描述等),定义(数据类型,长度,结构等),使用特点(值的范围,使用频率,使用方式—输入/输出/本地,条件值等),控制信息(来源,用户,使用它的程序,改变权等),分组信息(父结构,从属结构,物理位置—记录、文件和数据库等)。
学生数据字典
成绩数据字典
错误提示
为了防止用户的非法登录在每个页面的Page_Load事件中加入以下代码
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == null || "".Equals(Session["username"].ToString()))
{
DataAcess.Alert("你还未登陆请返回首页登陆!", "../login.aspx");
}
主要实现代码
用户登录代码实现:
protected void btn_login_Click(object sender, EventArgs e)
{
string strcmd = "";
int i;
DataAcess mydataAcess = new DataAcess( )
if (txtUsername.Text.Trim() != "" && txtPassword.Text.Trim() != "")
{
if (DropDownList1.Text == "管理员")
{
strcmd = "select count(*) from admin where 用户名='" + txtUsername.Text + "' and 密码='" + txtPassword.Text + "'";
temp = 1;
}
if (DropDownList1.Text == "教师")
{
strcmd = "select count(*) from teacher where 教师编号='" + txtUsername.Text + "' and 密码='" + txtPassword.Text + "'";
temp = 2;
}
if (DropDownList1.Text == "学生")
{
strcmd = "select count(*) from student where 学号='" + txtUsername.Text + "' and 密码='" + txtPassword.Text + "'";
temp = 3;
}
i = mydataAcess.ExecuteScalar(strcmd);
if (i == 1)
{
Session["Username"] = txtUsername.Text.ToString();
if (temp == 1)
Response.Redirect("admin//stuadmin.aspx");
if (temp == 2)
Response.Redirect("teacher//index.aspx");
if (temp == 3)
Response.Redirect("student//index.aspx");
}
else
Response.Write("<script LANGUAGE='javascript'>alert('账号或密码错误!');history.go(-1);</script>")
}
else
{
Response.Write("<script LANGUAGE='javascript'>alert('请输入账号或密码!');history.go(-1);</script>");
txtUsername.Text = "";
txtPassword.Text = "";
}
}
实现用户管理模块功能的代码:
public partial class admin_index : System.Web.UI.Page
{
public string CID;
public string sqlconn;
DataRow dtr;
SqlDataAdapter myadapter;
SqlCommandBuilder scb;
DataSet myDataSet;
SqlConnection mysqlconnection;
int returnValue;
private SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Grademanage"]);
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == null || "".Equals(Session["username"].ToString()))
{
DataAcess.Alert("你还未登陆请返回首页登陆!", "../login.aspx");
}
CID = Session["username"].ToString();
mysqlconnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Grademanage"]);
SqlCommand mysqlcommand = mysqlconnection.CreateCommand();
mysqlcommand.CommandText = "select 用户名,密码,备注 from admin where 用户名=" + "'" + CID + "'";
myadapter = new SqlDataAdapter();
myadapter.SelectCommand = mysqlcommand;
myDataSet = new DataSet();
mysqlconnection.Open();
int numberOfRow = myadapter.Fill(myDataSet, "admin");
mysqlconnection.Close();
DataTable tb = myDataSet.Tables["admin"];
dtr = tb.Rows[0];
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.ReadOnly = false;
TextBox4.Visible = true;
TextBox4.ReadOnly = false;
TextBox1.Text = "";
TextBox2.Text = "";
TextBox2.ReadOnly = false;
TextBox3.Text = "请记住新的密码以免造成不必要的麻烦!";
Label1.Text = "原始密码:";
Label2.Text = "新 密 码:";
Label3.Text = "小 提 示:";
Label4.Visible = true;
Button4.Visible = true;
Button5.Visible = true;
Button5.Text = "取消";
}
protected void Button6_Click(object sender, EventArgs e)
{
TextBox1.Text = (String)(dtr["用户名"]);
TextBox2.Text = "**********";
TextBox3.Text = (String)(dtr["备注"]);
Label1.Text = "用 户 名:";
Label2.Text = "密 码:";
Label3.Text = "备 注:";
Label4.Visible = false;
TextBox4.Visible = false;
Button4.Visible = false;
Button5.Visible = false;
}
protected void Button2_Click(object sender, EventArgs e)
{
Button4.Visible = true;
Button5.Visible = false;
TextBox4.Visible = false;
TextBox3.ReadOnly = false;
Label1.Text = "用 户 名:";
Label2.Text = "密 码:";
Label3.Text = "备 注:";
Label4.Visible = false;
TextBox1.Text = (String)(dtr["用户名"]);
TextBox2.Text = "**********";
TextBox3.Text = (String)(dtr["备注"]);
TextBox3.Focus();
}
protected void Button3_Click(object sender, EventArgs e)
{
Button4.Visible = true;
Button5.Visible = false;
Button4.Enabled = true;
Button5.Enabled = true;
TextBox4.Visible = false;
TextBox1.ReadOnly = false;
TextBox2.ReadOnly = false;
TextBox3.ReadOnly = false;
Label1.Text = "新用户名:";
Label2.Text = "密 码:";
Label3.Text = "备 注:";
Label4.Visible = false;
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
}
protected void Button7_Click(object sender, EventArgs e)
{
Label1.Text = "删除用户:";
Button4.Visible = true;
Button5.Visible = true;
Button5.Enabled = false;
TextBox4.Visible = false;
TextBox1.ReadOnly = false;
TextBox2.ReadOnly = false;
TextBox3.ReadOnly = true;
Label2.Text = "密 码:";
Label3.Text = "备 注:";
Label4.Visible = false;
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
Button4.Text = "确定";
Button5.Text = "提交删除";
TextBox3.Text = "请输入要删除的用户名和密码!";
}
protected void Button4_Click(object sender, EventArgs e)
{
SqlCommand coutsqlcommand = mysqlconnection.CreateCommand();
mysqlconnection.Open();
if (TextBox1.Text != "" && TextBox2.Text != "")
{
if (TextBox4.Visible == true)
{
coutsqlcommand.CommandText = "select count(*) as 数目 from admin where 用户名=" + "'" + CID + "'" + " and 密码=" + "'" + Convert.ToString(TextBox1.Text) + "'";
returnValue = (Int32)coutsqlcommand.ExecuteScalar();
if (returnValue == 1)
{
if (TextBox2.Text == TextBox4.Text)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('修改密码成功!')</script>");
scb = new SqlCommandBuilder(myadapter);
myDataSet.Tables["admin"].Rows[0]["密码"] = (String)(TextBox4.Text);
myadapter.Update(myDataSet.Tables["admin"]);
}
else
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('密码重复确认错误!')</script>");
}
else
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('密码错误!')</script>");
}
else
if (TextBox4.Visible != true)
{
if (Label1.Text == "用 户 名:" && Label2.Text == "密 码:")
{
myDataSet.Tables["admin"].Rows[0]["备注"] = (String)(TextBox3.Text);
scb = new SqlCommandBuilder(myadapter);
myadapter.Update(myDataSet.Tables["admin"]);
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('备注修改成功!')</script>");
}
if (Label1.Text == "新用户名:")
{
coutsqlcommand.CommandText = "select count(*) as 数目 from admin where 用户名=" + "'" + TextBox1.Text + "'";
returnValue = (int)coutsqlcommand.ExecuteScalar();
if (returnValue != 0)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('该用户已存在!')</script>");
}
else
{
DataRow dbr = myDataSet.Tables["admin"].NewRow();
dbr["用户名"] = (String)(TextBox1.Text);
dbr["密码"] = (String)(TextBox2.Text);
dbr["备注"] = (String)(TextBox3.Text);
myDataSet.Tables["admin"].Rows.Add(dbr);
scb = new SqlCommandBuilder(myadapter);
myadapter.Update(myDataSet.Tables["admin"]);
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('添加用户成功!')</script>");
}
}
if (Label1.Text == "删除用户:")
{
coutsqlcommand.CommandText = "select count(*) as 数目 from admin where 用户名=" + "'" + Convert.ToString(TextBox1.Text) + "'" + " and 密码=" + "'" + Convert.ToString(TextBox2.Text) + "'";
returnValue = (int)coutsqlcommand.ExecuteScalar();
if (returnValue == 1)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('输入正确,可以删除!')</script>");
Button5.Enabled = true;
Button4.Enabled = false;
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('密码或用户名错误!')</script>");
Button5.Enabled = false;
}
}
}
}
else
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请完善信息!')</script>");
mysqlconnection.Close();
}
protected void Button5_Click1(object sender, EventArgs e)
{
if (Label1.Text == "删除用户:")
{
SqlCommand coutsqlcommand = mysqlconnection.CreateCommand();
mysqlconnection.Open();
coutsqlcommand.CommandText = "delete from admin where 用户名=" + "'" + Convert.ToString(TextBox1.Text) + "'" + " and 密码=" + "'" + Convert.ToString(TextBox2.Text) + "'";
returnValue = coutsqlcommand.ExecuteNonQuery();
if (returnValue == 1)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('删除成功!')</script>");
TextBox1.Text = "";
TextBox2.Text = "";
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('未知错误!')</script>");
}
Button5.Enabled = false;
Button4.Enabled = true;
}
}
查看学生信息实现代码:
public partial class admin_Default : System.Web.UI.Page
{
SqlDataAdapter myadapter;
SqlCommandBuilder scb;
DataSet myDataSet;
SqlConnection mysqlconnection;
SqlCommand mysqlcommand;
protected void Page_Load(object sender, EventArgs e)
{
GridView1.PageIndex = 0;
selectAllstudent();
}
public void selectAllstudent()
{
mysqlconnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Grademanage"]);
string strcmd = "select * from student";
mysqlcommand = new SqlCommand(strcmd, mysqlconnection);
myDataSet = new DataSet();
myadapter = new SqlDataAdapter();
myadapter.SelectCommand = mysqlcommand;
mysqlconnection.Open();
int numberOfRow = myadapter.Fill(myDataSet, "student");
GridView1.DataSource = myDataSet.Tables["student"].DefaultView;
GridView1.DataBind();
Label1.Text = "总共有" + numberOfRow + "个学生";
mysqlconnection.Close();
}
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text.Trim()=="")
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('还没输入要查询的条件!')</script>");
}
mysqlcommand.CommandText = "select * from student where " + DropDownList1.SelectedValue + "='" + TextBox1.Text + "'";
myadapter = new SqlDataAdapter();
myadapter.SelectCommand = mysqlcommand;
myDataSet = new DataSet();
mysqlconnection.Open();
int numberOfRow = myadapter.Fill(myDataSet, "student");
GridView1.DataSource = new DataView(myDataSet.Tables["student"]);
GridView1.DataBind();
Label1.Text = "共有" + numberOfRow + "名符合条件学生";
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
selectAllstudent();
}
protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridView1.PageIndex = e.NewSelectedIndex;
selectAllstudent();
}
protected void Button2_Click(object sender, EventArgs e)
{
selectAllstudent();
}
}
修改学生信息实现代码:
public partial class admin_Default : System.Web.UI.Page
{
public string sqlconn;
DataRow dtr;
SqlDataAdapter myadapter;
SqlCommandBuilder scb;
DataSet myDataSet;
SqlConnection mysqlconnection;
int returnValue;
DataTable tb;
int numberOfRow;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == null || "".Equals(Session["username"].ToString()))
{
DataAcess.Alert("你还未登陆请返回首页登陆!", "../login.aspx");
}
mysqlconnection = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Grademanage"]);
SqlCommand mysqlcommand = mysqlconnection.CreateCommand();
mysqlcommand.CommandText = "select * from student where 学号=" + "'" + TextBox1.Text + "'";
myadapter = new SqlDataAdapter();
myadapter.SelectCommand = mysqlcommand;
myDataSet = new DataSet();
mysqlconnection.Open();
numberOfRow = myadapter.Fill(myDataSet, "student");
mysqlconnection.Close();
tb = myDataSet.Tables["student"];
Button2.Enabled = false;
Button3.Enabled = false;
}
protected void Button1_Click(object sender, EventArgs e)
{
if (numberOfRow != 0)
{
dtr = tb.Rows[0];
Button2.Enabled = true;
Button3.Enabled = true;
TextBox2.Text = Convert.ToString(dtr["学号"]);
TextBox3.Text = Convert.ToString(dtr["姓名"]);
TextBox4.Text = Convert.ToString(dtr["性别"]);
TextBox5.Text = Convert.ToString(dtr["系别"]);
TextBox6.Text = Convert.ToString(dtr["出生年月"]);
TextBox7.Text = Convert.ToString(dtr["家庭住址"]);
TextBox8.Text = Convert.ToString(dtr["入学时间"]);
TextBox9.Text = Convert.ToString(dtr["政治面貌"]);
TextBox10.Text = Convert.ToString(dtr["备注"]);
}
else
{
Button2.Enabled = false;
Button3.Enabled = false;
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('该学生不存在!')</script>");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
if (TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "" || TextBox5.Text == "" || TextBox8.Text == "")
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请完善信息!')</script>");
}
else
{
dtr = tb.Rows[0];
dtr["学号"] = TextBox2.Text;
dtr["姓名"] = TextBox3.Text;
dtr["性别"] = TextBox4.Text;
dtr["系别"] = TextBox5.Text;
dtr["出生年月"] = TextBox6.Text;
dtr["家庭住址"] = TextBox7.Text;
dtr["入学时间"] = TextBox8.Text;
dtr["政治面貌"] = TextBox9.Text;
dtr["备注"] = TextBox10.Text;
SqlCommandBuilder scb = new SqlCommandBuilder(myadapter);
myadapter.Update(myDataSet.Tables["student"]);
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('信息修改成功!')</script>");
}
}
protected void Button3_Click(object sender, EventArgs e)
{
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
TextBox5.Text = "";
TextBox6.Text = "";
TextBox7.Text = "";
TextBox8.Text = "";
TextBox9.Text = "";
TextBox10.Text = ""; }
创建数据库脚本
if exists (select * from sysobjects where id = OBJECT_ID('[student]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [student]
CREATE TABLE [student] (
[学号] [char] (10) NOT NULL,
[姓名] [char] (10) NOT NULL,
[性别] [char] (2) NOT NULL DEFAULT ('男'),
[系别] [char] (20) NOT NULL,
[出生年月] [smalldatetime] NULL,
[家庭住址] [char] (40) NULL,
[入学时间] [smalldatetime] NOT NULL,
[政治面貌] [char] (16) NULL,
[备注] [text] NULL,
[密码] [char] (10) NOT NULL)
ALTER TABLE [student] ADD CONSTRAINT [PK_student] PRIMARY KEY ( [学号] )
GO
系统测试和总结
系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
1. 在测试前,将详细设计书和程序进行手工debug,尽早掌握测试的结果。
2. 测试时,必须以"bug是一定存在的"心态进行。
3. 编程阶段必须注意的,从编程一开始,"bug是不允许的"作为编程的信念尽量利用已有的程序或者是模块进行模块化编程。
4. 对每一个测试情形,测试结果必须事先想象出来。
(1) 编程时已经考虑的情形,不能有错误发生。
(2) 编程时没有考虑的情形,要作相应的测试数据进行测试。
5. 程序的bug的发生,通常是程序员或者用户认为不会发生的情况下发生的
6. 很多的bug往往发生在对测试结果没有进行仔细完全的检查的基础之上。
7. bug的特性,发现bug越多的程序,潜在的bug也就越多。
8. 如果存在一个bug,别的bug存在的可能性时很高的。
(1) 不能只看到bug的表面现象,必须找到产生bug的原因。
(2) bug修改时,产生新的bug的可能性时非常高的。
(3) bug修改后,必须仔细检查和测试,保证新的代码时正确。
总结
经过四个多星期的时间,终于完成了这份课程设计报告书。在完成课程设计报告书的期间,我遇到过很多我无法解决的困难。正是因为有李老师同学的细心指导和帮助,我才能顺利的完成它。课程设计中,我在流程图方面做的不好,很多地方可能还存在漏洞和错误。 源代码也是在反复修改下,才勉强完成。之后,我才发现我的能力是多么的不足。
现在,在我完成这份课程设计后,我会汲取在这次编写过程中老师的教导,经验。在今后的学习过程中, 我会不断里加强动手能力,多练习,多求教,多巩固。争取得到老师和同学们的认可和好评。
再次感谢李老师!
参 考 文 献
[1]《计算机信息管理专业毕业设计案例摘选》
清华大学出版社 2002.5。
[2] 萨师煊,王珊 主编《数据库系统概论》(第三版)[S] 高等教育出版社 2004.7。
[3] 《软件工程》,张海涛 编著。
[4] 邵丽萍,张后杨,柯新生 《网页编程技术》 清华大学出版社,20##年1月 。
[5] 《数据结构实用教程》董凤服 刘畅 王茹 主编。
[6] 包锦阳 《大专生毕业论文(设计)写作指导》 浙江大学出版社,20##年6 月 。
[7] 周佩德.《数据库原理及应用》电子工业出版社。
[8] 王要武,《管理系统》,电子工业出版社,2003。
[9] 网上文章参考、求助等。