TextBox3.Text = "";
}
else
{
Response.Write("对不起,您的用户名,密码或使用权限不正确或没有输入,请重新输入
");
}
}
else
{
//string s = Convert.ToString(Session["CheckCode"]);
Response.Write("验证码输入有误"); TextBox3.Text = ""; TextBox3.Focus();
}
}
//用户登陆模块同上(略)
//以下为用户注册模块的核心代码:
if (sqldata.ExceSQL("insert into orderTicket(user_name,user_password,name,sex,ID,address,mail,tel,email,info) values ('" + TextBox3.Text + "','" + TextBox2.Text + "','" + TextBox4.Text + "','" + RadioButtonList1.Text + "','" + TextBox5.Text + "','" + TextBox1.Text + "','" + TextBox12.Text + "','" + TextBox13.Text + "','" + TextBox14.Text + "','" + TextBox9.Text + "')"))//将用户的注册信息插入到相应表中
{
Session["username"] = TextBox3.Text;//将用户名保存下来,以便跳转到订票界面完成本用户的订票信息
Response.Write(CommonClass.MessageBox("添加数据成功,跳转到订票界面!!"));
Response.Redirect("traveler/searchTickets.aspx");
}
//对于列车基本信息设置,时刻设置,票价设置比较简单,代码注释这里省略
//以下为用户订票的核心模块
p
rotected void Button1_Click(object sender, EventArgs e)
{
SqlDataReader dr;
int nowsum = 0;//初始化订票数量为0
dr = sqldata.ExceDr("select tnum from charge where ticketNO=" + Convert.ToInt32(Request.QueryString["id"].ToString()) + "");//从数据库中获得剩余的票数
dr.Read();//读取数据
nowsum = Convert.ToInt32(dr["tnum"].ToString()) - Convert.ToInt32(TextBox11.Text);//得到订票后,还剩的票数
dr.Close();
if (nowsum > 0)//如果定票数小于剩余票数,则可以定购
{
//if (sqldata.ExceSQL("update charge set tnum=" + nowsum + " where ticketNO=" + Convert.ToInt32(Request.QueryString["id"].ToString()) + ""))
//{
if (sqldata.ExceSQL("update orderTicket set state=1,ticketnum="+Convert.ToInt32(TextBox11.Text)+",TNO='"+TextBox9.Text+"',ticketNO='"+Session["ticketno"].ToString()+"' where user_name='"+Session["username"].ToString()+"'"))//将该订票信息保存入数据库
{
Response.Write(CommonClass.MessageBox("您的订票信息已经提交,请等候审核!~~"));
}
else
Response.Write(CommonClass.MessageBox("操作失败!~~"));
// }
}
Else//所定票数超过了剩余票数,无法定票
{
Response.Write(CommonClass.MessageBox("您定的票数,超过了所剩的票数,请重新定购!!!~~"));
TextBox10.Text = "";
}
//以下为管理员审核模块的核心代码
protected void Button1_Click(object sender, EventArgs e)
{
SqlDataReader dr;
int nowsum = 0;
dr = sqldata.ExceDr("select tnum from charge where ticketNO=" +Convert.ToInt32(Session["ticketNO"].ToString())+ "");//获得剩余票数
dr.Read();
bsp; nowsum = Convert.ToInt32(dr["tnum"].ToString()) - Convert.ToInt32(TextBox9.Text);//卖出所订票数后,剩余的票数
dr.Close();
if (nowsum > 0)//如果卖出订票后,剩余的票数为0(所订票数小于总共剩余的票数)
{
if (sqldata.ExceSQL("update charge set tnum=" + nowsum + " where ticketNO=" + Convert.ToInt32(Session["ticketNO"].ToString()) + ""))
{
if (sqldata.ExceSQL("update orderTicket set state=2 where user_name='" + Session["usname"].ToString() + "'"))
{ //修改数据库中的相关信息(将该用户的订票信息改为售票信息)
Response.Write(CommonClass.MessageBox("审核通过!~~"));
Response.Redirect("shenHeManagement.aspx");
}
else
Response.Write(CommonClass.MessageBox("操作失败!~~"));
}
}
else
{
Response.Write(CommonClass.MessageBox("您定的票数,超过了所剩的票数,请重新定购!!!~~"));
TextBox10.Text = "";
}
}
第五章 系统测试
为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程举例说明如下:
5.1测试项目
在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。
(1)单元测试:
单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。
(2)组合测试
组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项
目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。
(3)确认测试
确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。
(4)系统测试
系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
(5)用户验收测试
在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。
在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
5.2测试方法
一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来对每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒子测试。黑盒测试又称为功能测试,白盒子测试又称为结构测试。
经过几个月的毕业设计,因为时间和任务的性质的关系,没有完全按照上述的测试方法进行系统的测试,但经过一些简单的步骤的测试,证明本系统具有相当程序的稳定性。
结束语
在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。网络在火车订票管理系统中的应用广泛,是未来的发展方向, 尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。毕业设计中的最大收获是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
致谢
时光飞逝,一转眼我的大学生活就要结束了。这四年我学到了很多很多的知识,是我人生的一个转折。我之所以能取得这些成绩,除了有自己的努力外,在我的学习,生活中还得到了很多人的关心和帮助。在此我要对他们表示衷心的感谢。
首先,我要感谢我的毕业指导老师。在连续数月的毕业设计中,他不遗余力地指导和帮助我。在他孜孜不倦的教诲下,我顺利地完成了毕业设计。龚老师对工作认真负责的态度,对学生无私的关怀,使我受益良多。我衷心地感谢他。
在这里我还要感谢所有指导过我的老师们,没有你们的培养我无法完成四年的大学学业。还有,我能有今天,是与我父母的辛勤培养分不开的,他们为我付出了一切。我将在以后的学习、工作中再接再厉,尽我最大的努力做到最好来报答父母的养育之恩。
参考文献
[1] 程不功.ASP.NET 面向对象程序设计.广东:电子科技出版社,1995.8.
[2] 刘子锐.ASP.NET数据库开发自学教程.北京:人民邮电出版社,2002.10.
[3] 萨师煊,王珊.数据库系统概论(第三版). 高等教育出版社,2002.3.
[4] 李建中,王珊.数据库系统原理.北京:电子工业出版社,1998.5.
[5] 李昭原.数据库原理与应用.北京:科学出版社,1998.5.
[6] 张龙卿.ASP.NET 数据库深入编程技术.北京:北京希望电子出版社,2002.1.
[7] 朱振元.ASP.NET 面向对象程序设计及其应用.西安:电子科技大学出版社,2000.11.
[8] 郑人杰,殷人昆,陶永雷. 实用软件工程.北京:清华大学出版社,1997.4.
[9] 萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,2002.3.
[10] 林琪超.软件开发环境.上海:上海交通大学出版社,1991.3.
[11] 黄思曾,陈仲驹.软件开发规范的实施文档.广州:中山大学出版社,1991.3.
[12] 张海莲,马琳.ASP.NET7.0组件应用实例.北京:电子工业出版社,2003.7.