摘 要
本系统主要完成了一个网上教材管理系统,其主要实现学生、教师、教材科的订书,学生、教师的领书功能,教材零售,因书的质量问题换书,报损处理。对订书的情况做统计,为师生提供各种条件的教材信息查询等功能。
本系统开发平台选用Visual Studio 2005,后台数据库为SQL Sever 2005 Express。本系统适用于各类型学校的教材科的库存管理工作,可以大大的提高了教材科工作的效率,减少失误。本文将对该系统的设计开发过程和具体功能做详细的介绍。
关键词:教材管理;教材领取;库存管理;ASP.NET;B/S
2.1 B/S结构
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。
2.2 ASP.NET与Visual Studio 2005
ASP.NET是建立在通用语言运行时刻库(CLR)上的应用程序框架。他用来在服务器端构建功能强大的web应用程序。
Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
2.3 SQL与SQL Sever 2005 Express
SQL是用来对存放在计算机中的数据库进行组织、管理和检索的语言。SQL一词是“Structured Query Language(结构式查询语言)”的缩写,是IBM公司San Jose实验室为System R而设计的语言,从1982年开始,美国国家标准协会(ANSI)即着手SQL标准化工作,1986年ANSI的数据库委员会批准了SQL作为关系数据库语言的美国标准,这就是第一个SQL标准,同时公布了SQL标准文本,在此后不久的1987年,国际标准化组织(ISO)也做出了同样的决定,目前的SQL标准是1992年指定的SQL—92标准,是一种用于与数据库进行交互的语言。SQL语言的极大普及是当今计算机工业中最引人注目的趋势之一。
SQL Server 2005 引入了 SQL Server Management Studio帮助实现开发和管理任务。在 Management Studio 中,可以开发和管理 SQL Server 数据库引擎 与通知解决方案,管理已部署的 Analysis Services 解决方案,管理和运行 Integration Services 包,以及管理报表服务器和 Reporting Services 报表与报表模型。这个 studio 与 Microsoft Visual Studio紧密集成。
在 studio 中,SQL Server 2005 提供了设计、开发、部署和管理关系数据库、分析对象、数据转换包、复制拓扑、报表服务器和报表以及通知服务器所需的图形工具。此外,SQL Server 2005 包含命令提示实用工具,可以通过命令提示符执行管理任务。
4.1 主框架
整个系统的布局采用了框架结构。顶部框架里是系统的标题。主框架又分左右两部分。左部框架是树型功能菜单,整个系统功能模块的跳转主要在这里完成。右部框架用来显示和操作各主要功能模块。
4.2 数据操作公共类
整个系统在几乎所有的模块中都会涉及到大量类似的数据库操作。所以把几个常用的方法抽出,放到一个公共的类中,供所有的模块调用。
首先建立一个和SQL Server 数据库之间的连接。代码如下:
SqlConnection sqlconn = new SqlConnection("Data Source=(local)\\sqlexpress;
Initial Catalog=bm;Persist Security Info=True;User ID=xsliang;Password=xiaosong");
DataCom方法用来返回受影响的结果的行数,但不返回任何东西。操作过程是首先打开连接,之后建立一个对 SQL Server 数据库执行的一个SQL 语句的对象,执行SQL语句,然后关闭数据库连接。具体代码如下:
public void DataCom(string sqlstr)
{
sqlconn.Open();
SqlCommand sqlcom = new SqlCommand(sqlstr, sqlconn);
sqlcom.ExecuteNonQuery();
sqlconn.Close();
}
rowNumber方法用来返回受影响的行数。但是和DataCom不同的是回返回一个具体的int类型的行数。
rowFirst方法用来返回一个object类型的查询后的第一行的第一列的结果。代码和上面的两个方法类似,只是执行ExecuteScalar方法来取得第一行的第一列的结果。
4.3 登录操作
登录页面的功能主要是供合法的用户根据自己的用户类型进行登录。网上教材管理系统登录模块运行的结果如图4-1所示。
图4-1 网上教材管理系统登录模块运行的结果
如果用户在没有登录的情况下选择其它功能模块会退回到登录界面。如果用户已经登录,可以在登录模块进行退出登录的操作。
在登录到这个页面或者刷新这个页面的时候,首先要进行一次session的判断。在输入用户名密码后,先确认输入框中有数据,将把输入框中的数据和数据库中的数据进行比较验证。如果一切通过,将产生两个session分别用来存放用户名和用户类型。之后跳转到相应的登录成功的页面。
4.4 订书操作
网上教材管理系统订书模块分为三个子模块,分别是学生订书模块、教师订书模块、教材科订书模块。主要功能是完成各类用户的订书操作。网上教材管理系统学生订书模块运行的结果如图4-2所示。
图4-2 网上教材管理系统学生订书模块运行的结果
当教材科工作人员以教材科类型用户登录到系统后,可进行教材的订书操作。首先填写教材使用的学年度,然后选择使用的系和班级,再选择使用的教材名,最后填写订书的数量,如果确认无误后,就可以点击确定订书。
在进入到这个模块时,首先还是判断是否有session存在,没有的情况下返回登录页面。存在session时,判断用户类型是否属于教材科用户,如果不是,跳转到管理页面。
在输入了订书信息选择确定后,如果一切无误,会进行插入操作。订购信息会先后插入到订书表和领书表。但是在领书表中不会插入领书时间、操作者、领书标记这些信息。成功后会返回订书模块。具体的实现代码如下。
string sql_dingshu = "insert into dingshu"
+"(number,time,name,class,department,xnd,jiaocaike,bookname)"
+"values('" + number + "','" + time + "','" + name + "','" + classname + "','" + department + "','" + xnd + "','" + jiaocaike + "','" + bookname + "')";
db.DataCom(sql_dingshu);
string sql_lingshu = "insert into lingshu"
+ "(number,class,department,xnd,jiaocaike,bookname,tag)"
+ "values('" + number + "','" + classname + "','" + department + "','" + xnd + "','" + jiaocaike + "','" + bookname + "','" + tag + "')";
db.DataCom(sql_lingshu);
Response.Redirect("st_dingshu.aspx");
4.5 领书操作
网上教材管理系统领书模块分为两个子模块,分别是学生领书模块、教师领书模块。主要功能是完成学生和老师的领书操作。网上教材管理系统学生领书模块运行的结果如图4-3所示。
图4-3 网上教材管理系统学生领书模块运行的结果图
如是学生领书操作,只需要选择相应的系和班级,点击查询后就可以看到已经领了的教材和需要领取的教材。教师领书模块操作类似,不同的只是根据教师名字选择。
在进行订书操作的时候,首先会判断用户是否选择了要领取的教材。如果没有选择具体的教材就进行领书操作,会弹出错误提示,之后返回。实现代码如下:
//判断是否选择了书
if (GridView1.SelectedIndex == -1 && GridView2.SelectedIndex == -1)
{
Response.Write("<script lanuage=javascript>alert('没有选择图书!');
location='javascript:history.go(-1)'</script>");
return;
}
string ID1;
if (GridView1.Visible == true)
{
ID1 = GridView1.SelectedDataKey.Value.ToString();
}
else
{
D1 = GridView2.SelectedDataKey.Value.ToString();
}
如果选择了具体的教材,接下来会通过领书标记判断选择的教材是否已经被领取了。如果书已经被领取了,也会弹出出错提示,之后返回。具体代码如下:
//加一个判断领书是否已经发生
string sql_1="select tag from lingshu where tag='"+true+"' and ls_ID='"+ID1+"'";
if (Convert.ToBoolean(db.rowFirst(sql_1)))
{
Response.Write("<script lanuage=javascript>alert('书已经领取!');
location='javascript:history.go(-1)'</script>");
return;
}
如果一切没有问题,会把领书的时间、操作者、领书标记填入领书记录中。然后返回领书模块。具体代码如下:
string sql="update lingshu set time='"+DateTime.Now+"',name='"+name+"',tag='"+true+"' where ls_ID='"+ID1+"'";
db.DataCom(sql);
Response.Redirect("st_lingshu.aspx");
4.6 报损 换书 零售操作
报损是当教材因教材科的原因造成损坏时,选择对相应的书进行报损处理。换书是书已经发给学生或教师后,因书自身的问题进行换书处理。零售是针对部分学生因各种原因需要再次购买教材时进行教材零售。网上教材管理系统的教材零售模块运行的结果如图4-4所示。
图4-4 材库存管理系统教材零售模块运行的结果图
报损、换书、零售其实都是特殊的领书过程,只对应于教材科的领书领书操作。如果教材科没有订购教材,这些操作则都不能进行。
退换和报损处理的操作几乎相同,选择需要报损或退换的教材,在有足够库存的情况下进行报损或退换操作,分别记入报损表中和退换表中,领书表中教材科领书的相应项目数量减少。在库存少于规定的阀值的时候会进行报警。在没有库存的时候会显示“无库存”并且禁止对此教材进行相应的报损、换书、零售处理。
零售模块与报损、换书不同的是,在选择好教材进行点击查询后会显示教材的价格。在购买后会显示购买的总价格并写入表中。
首先在点击查询之后,通过数据库得到报警阀值。代码如下:
Label4.Visible = false;
database db = new database();
//SqlCommand cmd = new SqlCommand();
GridView1.Visible = true;
//GridView2.Visible = false;
string number = "select number from number";
object test = db.rowFirst(number);
decimal test_de = Convert.ToDecimal(test);
得到报警阀值后,与得到的库存教材数量进行比较,如果小于库存阀值就会出现“库存不足”的报警。如果领书标记显示为真表示该教材已经没有库存了。
通过参数化查询得到教材的价格。
string price = "select price from jiaocai where bookname='"+DropDownList1.Text+"'";
Label1.Text = db.rowFirst(price).ToString();
pirce_de = Convert.ToDecimal(Label1.Text);
在点击了确定购买按钮后,首先判断是否选择了教材,然后判断是否输入了购买的数量。之后会做一个防止过量购买的安全检查,根据输入的购买数量看是根本没有库存还是库存不足。如果通过会根据购买的数量计算总的价格,购买后会对教材科领书的数量做相应的处理,如果该图书被购买完了,会做上领书标记防止再被购买。
4.7 查询汇总
汇总是根据教材使用的学年度,通过教材名或者系,对教材的订购情况进行汇总统计。网上教材管理系统教材汇总模块运行的结果如图4-5所示。
教材查询模块是一个面向所有用户的模块。在这个模块中可以通过组合查询、班级订购教材查询、授课教师查询来查询到自己需要的教材。网上教材管理系统教材查询模块运行的结果如图4-6所示。
图4-5 网上教材管理系统教材汇总模块运行的结果
图4-6 网上教材管理系统教材查询模块运行的结果
4.8 系统管理
这是本系统的系统管理部分。需要在登录的时候选择管理员才可以进入。图书管理主要是对图书信息的添加、删除、修改。网上教材管理系统图书管理模块运行的结果如图4-7。系统管理主要作用是设置报警阀值、添加删除修改用户、添加删除班级和系。网上教材管理系统系统管理模块运行的结果如图4-8。
图4-7 网上教材管理系统教材管理模块运行的结果
图4-8 网上教材管理系统系统管理模块运行的结果
教材管理模块可以对教材进行添加、删除、修改操作。进入模块后,可以直接点击“添加新教材”打开一个新的页面来输入教材的相关信息,在确认输入无误后点击确定,通过一个insert语句把新教材的数据放入数据库的教材表。另外,在进入教材管理功能模块的时,有一个“显示所有教材”按钮,可以选择教材对一些信息进行修改,之后用UPDATA使修改后的数据写入数据表,也可以选择删除来删除错误的教材数据。
另一个重要的模块是系统管理模块,虽然在功能上相对简单,但是在整个系统各个模块中起着重要作用。该模块的主要功能是管理用户,设置用户的类型。这些user在多个表中需要作为一个值被插入,也用于session判断中。另一个功能设置报警的阀值,以便教材科可以根据需要及时补充教材。还有一个功能是添加新的系和班级,这样由管理员输入到数据库再由教材课使用的时候被调用,可以减少教材科的工作量,也避免了出错。