#学生选课和管理系统(使用vb2008和SQLServer2008)_第1页
#学生选课和管理系统(使用vb2008和SQLServer2008)_第2页
#学生选课和管理系统(使用vb2008和SQLServer2008)_第3页
#学生选课和管理系统(使用vb2008和SQLServer2008)_第4页
#学生选课和管理系统(使用vb2008和SQLServer2008)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验七:数据库使用系统开发(综合性实验)一、指导思想培养学生利用所学的数据库原理及使用的知识,选择某一编程工具,进行数据库使用系统的开发;培养学生独立思考问题、解决问题的能力和学生计算机使用编程的能力。二、实验目的及要求要求学生选择一种开发工具(如 ,e等),利用前面设计的数据库,建立一个基于或结构的数据库管理系统,要求涉及:数据维护(输入修改,删除)、数据查询和统计、报表打印等。三、涉及的内容或知识点综合利用数据库原理及使用所有知识,所选择的开发工具的知识,专业知识中要解决的某个方面的问题的领域知识。四、采用的教学方法和手段根据所选设计项目,对项目进行需求分析和设计方法,形成一个问题的解决方案,学生分为2-3人一组,每组提出一个要解决的问题;先对问题进行分析,明确问题的目标和解决问题的思路,同样设计出问题的解决方案。最后采用一种开发工具进行设计和实现来解决问题。小组成员各自承担不同的设计任务。最后的实验报告包括:问题解决方案(系统分析和设计报告、数据库设计方案,功能设计,界面设计),设计的系统,系统运行报告等。附录:综合性实验报告要求:一、系统分析和设计报告二、数据库设计方案,功能设计,界面设计三、设计的系统四、系统测试运行报告五、个人完成的程序模块和文档清单六、个人遇到的困难和获得的主要成果使用仪器、材料WindowXPVisualBasic2008SQLServer2008一系统分析和设计1.1需求分析选课管理系统的主要目的是利用软件实现选课的录入、查询、修改等功能,针对不同表的用户(学生、教师、管理员)提供不同的操作,使学生选课及对其的管理更加方便,提高工作效率,降低管理成本。选课的管理一般包括选课查询和选课维护两部分,在实际的选课过程中,学生主要对课程进行选择,了解自己的选课情况,而教师除了能够对选择教师自己教授的课程的学生进行查询之外,还要对课程成绩进行录入,修改等操作。对于整个系统而言,为了便于对各种数据进行维护,还要增设管理员,方便对学生和教师信息以及课程等基本信息的维护,从而达到灵活的管理选课的效果。因此从安全角度考虑,有必要针对不同的用户对数据的访问和编辑进行控制。学生、教师和管理员对选课信息的操作权限如表 所示。表用户所在表操作查询修改删除录入学生可以不可以不可以不可以教师可以可以不可以可以管理员可以可以可以可以而管理员还具有对整个系统其他信息,如课程信息,的全部操作权限。功能需求分析具体如下。系统登陆用户输入用户名和密码,系统查询数据库中的信息对用户名和密码进行验证。如果用户名或密码不正确则不能进入系统。如果用户名存在且密码正确,系统会自动根据该用户所在的表进入不同的界面且显示该用户相对应的基本信息。学生界面基本信息

学生登陆成功,可看到自己的基本信息包括学号、姓名、性别、年龄、系别。选课可查看学生本人的选课情况,包括课程名、授课老师、课室、分数。并可进一步进行选择和删除。教师界面基本信息教师登陆成功,可看到自己的基本信息包括教师号、姓名、性别、职称、系别。还可看到自己教授的所有课程查看学生信息可查看选择自己教授的课程的学生名单,并可进一步对选择该门课程的学生成绩进行录入和修改。管理员界面查询可查询学生信息、教师信息以及其他的一些基本选课信息包括课程信息、选课信息、课室信息、教授课程和授课地点。编辑可对正在浏览的学生和教师信息进行编辑操作包括修改、删除,并可进行学生或教师基本信息的录入。当未进行浏览时,仅可录入信息而不能进行修改和删除。报表可显示所有学生的选课信息包括课程名、教师和授课老师。并可进一步打印或导出。除此之外,每个用户均可重新设置自己的密码(需要旧密码验证)。模块设计系统架构系统的模块划分如图 所示,将系统分为个大模块,每个模块负责的功能和用户所在的表有关。其中用户登陆模块根据用户所在的表显示不同的界面和提供不同的操作。本系统采用 的 数据库访问技术实现对数据库的访问操作。系统的最底层是数据库,本系统采用 作为后台数据库。用户登录模块学耳教师 管理员

数据库访问接口ADO.门田SQLServer数据库图 模块划分图用户登录模块用户登陆模块实现对用户合法性的检查,读取不同的用户表,根据用户所在TOC\o"1-5"\h\z的表展示不同的界面。用户登陆界面的类为“ o学生模块、教师模块和管理员模块功能介绍详见功能需求具体分析 ~学生界面对应类“ u选课功能对应类“ s教师界面对应类“ ”,查看相应课程学生信息对应类“ ”,录入、修改学生分数对应类“ ”;管理员界面对应类“ ”,录入、修改学生信息对应类“ ”,录入、修改教师信息对应类“ ”,查看和编辑其他选课信息对应类“ ”,报表对应类“”。所有用户修改密码统一使用类“ i止匕外,还定义了几个公共类方便操作。“ ”类存储全局变量;“ ”类保存用户登录名和密码以及提供了修改密码的方法; ”类的作用是提供统一的方法执行语句,并对语句进行判断是添加、删除、更新操作还是查询操作,若为前者,弹出对应信息框通知用户。二数据库分析和设计概念设计在以上的系统分析基础上,设计出系统的 图,如图所示。

图2-1E-R图主要包括个实体,分别是学生、教师、课程、教室及三个关系,即选修、讲授和授课地。一门课程可由多个老师教授,一个老师也可以教授多门课程,课程实体和教师实体是多对多关系。一门课程可由多个学生选择,一个学生也可以选择多门课程,课程实体和学生实体是多对多关系。一门课程可安排在多个教室上,一个教室也可以作为多门课程的授课地点,课程实体和教室之间是多对多关系。逻辑设计在根据以上实体和实体的关系,形成表和表之间的逻辑关系,如图 所示。

图2-2逻辑关系图图2-2逻辑关系图英语部分为实际表名中文部分为解释表的具体项如下所示(为方便编程除了课程表项的类别),英语部分为实际表名中文部分为解释学生学号、姓名 、性别、年龄、系别教师教师号,姓名 ,性别,职称 ,系别课程课程号、课程名 ,学分,类别教室教室号,多媒体,座位讲授(教师号 ,课程号)选修(学号,课程号,成绩 )授课地(课程号 ,教室号 )数据库的实现

各个表内列的名称、含义、是否主键等基本信息可从 获知,这里不再赘述。在数据库中创建各个表的 语句见附录一。三系统实现新建一个项目,使用默认配置,保存为“ ”i关于项目中各个类的代码部分详见附录二。代码部分带有注释,就不重复解释了。设置全局变量和自定义用户类以及操作类添加一个模块,用于保存全局变量。单击“项目” “添加模块”,并命名为“ ”c代码部分详见附录二。添加一个类,操作同上,保存为“”e之所以使用类,是为了能保存用户的登陆信息,和在修改密码时能传递信息,而不需要重新执行语句进行查询。再添加一个类,保存为“ r其功能为执行 语句,并对语句进行判断是添加、删除、更新操作还是查询操作,若为前者,弹出对应信息框通知用户。登陆窗口添加窗体,保存为“ ”,使用工具箱(视图工具箱),添加各控件后登陆窗口如图 所示。图3-13.3学生界面如果是用户是学生,则登陆后界面如图 所示。对应的项目文件为

图3-2学生信息界面可看到基本信息(除了密码项)。单击“选课”按钮,弹出选课对话框,如图 所示,对应项目文件为图3-3代码中主要使用语句执行并进行数据填充,如其中自定义的填充数据集方法 。

还使用了其他几个 语句进行查询,至于具体的代码详见目录,这里只给出执行的 语句。查找对应课程名的课程号查找对应学号和课程号的记录插入选课记录删除选课记录单击“修改密码”按钮进入修改密码对话框,如图3-4所示,对应项目文件为“dlgModifyPW.vb"。注:所有用户修改密码都是使用该窗口界面,可节省空间。图3-4图3-4主要判断“旧密码”和“新密码”是否一致,通过类保存的密码进行对比,而不是使用语句重新查询。之后调用新。类中的修改密码方法进行密码更而不是使用语句重新查询。之后调用新。类中的修改密码方法进行密码更教师界面教师用户登陆后的界面如图3-5所示,所对应的项目文件为“frmTeacher.vb”。图基本代码和学生界面的代码类似,主要不同的地方有:增加了一个表格,需要对表格进行填充,并且对双击表格单元格内容时编程使其可以查看选修该门课程的学生信息。双击表格单元格内容需要使用表格的 过程,具体代码如下:注:下面的第一二行代码应该在同一行,由于排版问题分开了。PrivateSubgrdTC_CellContentDoubleClick(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.DataGridViewCellEventArgs)HandlesgrdTC.CellContentDoubleClick’判断有没超过范围并获取当前活动单元的值IfgrdTC.CurrentCell.RowIndex<grdTC.RowCount-1Then'storeCnameforpassingittofrmTStudengInfoCname=grdTC.Item(0,grdTC.CurrentRow.Index).ValuefrmTStudentInfo.ShowDialog()EndIfEndSub双击单元格内容查看选修该门课程的学生信息,界面如图3-6所示,对应的项目文件为“frmTStudentInfo.vb”图3-6可看到选修该门课程的学生信息(学号、姓名、系别、分数,列名还没修改)双击学生基本信息表格的单元格内容可修改该行记录的学生的分数,界面如图3-7所示,对应的项目文件为“dlgTModifyGrade.vb”。图3-7仅可以修改分数项。提交修改即可修改分数。管理员界面管理员用户登陆后的界面如图 所示,对应项目文件为“查询口编辑报表帮助教师信息学生信息其他 卜关干藤帮助查询口编辑报表帮助教师信息学生信息其他 卜关干藤帮助请在此如查看学生选课情况图3-8由于管理员的功能比较多,所以代码也相对较多和复杂,主要代码部分都有注释详加解释,故不再此赘述。菜单栏各下拉项如图 所示。图3-9查询菜单仅可以查询,表格属性为只读。需要修改或者删除,需要在编辑项中选中修改或删除才可以进行编辑。当没有选中查询菜单中的项时,编辑菜单中的修改和删除是灰白的,不能被选择。查询后选择修改,则可以在表格中双击需要修改的记录,弹出修改对话框。例:单击查询->学生信息,然后选择编辑->修改,弹出“修改学生信息对话框”,如图3-10所示。图3-10修改时,不能修改学号项。单击查询->教师信息,然后选择编辑->修改,则弹出“修改教师信息对话框”。查询后选择删除,则可以在表格中双击需要修改的记录,进行删除,并且自动退出修改状态。例:单击查询->学生信息,然后选择编辑->删除,如图3-11所示:

明管理员►10020001李二明管理员►10020001李二男教授数:10020002张三男讲师计:米选择“编辑->录入。学生信息”弹出“录入学生信息对话框”如图3-12所示。图3-12选择“编辑->录入。教师信息”则弹出“录入教师信息对话框”。为了节省空间,查看课程信息等其他信息时,只给出了表格,并可以直接在表格上编辑,如图3-13所示。图3-13报表显示的是学生的选课信息(课程名称、课室、授课老师姓名)如图3-14所示,使用水晶报表制作,可导出为excel表格。报表likid甲1甲3李勇刘晨钱小平王大力王刚吴宾张海2011-12-CnamBlikid甲1甲3李勇刘晨钱小平王大力王刚吴宾张海2011-12-CnamBCRn口Tnam巳八=litid数据库原理与应用计算机掰络201103李二李二甲1电子商务美不302301张三张三甲3美术301张三V<叩>附附▼L卜方芍|主报至当前页码:1总页数:1+缩放系数:1口口区图录入、修改学生信息对应项目文件“ ”,录入、修改教师信息对应项目文件“ a查看和编辑其他选课信息对应项目文件“ ”,报表对应项目文件“ ”。四系统测试运行大部分正常运行的界面在第三部分的系统实现部分已经展示在此仅展示部分错误输入的情况。用户名输入错误时给出的提示。学生选课时添加已经选择的课程时给出的提示。修改密码时输入的旧密码不正确时给出的提示。信息框八输入的旧密码不正确!确定录入学生信息时学号为空给出的提示。由于时间匆忙,可能存在部分未被测试到的安全性隐患。五程序模块和文档清单主要程序代码段设置全局变量'ImportDataandSqlClientnamespaces...ImportsSystem.DataImportsSystem.Data.SqlClientModulePublicVarPublicobjConnectionAsNewSqlConnectionPublicobjDataAdapterAsNewSqlDataAdapter()PublicSQLStringAsString '保存SQL语句PublicstrInfoAsString '保存消息窗口标题PublicUserAsCUser '保存登陆用户账号、密码信息'调用main过程,以适应不同的测试界面Submain()‘初始化objDataAdapter.SelectCommand=NewSqlCommand()strInfo="信息框"EndSubPublicSubobjOpen()'Opentheconnection,ifalreadyopenthenskipoverIfobjConnection.State<>ConnectionState.OpenThenobjConnection.Open()EndIfEndSubPublicSubobjClose()'Closetheconnection,ifalreadyclosethenskipoverIfobjConnection.State<>ConnectionState.ClosedThenobjConnection.Close()EndIf

EndSubEndModule保存用户的登陆信息,和在修改密码时能传递信息,而不需要重新执行 语句进行查询。PublicClassCUserPrivatem_UserIDAsString '保存用户名Privatem_PasswordAsString '保存密码Privatem_UserTypeAsInteger '0表示管理员,1表示学生,2表示老师PropertyUserID()AsStringGetReturnm_UserIDEndGetSet(ByValvalueAsString)mUserID=valueEndSetEndPropertyPropertyPassword。AsStringGetReturnm_PasswordEndGetSet(ByValvalueAsString)mPassword=valueEndSetEndPropertyPropertyUserType()AsStringGetReturnm_UserTypeEndGetSet(ByValvalueAsString)mUserType=valueEndSetEndPropertySubNew(ByValIDAsString,ByValPWAsString)‘传递账号信息m_UserID=IDmPassword=PWEndSubFunctionPasswordModify(ByValNewPasswordAsString,ByValUserTypeAsString)AsBooleanDimstrTypeAsString '对应不同的登陆用户查询的表名字母DimstrCharAsChar 对应不同的登陆用户的账号和密码查询的首字母strType=""

’0表示管理员,1表示学生,2表示老师IfUserType=0ThenstrType="Admin"strChar="A"ElselfUserType=1ThenstrType="Student"strChar="S"ElseIfUserType=2ThenstrType="Teacher"strChar="T"EndIf'DimSQLStringAsStringSQLString=_"update"&strType&"set"&strChar&"password='"&NewPassword&"'where"&strChar&"no='"—&User.m_UserID&"'"’使用自定义类执行SQL语句CDBOperation.DBoperate(SQLString)'Refreshpasswordm_Password=NewPasswordEndFunctionEndClassPublicClassCDBOperationSharedFunctionDBoperate(ByValSQLStringAsString)’执行SQL语句,并对SQL语句进行判断是添加、删除、更新操作还是查询操作,’若为前者,弹出对应信息框通知用户。TryobjDataAdapter.SelectCommand.CommandText=SQLStringobjDataAdapter.SelectCommand.CommandType =CommandType.TextDimsTokens()AsString'declareanArray'Splitstringby""sTokens=SQLString.Split("")'OpentheconnectionobjOpen()’将添加、删除、更新操作中使用的SQL语句的第一个单词和’要执行的SQL语句的第一个单词进行比较,若为前者的操作,则执行SQL语句并给予用户对应的提示‘否则仅执行语句IfStrings.InStr("INSERT,DELETE,UPDATE",sTokens(0).ToUpper)Then'Executethecommand

objDataAdapter.SelectCommand.ExecuteNonQuery()IfsTokens(0).ToUpper="INSERT"Then乂$880乂("插入成功",MsgBoxStyle.Information,strInfo)‘不可直接return,因为还需要关闭数据库连接节省资源EndIfIfsTokens(0).ToUpper="DELETE"ThenMsgBox("删除成功",MsgBoxStyle.Information,strInfo)EndIfIfsTokens(0).ToUpper="UPDATE"ThenMsgBox("更新成功",MsgBoxStyle.Information,strInfo)EndIfElse'ExecutethecommandobjDataAdapter.SelectCommand.ExecuteNonQuery()EndIfobjClose()CatchexAsExceptionMsgBox(ex.Message)EndTryReturnNothingEndFunctionEndClassfrmLogin.vbfrmLogin.vb个个个个个个个个个个个个个个个个个个个个个个个PublicClassfrmLoginDimLDataSetAsNewDataSet。DimobjDataViewAsDataViewPrivateSubReset()'重置txtUserID.Text=""txtPasswd.Text=""EndSubFunctionLoginConfirm(ByValIDAsString,ByValPWAsString)AsInteger’判断输入的用户名和密码是哪个表(学生、教师、管理员)中的记录‘使用SQL语句查询对应的学生学号和密码objDataAdapter.SelectCommand.CommandText=_"selectSnofromStudent"—&"whereSno='"&User.UserID—&"'andSpassword='"&User.Password&"'"objDataAdapter.SelectCommand.CommandType=CommandType.TextobjOpen()'ExecuteScalar方法返回表的第一行的第一个数据。’因为需要返回数据以便判断,故没有调用CDBOperation类进行操作。SQLString=objDataAdapter.SelectCommand.ExecuteScalarobjClose()

TryIfSQLString=NothingThenobjDataAdapter.SelectCommand.CommandText=_"select*fromTeacher"—&"whereTno='"&User.UserID—&"'andTpassword='"&User.Password&"'"objOpen()'ExecuteScalar方法返回表的第一行的第一个数据。SQLString=objDataAdapter.SelectCommand.ExecuteScalarobjClose()IfSQLString=NothingThenobjDataAdapter.SelectCommand.CommandText=_"select*fromAdmin"—&"whereAno='"&User.UserID—&"'andApassword='"&User.Password&"'"objOpen()'ExecuteScalar方法返回表的第一行的第一个数据。SQLString=objDataAdapter.SelectCommand.ExecuteScalarobjClose()IfSQLString=NothingThenUser.UserType=-1MsgBox("输入用户名或密码有误,请重试",MsgBoxStyle.Exclamation,strInfo)Return-1ElseUser.UserType=0MsgBox("管理员登陆成功!",MsgBoxStyle.Information,strInfo)Return0EndIfElseUser.UserType=2MsgBox("教师登陆成功!",MsgBoxStyle.Information,strInfo)Return2EndIfElseUser.UserType=1MsgBox("学生登陆成功!",MsgBoxStyle.Information,strInfo)Return1EndIfCatchexAsExceptionMsgBox(ex.Message)EndTry

EndFunctionPrivateSubbtnOK_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnOK.ClickUser=NewCUser(txtUserID.Text,txtPasswd.Text)DimflagAsInteger'-1表示不存在,0表示管理员,1表示学生,2表示老师flag=LoginConfirm(User.UserID,User.Password)If-1=flagThentxtPasswd.Text=""txtPasswd.Focus()ElseIf0=flagThenfrmAdmin.Show()'markElseIf1=flagThenfrmStudent.Show()ElseIf2=flagThenfrmTeacher.Show()EndIf'Successfullylogin,closefrmLoginwindowMe.Close()EndIfEndSubPrivateSubbtnReset_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnReset.ClickReset()txtUserID.Focus()EndSubPrivateSubbtnExit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnExit.ClickEndEndSubPrivateSubfrmLogin_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadIfobjConnection.Database=""ThenCallmain()objConnection.ConnectionString=_"DataSource=LI-KID;InitialCatalog=学生选课库;IntegratedSecurity=True"objDataAdapter.SelectCommand.Connection=objConnectionEndIfPublicClassfrmStudent

DimSDataSetAsNewDataSet()DimobjDataViewAsDataViewPrivateSubFillDataSetAndView()SQLString=_"selectSno,Sname,Ssex,Sage,Sdept,Spassword"_&"fromStudent"—&"whereSno='"&User.UserID&"'andSpassword='"&User.Password&"'"’使用自定义类执行SQL语句CDBOperation.DBoperate(SQLString)‘清除数据集中的内容以防重复填充SDataSet.Clear()’填充数据:objDataAdapter.Fill(SDataSet,"StudentInfo")’填充数据视图objDataView=NewDataView(SDataSet.Tables("StudentInfo"))EndSubPrivateSubBindFields()'ClearanypreviousbindingstxtSno.DataBindings.Clear()txtSname.DataBindings.Clear()txtSsex.DataBindings.Clear()txtSage.DataBindings.Clear()txtSdept.DataBindings.Clear()Try'AddnewbindingstotheDataViewobjecttxtSno.DataBindings.Add("Text",objDataView,"Sno")txtSname.DataBindings.Add('Text",objDataView,"Sname")txtSsex.DataBindings.Add("Text",objDataView,"Ssex")txtSage.DataBindings.Add("Text",objDataView,"Sage")txtSdept.DataBindings.Add('Text",objDataView,"Sdept")CatchexAsExceptionMsgBox(ex.Message)EndTryEndSubPrivateSubfrmStudent_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load调用自定义过程进行数据填充FillDataSetAndView()调用自定义过程进行数据绑定BindFields()EndSubPrivateSubbtnLogout_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnLogout.Click

frmLogin.Show()Me.Close()EndSubPrivateSubbtnModifyPW_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnModifyPW.ClickdlgModifyPW.ShowDialog()EndSubPrivateSubbtnSelect_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnSelect.ClickdlgSChooseCourse.ShowDialog()EndSubPrivateSubbtnExit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnExit.ClickobjConnection.Close()注:在“ ”中使用到一个填充数据的方法e分别填充了数据集 和文本框 的值,并使用了手动绑定,定义该方法为 。在其他需要手动绑定文本框和填充数据集的地方将不再重复附上详细代码,需要查看详细代码的请查看附带的项目文件。

CDBOperation.DBoperate(SQLString)‘清除数据集中的内容以防重复填充SCCDataSet.Clear()’填充数据集objDataAdapter.Fill(SCCDataSet,"SCInfo")’设置表格数据源和成员grdSC.AutoGenerateColumns=TruegrdSC.DataSource=SCCDataSetgrdSC.DataMember="SCInfo"'ChangecolumnnamesusingthecolumnindexgrdSC.Columns(0).HeaderText="课程名"'ChangecolumnnamesusingthecolumnnamegrdSC.Columns("Grade").HeaderText="分数"grdSC.Columns("Tname").HeaderText="教师名"grdSC.Columns("CRno").HeaderText="课室号"’设置宽度,默认100grdSC.Columns("Tname").Width=75grdSC.Columns("CRno").Width=75grdSC.Columns("Grade").Width=75'grdSC.Columns("Cname").Width/1.5EndSubPrivateFunctionIsExist()AsBoolean’查找对应学号和课程号的记录SQLString=_"select*fromSCwhereSno='"&User.UserID&"'"—&"andCno='"&Cno&"'"objDataAdapter.SelectCommand.CommandText=SQLStringobjOpen()‘若要添加的课程已存在(即已选),则弹出信息框并返回TRUEIf(objDataAdapter.SelectCommand.ExecuteScalar)ThenMsgBox("该课程已选!",MsgBoxStyle.Exclamation,strInfo)ReturnTrueEndIfobjClose()ReturnFalseEndFunctionPrivateSubbtnCancel_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCancel.ClickMe.Close()EndSubPrivateSubdlgSChooseCourse_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadcboChooseCourse.Items.Add("计算机文化学")cboChooseCourse.Items.Add('VB")

cboChooseCourse.Items.Add("计算机网络")cboChooseCourse.Items.Add("数据库原理和使用")cboChooseCourse.Items.Add("高等数学”)cboChooseCourse.Items.Add("数据结构")cboChooseCourse.Items.Add("美术")cboChooseCourse.Items.Add("电子商务")’显示下拉框的第一个数据(索引值为0)cboChooseCourse.SelectedIndex=0'FilltheDataGridFillDataGrid()EndSubPrivateSubbtnAdd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnAdd.ClickMsg=MsgBox("确定添加?",MsgBoxStyle.OkCancel,strInfo)'IfOK,thenexecuteSQLandrefillDataGridIfMsg=MsgBoxStyle.OkCancelThen’确定添加时获得CnoCnameToCno()’判断添加的课程是否是已选课程,若未选则添加If(IsExist()=False)Then’插入选课记录SQLString="insertintoSC(Cno,Sno)values。"&Cno&"','"&User.UserID&"')"调用自定义操作类执行SQL语句CDBOperation.DBoperate(SQLString)FillDataGrid()EndIfEndIfEndSubPrivateSubbtnDel_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnDel.ClickCnameToCno()'删除选课记录SQLString="deleteSCwhereCno='"&Cno&"'andSno='"&User.UserID&"'"Msg=MsgBox("确定删除?",MsgBoxStyle.OkCancel,strInfo)'IfOK,thenexecuteSQLandrefillDataGridIfMsg=MsgBoxStyle.OkCancelThenCDBOperation.DBoperate(SQLString)FillDataGrid()EndIfEndSubEndClass注:在“ ”中自定义了 方法用于填充表格,还有添加和删除操作,和绑定下拉列表框。在其他使用类似方法的代码将不再重复附上详细代码,需要查看详细代码的请查看附带的项目文件。、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上个个个个个小小小小小小小小小小小小小小小小小小frmTeacher.vb、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上

个个个个个个个个个个个个个个个个个个个个个个小、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上个个个个个小小小小小小小小小小小小小小小小小小frmTeacher.vb、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上

个个个个个个个个个个个个个个个个个个个个个个小PrivateSubfrmTeacher_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load调用自定义过程进行数据填充FillDataSetAndView()调用自定义过程进行数据绑定BindFields()调用自定义过程填充表格FillGrid()EndSubPrivateSubgrdTC_CellContentDoubleClick(ByValsenderAsObject,ByValeAs System.Windows.Forms.DataGridViewCellEventArgs) HandlesgrdTC.CellContentDoubleClick’判断有没超过范围并获取当前活动单元的值IfgrdTC.CurrentCell.RowIndex<grdTC.RowCount-1Then'storeCnameforpassingittofrmTStudengInfoCname=grdTC.Item(0,grdTC.CurrentRow.Index).ValuefrmTStudentInfo.ShowDialog()EndIfEndIf注:该部分填充数据集 、填充表格 和绑定文本框的代码未给出,和前面给出的代码大同小异,需要查看详细代码请自行查阅项目文件。新增一个对“双击表格单元格内容”事件的操作 DPublicClassfrmAdminPublicTypeAsInteger'1forStudent,2forTeacher,3forCourse,4forSC,5forClassroom,6forTC,7forVenueDimisClickSBAsBoolean'judgewhetherthesearchbuttonshasbeenclicked,whenclickedthencaneditDimisModifyStatusAsBoolean'judgewhethertheModifybuttonhasbeenclicked(ModifyStatus)DimisDeleteStatusAsBoolean'judgewhethertheDeletebuttonhasbeenclicked(DeleteStatus)’由于录入和修改是是使用同一个对话框,所以需要设置一标志判断当前状态PublicisAddStatusAsBooleanDimADataSetAsNewDataSet()PrivateSubFillDataSetAndGrid(ByValTypeAsInteger)’如果是浏览学生信息IfType=1ThenSQLString="select*fromStudent"CDBOperation.DBoperate(SQLString)ADataSet.Clear()objDataAdapter.Fill(ADataSet,"SInfo")grdInfo.DataSource=ADataSetgrdInfo.DataMember="SInfo"’如果是教师信息ElseIfType=2ThenSQLString="select*fromTeacher"CDBOperation.DBoperate(SQLString)ADataSet.Clear()objDataAdapter.Fill(ADataSet,"TInfo")grdInfo.DataSource=ADataSetgrdInfo.DataMember="TInfo"EndIfEndSubPrivateSubLogoutToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesLogoutToolStripMenuItem.ClickfrmLogin.Show()Me.Close()EndSubPrivateSubExitToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesExitToolStripMenuItem.ClickEndEndSubPrivateSubTInfoToolStr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论