1、学校教材订购系统课程设计352020年4月19日文档仅供参考 软件工程课程设计题 目 学校教材订购系统 学 院 嘉兴学院 专 业 信息管理和信息系统 班 级 信息N052 学 号 01 07 15 学生姓名 颜幼幼 徐晶 俞丽 指导教师 张 云 编写日期 2月21日 一、开发计划:1、系统叙述 在21世纪的今天,随着计算机技术和计算机网络的发展,人们逐渐开始步入信息时代。经过Internet网络人们能够浏览各类信息,发送电子邮件,传送文件,参与BBS,网上娱乐,远程教育,远程医疗。人们日常工作,生活中的许多事情都已经能够在网上轻松简单的完成。互联网因为它简单的操作和强大的信息量,逐渐成为了人们
2、工作中的好帮手和生活中不可缺少的重要组成部分。近年来,互联网也开始涉及学校的教材订购,教材订购系统近几年在各高校逐渐得到广泛的应用。但有些教材征订系统,依然存在着在教材管理和征订方面半手工半信息化的状况。所谓半手工半信息化是教材科有详细的教材资料,并把她们存放在电子文档中。每次需要信息时,在电脑中找到对应文档提取所需信息,把所需的信息打印或手抄出来。即教材信息没有形成一个大型的整体的数据库,而且还没有对这些数据进行操作的网络应用程序。当前国内大部分的学校都是这种情况。针对这一情况,我们研究和开发了“学校教材订购系统”作为深入研究解决这一问题办法的初步尝试。2、问题的提出及发展背景随着教学数量的
3、提高,对软件质量的要求也越来越高,因此,教师、学生对教材的订购了越来越重视,希望获取教材的过程简单,方便,快速,因而,做一个好的订购系统是十分重要的。 订购是指教师或学生向工作人员提供要采购的教材,经工作人员审查后,发给教师或学生发票,然后去书库去领取教材,但工作人员发现书库中缺货时,要及时的向采购部报告,采购部要及时的进货,然后,工作人员来修改记录。3、目标系统叙述本系统主要解决经过ASP.NET程序制作WEB应用程序,经过该应用程序实现对数据库的整合以及对数据库的操作。数据库的整合就是把现在的零散的数据库经过分类,综合整理成一个大型的数据库。所需数据都能够从里面调用,数据库操作主要指添加,
4、删除,查询等数据库基本操作。系统的设计首先着眼的是网络,学生或教师能够经过本系统向教材订购人员提交所需教材的详细信息,教材订购系统能够统计教材信息。因此本系统方便了学校教材订购部门的工作,提高了工作效率。主要功能包括:1、收集数据。将学生教师的订书单和缺书通知单单收集起来。 2、打印报表。产生待购教材表、进库表和出库表等各种统计报表3、可行性分析及开发计划在技术上的可行性分析,本系统可细化为两个子系统:销售系统和采购系统销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。采购系统的主要工作过程为:若是
5、脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书通知给教材发行人员。当书库中的各种书籍数量发生变化(包括领书和进书时),都应修改相关的书库记录,如库存表或进/出库表。在对现行系统的情况调查的基础上,得出系统的逻辑模型。二、需求分析1、需求定义说明书此教材采购系统分为两个模块:采购系统和销售系统。具体见下图层次数据流图。销售系统模块:提交购书单、审核购书单、开发票、登记购书纪录、返回领书单、修改和维护数据库中相应的表。采购系统模块:发缺书台州单、登记缺书纪录、拟订待购书信息、发进书通知单、修改和维护数据库中相应的表。 教材管理信息系统的服务对象为全校师生员工,系统的使用对象
6、为教务处教材管理人员及书库管理员。系统主要完成以下具体功能: (1)预定新书 购书者购买书库暂时没有的书,能够进行预订,由教务处工作人员进行采购。(2)购书 购书者到财务室办理缴费手续,然后凭此手续去书库取书。(3)书出库 书从书库领出,管理员修改书库记录。(4)书入库 采购人员把采购的书送入书库,管理员修改书库记录。(5)书库维护 对现有的书分类、统计、增添新书目或删除不存在的旧书目录等,一般由书 库管理人员来完成。2、数据流图 将数据流图模块中的内容进一步细化,便于理解与设计。学生信息包括:姓名、学号、购书日期、采购书籍名称、书籍编码、书籍数量、单价、联系方式。老师信息包括:姓名、编号、购
7、书日期、采购书籍名称、书籍编码、书籍数量、单价、联系方式。书籍信息包括:书籍名称、书籍编码、价格、现有数量、出版社、作者。购书单信息包括:日期、书籍名称、数量、学生(老师)姓名、购书人员编号。缺书单信息包括:日期、书籍名称、数量、学生(老师)姓名、发行人员编号。发行人员信息包括:书籍名称、数量、日期、发行人员编号、联系方式。采购人员信息包括:书籍名称、数量、日期、采购人员编号、联系方式。将细化的数据流图用图形表示出来:如下图 领书单学校教材订购系统教材发行人员学生、教师 订书单 验证订书单 发票、登记缺书单领书库采购人员书 代购材料表单 出库表 购书 进书通知单取书 图2-1 教材订购系统数据
8、流程图在数据流图分解时,每个变动都可能引出新的问题。这些问题的回答能够到处数据字典的新条目,发现后及时更正。随着分析过程的深入,经过不断地提问和问答,把软件系统定义得越来越准确详细。最终就能对系统的功能要求有一个较全面的认识。应当高度重视:经过各层数据流图和数据字典把对系统的完整认识描述出来,并作为正式文档保存。三、概要设计(系统设计): 1、系统功能模块结构图根据需求分析,学校教材订购系统功能模块结构图如下:销售子系统销售子系统提交购书单审核购书单领书修改库存纪录返回领书单登记购书纪录开发票采购子系统采购子系统修改相应的表登记缺书纪录发进书通知单发缺书通知单2、数据库概要设计(E-R图)学校
9、教材订购系统中,其主要的实体分别为用户(教师和学生)、教材管理人员,经分析后,得到主要E-R图,如图所示。 书 籍 价格库存量 出版社 编号 书籍名 工 作 人 员 工号 备 注 性别 职位 姓 名 电 话 教师或学生 性 别 姓 名 编 号 进一步对学校教材订购系统的销售过程和采购过程进行数据流程分析,本系统应当具有如下的数据项和数据结构:开发过程中建立了名为book的数据库,下设book07、book08、adminlist等表如图3-1所示:图3-1 book数据库图表asminlist用于存放系统管理员和老师或学生的登陆用户名和密码,其中帐号为主码,如图3-2 adminlist图所示
10、。 图3-2 adminlist图表book07用于存放过去两个学期中计算机系所有已定教材的信息,其中书号为主码,如图3-3表book07图所示。 图3-3 表book07图表book08用于存放本学期需要征订的教材,同样,书号为主码,如图3-4表book08图所示。 图3-4 表book08图四、详细设计根据功能模块用程序流程图进行详细设计和各模块详细设计说明书如下:销售子系统模块程序流程图:开始提交购书单 N审核购书单 1错误显示 Y开发票 登记购书记录 N错误显示 审核登记 Y发领书通知单 修改相应表 N审核修改 错误显示 Y结束采购子系统模块程序流程图:开始发缺书单 审核缺书单 错误显
11、示 登记缺书 审核登记 错误显示 修改数据库的表 审核修改 错误显示 发进书通知单 结束五、界面设计及主要代码本系统主要有登陆界面load.aspx,显示书目信息及功能模块选择页面book.aspx,添加新记录页面new.aspx,添加历史记录页面history.aspx和history1.aspx,修改记录update.aspx和update1.aspx以及删除记录delete.aspx八个页面组成.其中登陆与用datagrid两大模块的代码编写与设计.具体设计如下:5.1 登陆界面 当单击确定按钮时,连接数据库,确定输入的帐号和密码是否匹配,跳转到书目的页面,若不匹配,则弹出帐号错误或密码
12、错误的提示。如图5-1所示 图5-1具体代码如下:Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click Dim str As String Dim passstr As String passstr = Trim(CStr(TextBox2.Text) str = & TextBox1.Text & Dim sql As String = select * from adminlist where 帐号= & Trim(str) 在数
13、据库中搜索帐号为textbox1.text的数据 Dim connstr As String = server=localhost;uid=sa;pwd=;database=book Dim myconn As New SqlClient.SqlConnection(connstr) Dim da As New SqlClient.SqlDataAdapter(sql, myconn) Dim ds As New DataSet da.Fill(ds, adminlist) Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.Sq
14、lCommandBuilder(da) If ds.Tables(adminlist).Rows.Count = 1 Then判断帐号密码是否和数据库匹配 If passstr = Trim(ds.Tables(adminlist).Rows(0)(密码) Then Response.Redirect(book.aspx) Else Response.Write(密码错误!) End If Else Response.Write(用户名不存在!) End If End SubEnd Class5.2用datagrid显示数据首先建立datagrid,经过连接数据库,将数据显示在datagrid
15、中。如图5-2所示图 5-2 书目页面book.aspx具体代码如下:Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load binddata()End SubSub binddata() Dim myconnection As New SqlConnection(initial catalog=book;uid=sa;pwd=) Const strsql As String = select * from book08 order by 书号 D
16、im mycommand As New SqlCommand(strsql, myconnection) Dim myda As New SqlDataAdapter myda.SelectCommand = mycommand Dim myds As New DataSet myda.Fill(myds) DataGrid1.DataSource = myds DataGrid1.DataBind() End Sub5.3 添加历史书目 (1)history.aspx在登陆系统并选择插入历史书本后,进入添加历史书目的页面,决定选择哪条记录进行添加。如图5-3插入历史书目图所示图5-3 插入历
17、史书目图 在单击左侧的选择后,自动跳转到update1.aspx,根据所选择的书目,进行相应的修改后添加到记录中去。具体代码如下:页面登陆事件代码:Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then binddata() End If End Sub连接数据库: Sub binddata() Dim myconnection As New SqlConnection(“initial ca
18、talog=book;uid=sa;pwd=“) Const strsql As String = “select * from book07 order by 书号” Dim mycommand As New SqlCommand(strsql, myconnection) Dim myda As New SqlDataAdapter Myda.SelectCommand = mycommand Dim myds As New DataSet Myda.Fill(myds) DataGrid1.DataSource = myds DataGrid1.DataBind() End Sub确定所
19、选择的行的数据,并把该行相应的内容分别经过session变量储存下来。Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand Dim b_no As TableCell = e.Item.Cells(1) Dim b_name As TableCell = e.Item.Cells(2) Dim b_a As TableCell = e.Item.Ce
20、lls(3) Dim b_b As TableCell = e.Item.Cells(4) Dim b_c As TableCell = e.Item.Cells(5) Session(“a”) = b_no.Text Session(“b”) = b_name.Text Session(“c”) = b_a.Text Session(“d”) = b_b.Text Session(“e”) = b_c.Text Response.Redirect(“history1.aspx”)End SubButton_click事件,重定向到book.aspx页面 Private Sub Button1
21、_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Response。Redirect(“book.aspx”) End SubEnd class(2)history1.aspx页面:经过上一个页面的选择后,该页面进行修改并添加的操作。如图4-4修改添加记录图所示:图5-4 添加记录图该页面中将征定时间和数量的值用textbox表示,是为了方便在插入历史书目的时候修改它的时间和它的数量。当管理员修改完成后,则可单击确定添加操作,将数据添加到 的数据库中。具体代码如下:页
22、面登陆代码:Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not IsPostBack Then Dim str As String str = “ & Label6.Text & “ Dim sql As String = “select * from book07 where 书号 =“ & Trim(Session(“a”) Dim connstr As String = “server=localhost;uid=sa;pw
23、d=;database=book” Dim myconn As New SqlClient.SqlConnection(connstr) Dim da As New SqlClient.SqlDataAdapter(sql, myconn) Dim ds As New DataSet Da.Fill(ds, “book07”) Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da) Label6.Text = ds.Tables(“book07”).Rows(0)(“书号”) Label7.
24、Text = ds.Tables(“book07”).Rows(0)(“书名”) Label8.Text = ds.Tables(“book07”).Rows(0)(“作者”) TextBox1.Text = ds.Tables(“book07”).Rows(0)(“征定时间”) TextBox2.Text = ds.Tables(“book07”).Rows(0)(“数量”) End If End Sub修改后添加到数据库的代码:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventAr
25、gs) Handles Button1.Click Dim str As String Dim litem As ListItem str = “ & Label6.Text & “ Dim sql As String = “select * from book08 where 书号=“ & Trim(str) Dim connstr As String = “server=localhost;uid=sa;pwd=;database=book” Dim myconn As New SqlConnection(connstr) Dim da As New SqlDataAdapter(sql,
26、 myconn) Dim ds As New DataSet da。Fill(ds, “book08”) Dim myrow As DataRow Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da) If ds.Tables(“book08”).Rows.Count = 1 Then Response.Write(“此书已存在”) End If myrow = ds.Tables(“book08”).NewRow myrow(“书号”) = Trim(Label6.Text) myrow
27、(“书名”) = Trim(Label7.Text) myrow(“作者”) = Trim(Label8.Text) myrow(“征定时间”) = Trim(TextBox1.Text) myrow(“数量”) = Trim(TextBox2.Text) ds.Tables(“book08”).Rows.Add(myrow) da.UpdateCommand = dacomm.GetUpdateCommand da.Update(ds, “book08”) Response.Redirect(“book.aspx”) End Sub单击返回按钮后,重定向到history.aspx的代码:Pr
28、ivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Response.Redirect(“history.aspx”) End SubEnd Class5.4 删除记录在登陆系统后点击修改按钮进入修改页面delete.aspx,经过复选框的选择,删除数据。如下图5-5删除页面所示:图5-5 删除页面 该页面经过复选框的操作删除数据后,重定向回该页面,以便显示删除后数据的更新。具体代码如下:页面登陆代码:Private Sub Page_
29、Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then 用来确认页面是否第一次登陆 binddata() End If End Sub Sub binddata() 连接到数据库 Dim myconnection As New SqlConnection(“initial catalog=book;uid=sa;pwd=“) Const strsql As String = “select * from book08 orde
30、r by 书号” Dim mycommand As New SqlCommand(strsql, myconnection) Dim myda As New SqlDataAdapter Myda.SelectCommand = mycommand Dim myds As New DataSet Myda.Fill(myds) DataGrid1.DataSource = myds DataGrid1.DataBind() myda.Update(myds, “book08”) End SubButton_click事件: Private Sub Button1_Click(ByVal sen
31、der As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim x As String Dim item As DataGridItem For i = 0 To DataGrid1.Items.Count 1 item = DataGrid1.Items(i) Dim bookcheckbox As CheckBox = item.FindControl(“checkbox1”) If bookcheckbox.Checked Then 确认数据是否被点击进行删除 x
32、= item.Cells(1).Text x为datagrid第二列的数据的内容 deletedataset(x) End If Next binddata() Response.Write(“删除成功!”) End Sub Sub deletedataset(ByVal y As String) Dim con As New SqlConnection(“initial catalog=book;uid=sa;pwd=“) Dim cmd As SqlCommand Dim qry As String Con.Open() qry = “delete book08 where 书号=“ &
33、y & “ cmd = New SqlClient.SqlCommand(qry, con) cmd.ExecuteNonQuery() con.Close() End SubButton_click的重定向事件 Private Sub Button2_Click(ByVal sender As System。Object, ByVal e As System.EventArgs) Handles Button2.Click Response.Redirect(“book.aspx”)End subEnd class添加新教材和修改记录两大模块共三个页面的代码编写与设计。具体设计如图5-6所示
34、:图5-6 添记录页面 new.Aspx(1)添加新教材。在登陆系统并选择录入新书后,进入添加新教材页面。如3-6图所示:对textbox1到textbox5添加RequiredFiledValidator控件,并设置相应属性使textbox中的文本不能为空。对textbox1添加RegularExpressionValidator控件,设置ValidationExpression属性为”d4”,ErrorMessage为”书号的格式为0001”。对textbox1添加RangeValidator控件,设置MinimunValue为”0001”,MaxmumValue为”9999”。使书号的取
35、值范围为00019999。对textbox4添加RegularExpressionValidator控件,设置ValidationExpression属性为”d4-d1,2”,使时间格式为 -1。对textbox5添加RangeValidator控件,设置MinimunValue为”1”,MaxmumValue为”99”,使订阅的教材数量在1-99本之间。该页面程序代码如下:Page Load事件代码Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.L
36、oadEnd SubButton Click事件代码Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim str As String Dim litem As ListItem str = & TextBox1。Text & Dim sql As String = select * from book08 where 书号= & Trim(str) Dim connstr As String = server=localhos
37、t;uid=sa;pwd=;database=book Dim myconn As New SqlConnection(connstr) Dim da As New SqlDataAdapter(sql, myconn) Dim ds As New DataSet da。Fill(ds, book08) Dim myrow As DataRow Dim dacomm As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da) If ds.Tables(book08).Rows.Count = 1 Then Respo
38、nse.Redirect(new.aspx) Response.Write(书号重复,请重新输入) End Ifmyrow = ds.Tables(book08).NewRow myrow(书号) = Trim(TextBox1.Text) myrow(书名) = Trim(TextBox2.Text) myrow(作者) = Trim(TextBox3.Text) myrow(征定时间) = Trim(TextBox4.Text) myrow(数量) = Trim(TextBox5.Text) ds.Tables(book08).Rows.Add(myrow) da.UpdateCommand = dacomm.GetUpdateCommand da.Update(ds, book08) Response.Redirect(book.aspx)End Sub(2) 修改记录。在登陆系统后点击修改按钮进入修改页面update.aspx。如图5-7所示:图5-7 修改页面update.Aspx 在该页面设计中添加SqlDataAdapter控件和DataSet控件,用于执行ADO。NET数据库访问的相关操作。该页中的数据经过DataGrid控件显示,设置相应属性,将其绑定到表book08,使其显示bo