软件开发环境与工具实验报告实验(六)实验题目:完整表单设计指导老师:班级:计算机科学与技术系1203班姓名:一、实验题目完整单据的设计二、实验目的通过本次实验,了解单据的类型及重要性,掌握两种单据的设计及制作方法,特别是单据中的编码以及状态的控制,为课程设计做准备。
三、实验内容1、实现单据的新增、修改、删除、浏览、审核、弃审等功能。
2、对单据的编码及状态要进行控制。
3、用.NET分层架构设计。
4、单据的具体内容自定。
四、实验过程1.实验说明:单据制作实验中总共涉及3个项目,第一个是单据设计(为启动项),其中包括login.vb、bills.vb两个窗体,第二个是单据设计.Data (类库)包含clsHT 和clsuser类,第三个是mycommon类,SQLHelper.vb、clsGetCode.vb和clsConn.vb。
2.数据库设计:数据库:单据 gg_User表:用户登录信息(用户ID、用户名、密码、状态)gg_CodeFormat表:(自动生成单据编码)gg_GouCheHT表:(购车:单据编码、制单名称、客户名称、制单人、审核人)3.实验代码用户登录:Public Class login‘重新定义clsUser为oDim o As New clsUserPrivate Sub 登录_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 登录.ClickDim dr As SqlClient.SqlDataReaderdr = o.getall2dr(" user_name='" & Me.TextBox1.Text & "'and uesr_state= '1'")If dr.Read ThenIf dr.Item("user_pwd") = Me.TextBox2.Text ThenMessageBox.Show("恭喜您登录成功!", "系统提示", MessageBoxButtons.OK, rmation)单据设计.Show()Me.Close()ElseMessageBox.Show("密码错误!", "系统提示",MessageBoxButtons.RetryCancel, rmation)End IfElseMessageBox.Show("该用户不存在", "系统提示",MessageBoxButtons.OKCancel, rmation)End IfEnd SubEnd ClassSQLHelper.vb为项目通用数据访问类,所有数据访问均使用该类来实现。
‘自动更新单据内容Public Class clsGetCodePublic Shared Function getNewCode(ByVal pbmmc As String) As String Dim strSQL As StringDim NewCode As String = ""Dim LSH As StringstrSQL = "select * from gg_CodeFormat where bmmc='" & pbmmc & "'" Dim dr As SqlClient.SqlDataReaderdr = myCommon.SqlHelper.ExecuteReader(myCommon.clsConn.getstrConn, CommandType.Text, strSQL)While dr.ReadSelect Case dr.Item("bmlx")Case "文本"NewCode &= dr.Item("bmz")Case "年¨º"If dr.Item("bmz") <> Format(Now, "yyyy") ThenNewCode &= Format(Now, "yyyy")LSH = "X"'更新操作Call Update(dr.Item("id"), Format(Now, "yyyy"))ElseNewCode &= dr.Item("bmz")End IfCase "月"If dr.Item("bmz") <> Format(Now, "MM") ThenNewCode &= Format(Now, "MM")LSH = "X"'更新操作Call Update(dr.Item("id"), Format(Now, "MM"))ElseNewCode &= dr.Item("bmz")End IfCase "日"If dr.Item("bmz") <> Format(Now, "dd") ThenNewCode &= Format(Now, "dd")LSH = "X"'更新操作Call Update(dr.Item("id"), Format(Now, "dd"))ElseNewCode &= dr.Item("bmz")End IfCase "流水号"Dim newLsh As StringIf LSH = "X" ThennewLsh = "0001"NewCode &= newLshElsenewLsh = Format(CType(dr.Item("bmz"), Decimal) + 1, "0000")NewCode &= newLshEnd IfCall Update(dr.Item("id"), newLsh)End SelectEnd WhileReturn NewCodeEnd FunctionPublic Shared Function Update(ByVal pid As Integer, ByVal pbmz As String)As StringDim strSQL As StringstrSQL = "update gg_codeFormat set bmz='" & pbmz & "' WHERE id=" & pidmyCommon.SqlHelper.ExecuteNonQuery(myCommon.clsConn.getstrConn, CommandType.Text, strSQL)End FunctionEnd Class‘双击视图里的某一行,在“单据设计”窗体上显示单据信息的代码:Private Sub DataGridView1_CellContentClick(ByVal sender AsSystem.Object,ByVal e As System.Windows.Forms. DataGridViewCellEventArgs) Handles DataGridView1.CellContentClicktxtdjbm.Text = DataGridView1.CurrentRow.Cells.Item(0).Value.ToStringtxtkhmc.Text = DataGridView1.CurrentRow.Cells.Item(2).Value.ToStringtxtzdrq.Text = DataGridView1.CurrentRow.Cells.Item(1).Value.ToStringtxtzdr.Text = DataGridView1.CurrentRow.Cells.Item(3).Value.ToStringtxtshr.Text = DataGridView1.CurrentRow.Cells.Item(4).Value.ToStringEnd Sub单据制作窗体设计主要运用toolscript1控件来制作工具栏内容,如“新增”“删除”“取消”“保存”“审核”“弃审”等按钮的功能,“datagidview”控件,显示数据库中信息。
‘保存功能:Public Function save() As StringstrSQL = " insert into ht_GouCheHT(djbm,zdrq,khmc,zdr,shr) values('" & ddjbm & "','" & dzdrq & "','" & dkhmc & "','" & dzdr & "','" & dshr myCommon.SqlHelper.ExecuteNonQuery(myCommon.clsConn.getstrConn, CommandType.Text, strSQL)Return "1"Catch ex As ExceptionReturn "-1" & ex.MessageEnd TryEnd Function‘新增功能;Public Function edit() As StringstrSQL = " update ht_GouCheHT set khmc ='" & dkhmc & "' where djbm='"& ddjbm &"'TrymyCommon.SqlHelper.ExecuteNonQuery(myCommon.clsConn.getstrConn, CommandType.Text, strSQL)Return "1"Catch ex As ExceptionReturn "-1" & ex.MessageEnd TryEnd Function‘删除功能Public Function delete() As StringstrSQL = " delete from ht_GouCheHT where djbm='" & ddjbm & "'"TrymyCommon.SqlHelper.ExecuteNonQuery(myCommon.clsConn.getstrConn, CommandType.Text, strSQL)Return "1"Catch ex As ExceptionReturn "-1" & ex.MessageEnd TryEnd Function‘单据制作中保存单据的判断Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.ClickDim sr As Stringo.ddjbm = Me.txtdjbm.Texto.dkhmc = Me.txtkhmc.Texto.dzdrq = Me.txtzdrq.Texto.dzdr = Me.txtzdr.Texto.dshr = Me.txtshr.TextIf action = "new" And Me.txtshr.Text = "管理员" Thensr = o.saveIf sr = "1" ThenMsgBox("保存成功!")Call InitData()ElseMsgBox("保存失败!")End IfElse Ifaction = "new" And Me.txtSHR.Text = "" Then MsgBox("该单据未经审核人审核,无效!")Elseo.dKHMC = Me.txtKHMC.Textsr = o.editIf sr = "1" ThenMsgBox("更新成功!")Call InitData()ElseMsgBox("更新失败")End IfEnd IfCall btnState(0)End Sub4.运行结果登录界面:主界面:单击显示所有用户:新增客户信息:五、实验总结通过本次实验,使我对单据程序的应用及设计思想有了初步理解,了解了单据的类型及重要性,掌握两种单据的设计及制作方法,特别是单据中的编码以及状态的控制。