1、sqlserver实验报告SQL Server高级数据库设计课程综合性实验报告开课实验室:软件实验室一 2008年4月21日实验题目信息管理系统的设计(学生信息管理系统)一、 实验目的:使用SQL Server2000作为数据库管理系统,制作一个小型信息管理系统。培养学生使用数据库独立完成小型项目的能力。二、 实验设备及环境:1. 硬件设备:PC机一台2. 软件环境:安装Windows操作系统,安装数据库管理系统SQL Server2000。三、 实验内容:(1)需求分析: 1、经调查知整个学生档案管理的业务流程描述如下:新生入校,先报道并进行注册登记,然后到财务部门缴费。根据学生被录取的专业
2、,持缴费单到所在系部或注册。到系部注册后,根据所选专业分配到班级。学期期末进行各科考试考试结束后,由各系将每位同学的考试成绩及其他一些相关信息记录至每个同学的档案中2、用户需求分析该系统的操作者为系统管理员。系统管理员:入学时,负责对学生的分配信息进行录入、修改、增加、删除;学期末,负责对学生的考试信息和奖惩情况进行管理。(2)概要设计: 1、 由(1)中的需求分析可得出该系统的业务流程图,如下所示 2、 创建数据库 数据库名为xs,该数据库由七个数据表构成,分别为: 学生信息表(xsXJ):学号、姓名、性别、政治面貌、出生日期、专业、班级、家庭住址、联系电话、备注。其中,学号为该数据表的主键
3、。 课程信息表(xsKC):课程名称,所属专业 专业信息表(xsZY):专业编号、专业名称。其中,专业编号为该数据表的主键。 班级信息表(xsBJ):班级编号、所属院系、辅导员、教室、人数。其中,班级名称为该数据表的主键,用于记录学生所在班级的信息。 成绩信息表(xsCJ):学号、姓名、专业、课程名称、成绩。其中,学号和课程名称共同构成该数据表的主键。 用户表(xsYH):用户名称、密码、用户ID。用于系统对操作员的设置。 操作日记表(xsOD):用户名、登陆日期、登陆时间。用于记录系统的使用情况。3、 实体图和E-R图 经分析可提取出学生、课程、专业、班级这四个实体,实体图分别如下:4、各表
4、的结构 表1 学生信息表(xsXJ)字段名类型长度关键字学号字符,15是姓名字符,20否性别字符,5否政治面貌字符,12否出生日期日期型否专业字符,20否班级字符,20否家庭住址字符,50否联系电话字符,15否备注字符,50否表2 课程信息表(xsKC)字段名类型长度关键字课程名称字符,20是所属专业字符,20否表3 专业信息表(xsZY)字段名类型长度关键字专业编号字符,20是所属院系字符,20否表4 班级信息表(xsBJ)字段名类型长度关键字班级名称字符,20是所属院系字符,20否辅导员字符,10否教室字符,15否人数字符,3否表5 成绩信息表字段名类型长度关键字学号字符,15是姓名字符,
5、20否专业字符,20否课程编号整形,IDENTITY否课程名称字符,20是成绩字符,3否表6 用户表(xsYH)字段名类型长度关键字学号字符,15是姓名字符,20否用户密码字符,15否用户ID字符,20否(3)详细设计: 1、 通过VB创建登陆界面: 输入用户名和密码后,单击“确定”按钮。此时,程序通过与数据库的连接,查看用户名和密码是否匹配。若匹配,则可以进入frmmain界面。这里的“确定”和“退出”按钮创建的是一个按钮控件组,在程序中采用case来实现选择。可以选中“记住密码”,方便下次的登陆。若是新用户,通过“新用户注册”按钮进入frmNewUser界面,进行用户注册。2、 通过VB创
6、建frmmain界面: 通过菜单进行选择,然后进入相应的界面,例如 “学籍管理”“添加学生学籍”,将进入学籍管理模块中的“添加学生学籍”的界面。 3、通过VB创建学籍管理界面: 整个界面主要由一个SSTAB控件构成,在“添加学生学籍”、“查询修改学生信息”、“注销学生学籍”中,创建了大量的控件数组,通过数组来实现数据的传送,这样避免了程序的冗繁。同时,在form的操作中,使用了大量的字段绑定。而且,在该模块的任何一个界面上,随时都可以单击“退出学籍管理”按钮,退回到frmMain模块。学籍管理模块是整个系统的主要模块,具体功能的实现,下面做具体的做介绍: 添加学生学籍:该界面包括一个文本控件组
7、,在单击“添加”按钮时,若信息没有输入完整,提示输入完整的信息。若输入的学号在数据库中已经存在,提示“已经存在学号为*的学生,请重新输入。”若添加成功,相应的也会显示添加成功的提示信息。此时,该学生的信息已成功的添加到数据库中,在下面的datagrid控件中可以观察到。这里调用了一个inputXJ_info函数以实现添加的功能。“清空”按纽是为了一次性删除所输入的信息,避免一项一项地删除。 查询修改学生学籍:在查询的过程中,可以按学号或姓名进行精确查询,也可以按姓进行模糊查询。所有的查找信息都出现在下面的datagrid控件中。这里的“班级”、“专业”、“政治面貌”都进行了字段绑定。实现修改功
8、能时,调用了ChangeXj_info函数。修改完毕以后,通过数据控件的refresh属性,实现对数据库的修改。上一条和下一条按钮只是为了方便删除,当在第一条依然按下“上一条”时,出现已是第一条的提示;当在最后一条仍然按下“下一条”时,出现已经是最后条的提示。 注销学生学籍:模块用于实现对学生学籍的注销,可以在frame1中查找后再注销,也可以直接在frame2中一条一条地进行注销。查询的功能跟上面一个界面的一样,可以进行精确和模糊查询。 (4)编码(学籍管理模块的编码)Dim miCount As IntegerPrivate conn As ADODB.ConnectionPrivate
9、rsXJ As ADODB.RecordsetPrivate rsZY As ADODB.RecordsetPrivate rsBJ As ADODB.RecordsetPrivate rsZZ As ADODB.RecordsetPrivate rs As ADODB.RecordsetDim print_ID As IntegerPrivate Sub Command7_Click()Set DataGrid3.DataSource = rsXJDataGrid3.RefreshEnd SubPrivate Sub Form_Load()Set conn = New ADODB.Conne
10、ctionconn.ConnectionString = DRIVER=SQL Server;UID=sa;DATABASE=xs;WSID=B86;APP=Microsoft Data Access Components;SERVER=B86conn.Open 连接数据源Set rs = New ADODB.Recordsetrs.CursorLocation = adUseClientrs.Open xsXJ, conn, 1, 1Set rsXJ = New ADODB.Recordset 设置连接学生学籍rsXJ.CursorLocation = adUseClientrsXJ.Ope
11、n xsXJ, conn, 2, 2Set DataGrid1.DataSource = rsXJDataGrid1.RefreshSet DataGrid2.DataSource = rsXJDataGrid2.RefreshSet DataGrid3.DataSource = rsXJDataGrid3.RefreshSet rsZY = New ADODB.Recordset 设置连接的专业rsZY.CursorLocation = adUseClientrsZY.Open xsZY, conn, 1, 1Set txtZhuanye.DataSource = rsZYtxtZhuany
12、e.AddItem 专业名称Set txtXJZhuanye.DataSource = rsZYtxtXJZhuanye.AddItem 专业名称Set txtXJdelINFO(3).DataSource = rsZYtxtXJdelINFO(3).DataField = 专业名称Set rsBJ = New ADODB.Recordset 设置连接的班级rsBJ.CursorLocation = adUseClientrsBJ.Open xsBJ, conn, 1, 1Set txtBanji.DataSource = rsBJtxtBanji.AddItem 班级名称Set txtXJB
13、j.DataSource = rsBJtxtXJBj.AddItem 班级名称Set txtXJBanji.DataSource = rsBJtxtXJBanji.AddItem 班级名称Set txtXJdelBJ.DataSource = rsBJtxtXJdelBJ.AddItem 班级名称Set txtXJdelINFO(4).DataSource = rsBJtxtXJdelINFO(4).DataField = 班级名称Set Text1(0).DataSource = rsXJ 绑定字段Set Text1(1).DataSource = rsXJSet txtXJsex.Data
14、Source = rsXJSet txtXJmianmao.DataSource = rsXJSet txtXJDate.DataSource = rsXJSet txtXJZhuanye.DataSource = rsXJSet txtXJBanji.DataSource = rsXJSet Text1(2).DataSource = rsXJSet Text1(3).DataSource = rsXJSet Text1(4).DataSource = rsXJText3(0).DataField = 学号Text3(1).DataField = 姓名txtXJsex.DataField =
15、 性别txtXJmianmao.DataField = 政治面貌txtXJDate.DataField = 出生日期txtXJZhuanye.DataField = 专业txtXJBanji.DataField = 班级Text3(2).DataField = 家庭住址Text3(3).DataField = 联系电话Text3(4).DataField = 备注For i = 0 To 9Set txtXJdelINFO(i).DataSource = rsXJNexttxtXJdelINFO(0).DataField = 学号txtXJdelINFO(1).DataField = 姓名tx
16、tXJdelINFO(2).DataField = 性别txtXJdelINFO(3).DataField = 专业txtXJdelINFO(4).DataField = 班级txtXJdelINFO(5).DataField = 政治面貌txtXJdelINFO(6).DataField = 出生日期txtXJdelINFO(7).DataField = 家庭住址txtXJdelINFO(8).DataField = 联系电话txtXJdelINFO(9).DataField = 备注End SubPrivate Sub Form_QueryUnload(Cancel As Integer,
17、 UnloadMode As Integer)On Error Resume NextrsXJ.ClosersBJ.ClosersZY.CloseMe.HideEnd SubPrivate Sub Command1_Click() 退出系统On Error Resume NextrsXJ.ClosersBJ.ClosersZY.Closeconn.CloseUnload MeEnd SubPrivate Sub cmdAdd_Click()For i = 0 To 2If Trim(Text1(i).Text = ) ThenMsgBox 请输入完整的信息!, vbOKOnly + vbQue
18、stion, 提示Text1(i).SetFocusExit SubEnd IfNextIf txtZhuanye.Text = Or txtBanji.Text = Then MsgBox 请选择学生的专业和班级!, vbOKOnly + vbQuestion, 提示: Exit SubIf txtMianmao.Text = Then MsgBox 请选择学生的政治面貌!, vbOKOnly + vbQuestion, 提示: txtMianmao.SetFocus: Exit SubIf Not (Optm Or Optw) Then MsgBox 请选择学生的性别!, vbOKOnly
19、 + vbQuestion, 提示: Exit SubinputXS_info 写入到学生数据库End SubSub inputXS_info() 添加学生学籍到数据库Dim txtsql As Stringtxtsql = select * from xsXJ where 学号= & Trim(Text1(0).Text) & Set rs = New ADODB.Recordsetrs.CursorLocation = adUseClientrs.Open txtsql, conn, 1, 1If rs.EOF = False ThenMsgBox 数据库中已经存在学号为: & Text1
20、(0).Text & 的学生!请重新输入!, vbOKOnly, 警告cmdXJcls_Click 清空Text1(0).SetFocusElsersXJ.AddNew 添加到新记录rsXJ.Fields(0) = Text1(0).TextrsXJ.Fields(1) = Text1(1).TextIf Optw ThenrsXJ.Fields(2) = 男ElsersXJ.Fields(2) = 女End IfrsXJ.Fields(5) = txtMianmao.TextrsXJ.Fields(6) = txtDate.ValuersXJ.Fields(3) = txtZhuanye.T
21、extrsXJ.Fields(4) = txtBanji.TextrsXJ.Fields(7) = Text1(2).TextIf Trim(Text1(3).Text = ) ThenrsXJ.Fields(8) = 空ElsersXJ.Fields(8) = Text1(3).TextEnd IfIf Trim(Text1(4).Text = ) ThenrsXJ.Fields(9) = 空ElsersXJ.Fields(9) = Text1(4).TextEnd IfrsXJ.UpdateDataGrid1.RefreshMsgBox 学生学籍已经成功加入到数据库中!, vbOKOnly
22、 + vbInformation, 提示cmdXJcls_Click 清空Text1(0).SetFocusEnd IfEnd SubPrivate Sub cmdXJcls_Click()On Error Resume NextFor i = 0 To 4Text1(i).Text = NextOptm.Value = 0: Optw.Value = 0txtMianmao.Text = txtZhuanye.Text = txtBanji.Text = Text1(0).SetFocusEnd SubPrivate Sub cmdXJfind_Click() 查询If Opt1.Value
23、 And Trim(txtXuehao.Text = ) Then MsgBox 请输入学号!, vbOKOnly + vbInformation, 提示: txtXuehao.SetFocus: Exit SubIf Opt2.Value And Trim(txtName.Text = ) Then MsgBox 请输入姓名!, vbOKOnly + vbInformation, 提示: txtName.SetFocus: Exit SubIf Check1.Value And txtXJBj.Text = Then MsgBox 请选择班级!, vbOKOnly + vbInformati
24、on, 提示: txtXJBj.SetFocus: Exit SubxsXJfind_info 学籍查询模块End SubSub xsXJfind_info() 学籍查询模块Dim txtsql As StringIf Opt1.Value ThenIf Check1.Value Thentxtsql = selcet * from xsXJ where 学号= & Trim(txtXuehao.Text) & & and 班级= & Trim(txtXJBj.Text) & Elsetxtsql = select * from xsXJ where 学号= & Trim(txtXuehao.
25、Text) & End IfElseIf Check1.Value Then 按姓名进行模糊查询txtsql = select * from xsXJ where 姓名 like & % & Trim(txtName.Text) & % & & and 班级= & Trim(txtXJBj.Text) & Elsetxtsql = select * from xsxj where 姓名 like & % & Trim(txtName.Text) & % & End IfEnd IfSet rs = New ADODB.Recordsetrs.Closers.Open txtsql, conn,
26、 1, 1If rs.EOF = False Thenrs.MoveFirstSet DataGrid2.DataSource = rsDataGrid2.RefreshFor i = 0 To 4Set Text3(i).DataSource = rsNextSet txtXJsex.DataSource = rs 绑定字段Set txtXJmianmao.DataSource = rsSet txtXJDate.DataSource = rsSet txtXJZhuanye.DataSource = rsSet txtXJBanji.DataSource = rsElseMsgBox 没有
27、找到符合条件的记录!请重新输入查询条件!, vbOKOnly + vbInformation, 提示End IfEnd SubPrivate Sub Command2_Click() 显示全部Set DataGrid2.DataSource = rsXJDataGrid2.RefreshEnd SubPrivate Sub cmdXJchange_Click() 修改If cmdXJchange.Caption = 修改 ThencmdXJchange.Caption = 确认修改For i = 0 To 4Text3(i).Enabled = TrueNexttxtXJmianmao.Ena
28、bled = TruetxtXJDate.Enabled = TruetxtXJZhuanye.Enabled = TruetxtXJBanji.Enabled = TruetxtXJsex.Enabled = TrueElsecmdXJchange.Caption = 修改changexj_info 修改学生信息For i = 0 To 4Text3(i).Enabled = FalseNexttxtXJmianmao.Enabled = FalsetxtXJDate.Enabled = FalsetxtXJZhuanye.Enabled = FalsetxtXJBanji.Enabled
29、= FalsetxtXJsex.Enabled = FalseEnd IfEnd SubSub changexj_info()For i = 0 To 2If Trim(Text3(i).Text = ) ThenMsgBox 请输入完整的信息!, vbOKOnly + vbInformation, 提示Exit SubEnd IfNextrsXJ.Fields(0) = Text3(0).Text 修改数据rsXJ.Fields(1) = Text3(1).TextrsXJ.Fields(2) = txtXJsex.TextrsXJ.Fields(5) = txtMianmao.TextrsXJ.Fields(6) = txtDate.ValuersXJ.Fields(3) = txtXJZhuanye.TextrsXJ.Fields(4) = txtXJBanji.TextrsXJ.Fields(7) = Text3(2).TextIf Trim(Text3(3).Text = ) ThenrsXJ.Fie
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1