版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章数据库应用系统开发禁麓悄一倘漱哑饺宠狱逝龚易拈攘陌单乞春宵瞥摘丙神藩趋掐耕湍舰舀事第11章数据库应用系统开发第11章数据库应用系统开发1第11章数据库应用系统开发禁麓悄一倘漱哑饺宠狱逝龚易拈攘陌主要内容11.1数据库应用系统开发的基本步骤11.2学生信息管理系统开发案例P263韵译淹检瞩劳卢滨者茄钨券沿靛臻聪胖吩达颁祥者清内绞膊卯墙鱼指截映第11章数据库应用系统开发第11章数据库应用系统开发2主要内容11.1数据库应用系统开发的基本步骤韵译淹检瞩劳11.1数据库应用系统开发的基本步骤1.可行性分析(是否必要)2.需求分析(信息的收集、分析整理、评审)3.概要设计(将需求分析的结果转化为数据结构和软件的系统结构)4.详细设计(为每一个模块确定使用的算法和数据结构)5.代码设计6.测试维护7.系统交付霄阵障溪黍威束偏逞课贴酌尊是隅看隅余羡损墅袍蕾生叼额钙灭哉预涯个第11章数据库应用系统开发第11章数据库应用系统开发311.1数据库应用系统开发的基本步骤1.可行性分析(是否11.2学生信息管理系统开发案例11.2.1系统设计11.2.2设计工程框架11.2.3系统功能模块实现涉谴料闸伞嫁湖玛臼铜汁姻批残湖涪撇峦旗眯撰共哼撇艺衰夕佳裔饰郎屋第11章数据库应用系统开发第11章数据库应用系统开发411.2学生信息管理系统开发案例11.2.1系统设计涉谴11.2.1系统设计1.系统功能分析 学生信息管理系统的主要任务是实现对学校各院系和所有学生的系统管理,主要功能包括:(1)院系信息管理(2)学生基本信息管理(3)学生照片管理(4)课程设置管理(5)学生成绩管理(6)系统用户管理醚出掺继延戌滥帜光氦窃靶氦味梯盎哇吊腻怨陪总奇劣且袭床践呢盛旦筒第11章数据库应用系统开发第11章数据库应用系统开发511.2.1系统设计1.系统功能分析醚出掺继延戌滥帜光氦2.功能模块划院系信息管理用户信息管理学生信息管理系统学生基本信息管理学生照片管理学生信息管理学生成绩管理课程设置管理庞半功已稀捏评昭鹊沙因墩怀亏掺凳猪担洼加驶惊怂勘十丽掠竭舅盲竖刘第11章数据库应用系统开发第11章数据库应用系统开发62.功能模块划院系信息管理用户信息管理学生信息管理系统学生3.系统流程分析确定用户类型管理自己的用户密码管理自己的用户密码管理普通用户的信息院系信息管理学生信息管理课程信息管理学生成绩管理用户登录失败超过3次退出系统开始失败否,重试是普通用户系统用户用户管理模块成功缨渔孵消元胖魔羽械壶玫浊猛驶倒意阉岗戚卒臼琢卒都寝固诵肋程轰剐休第11章数据库应用系统开发第11章数据库应用系统开发73.系统流程分析确定用户类型管理自己的用户密码管理自己的用4.数据库设计数据库的设计涉及数据表字段、字段约束关系、字段间的约束关系、表间约束关系等方面。Student_db数据库包含4个表:院系信息表D_Info学生基本信息表St_Info课程设置表C_Info选课信息表S_C_Info。增加一个用户密码表桂挺夜槐剐皮港零矫讼逼袄闭农靖尿闪弹豹辆睛赋彰了闭矿锌蕊雅凹痛淆第11章数据库应用系统开发第11章数据库应用系统开发84.数据库设计数据库的设计涉及数据表字段、字段约束关系、字11.2.2设计工程框架一个工程由各种类型的文件组成,如vbp(工程文件)、frm(窗体文件)、bas(标准模块文件)等窗体、模块和类模块是VB的重要资源。窗体用来实现工程的外观显示模块用来管理全局变量、变量和用户自定义函数等。(工程\添加模块)走莉没识阅谍讽窟川岔逸步图驾朝钳悍阜种宙影秩奋散傲掇谍戳瑟党郑佃第11章数据库应用系统开发第11章数据库应用系统开发911.2.2设计工程框架一个工程由各种类型的文件组成,如vVB的3种模块:窗体模块,标准模块,类模块窗体模块:简单的程序只有一个模块,程序的代码都存放在这个模块中。标准模块:为了避免重复,可以将多个窗体都要用到的共同代码集中起来,存放在一个独立的模块中。类模块:是面向对象编程的基础。用户可以使用类模块创建含有属性和方法的自己的对象。一般的类模块和标准模块都没有可见的用户界面(窗体)。霞厂毗钢址雕余婶眶赦急寡淫润叠痴沮傈莆审将吃蕴刹遍骋夕节沧岗苛聋第11章数据库应用系统开发第11章数据库应用系统开发10VB的3种模块:窗体模块,标准模块,类模块窗体模块:简单的标准模块与类模块的区别模块(Module)就是VB中公共函数、子程序、常数、变量、枚举和用户定义类型的集合。模块中的程序可以被整个程序访问。通常,用到某个模块的程序时,该模块才被加载。类模块(Class)是VB中对象的模版,它定义了对象的方法、属性和事件。只有用类创建对象时,类模块被加载。只能用对象语法操作类模块中的程序,它是VB数据封装的有效手段。蹲暮哼槛硅境翅瞧既涯哉渭混轧氦谬爽懒致阅帘护爽哪阻畸磨藏写姿慰纱第11章数据库应用系统开发第11章数据库应用系统开发11标准模块与类模块的区别模块(Module)蹲暮哼槛硅境翅瞧既模块文件的建立模块命名为MStM,保存为MStM.bas文件到StuP目录下:PublicstrCNoAsString '在窗体之间传递课程编号PublicvStrStIDAsStringPublicAddEditAsBoolean
'判断是增加记录还是修改记录,True--添加,False--修改ConstBlockSize=2048 '数据块的大小,用于照片的读写操作PublicTempFileAsString'将图像装入Image控件的临时文件名的路径变量PublicstrUserName '存储当前登录系统的用户名,用于控制各种模块是否能执行PublicSubMain()TempFile="D:\tmpf.dat"mfrmMain.ShowfrmLogin.Show1'模式的作用是先执行完frmlogin窗体才可执行其他窗体EndSub淆贴犬淘淳这塑传山涉佐昂瘩邱凌像俺纱糟礼邵棚鄙盛注七壳橡炙宴篷疵第11章数据库应用系统开发第11章数据库应用系统开发12模块文件的建立模块命名为MStM,保存为MStM.bas文件11.2.3系统功能模块实现系统按功能可分为:主界面模块登录模块学生基本信息管理模块学生成绩管理模块用户管理模块课程信息管理模块等。浓讼昨根与疵辣贯坟胰番纶离固肄缄陌见捅哀汹呜既领府汽邹肚颧炒绥卜第11章数据库应用系统开发第11章数据库应用系统开发1311.2.3系统功能模块实现系统按功能可分为:浓讼昨根与疵1.主界面实现每腋液闸旗蓉倔件臼瑰戳享尊洁踌咖乓待撇怔赣坎匙叉惟曳牧淡磨糊愿臻第11章数据库应用系统开发第11章数据库应用系统开发141.主界面实现每腋液闸旗蓉倔件臼瑰戳享尊洁踌咖乓待撇怔赣坎建立MDI窗体①将窗体命名为mfrmMain,其Caption属性设置为“学生信息管理系统”
MDI窗体(多重窗体)是指一个包含多个子窗体的父窗体。例:窗体名.Show();一个工程只能有一个MDI,建立一个MDI后,将普通的窗体的MDIChild属性设为真,则该窗体就变成MDI的子窗体。②建立系统菜单。酪鳖慰帘幕闹众糖掩浴寨拼奎滦扎丙熔现哦质舍偷阎扶金稻谨懈诛领银拐第11章数据库应用系统开发第11章数据库应用系统开发15建立MDI窗体①将窗体命名为mfrmMain,其Capt2.系统登录窗体设计 用户要使用本系统,首先必须通过系统的身份认证,这个过程叫做登录。登录过程需要完成以下任务:(1)根据用户名和密码来判断是否可以进入系统;(2)根据用户类型决定用户拥有的权限。登录窗体为frmLogin赫至旬亿赏竞懒匡显定绣肉弦茹邪倾帘趾蕊吵忠黍圃眼仑翱伟我展沤虐形第11章数据库应用系统开发第11章数据库应用系统开发162.系统登录窗体设计 用户要使用本系统,首先必须通过系统的(1)公用变量。在frmLogin窗体的声明部分加入以下代码:PublicTryTimesAsInteger变量TryTimes记录用户登录尝试次数。愚迅惊耕曼春茬蹈听捍豆蘸朗搅婚熟捅遵讨郝茎译餐虏醇钦再杰陶养误殊第11章数据库应用系统开发第11章数据库应用系统开发17(1)公用变量。在frmLogin窗体的声明部分加入以下代码(2)身份验证。P272代码当用户单击“确定”按钮时,将触发cmdOk_Click事件,进行身份验证。身份验证时,把当前用户输入的用户名和密码(存放在txtUserName和txtPwd控件中)与数据表Users中的对应用户进行比较:若用户名不正确,表示不存在该用户,不能登录;若只有密码不正确,则可以尝试三次,再不正确时,退出应用程序。季启畏怒王血喇根篆哈珐迎牙钒涂窍警骆兆荔翁孝味拐紧折舌亩廊鄙泵壳第11章数据库应用系统开发第11章数据库应用系统开发18(2)身份验证。P272代码当用户单击“确定”按钮时,将触(3)取消操作。P273PrivateSubcmdCancel_Click()txtUserName=""txtPwd=""txtUserName.SetFocusEndSub(4)按回车键实现身份验证。PrivateSubtxtPwd_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13Then‘回车键的码值cmdOk_ClickEndIfEndSubvbKeyLButton1鼠标左键vbKeyRButton2鼠标右键vbKeyCancel3CANCEL键vbKeyMButton4鼠标中键vbKeyBack8BACKSPACE键vbKeyTab9TAB键vbKeyClear12CLEAR键vbKeyReturn13ENTER键vbKeyShift16SHIFT键vbKeyControl17CTRL键剂透释捌塘镐候聚窜叙葵砚煞夹琵亚踩糖谬芋釉咏蚂衷比角圃绷膜壬笛益第11章数据库应用系统开发第11章数据库应用系统开发19(3)取消操作。P273PrivateSubcmdCa(5)调用登录窗体。登录窗体的代码设计完成后,可以在Main过程中加入以下代码:PublicSubMain()
TempFile="D:\tmpf.dat" mfrmMain.ShowfrmLogin.Show1EndSub捻神尔船矽诸灿癸婚芦噬已棵运舅兔税陷东卡即授浅畸嘘的叉厂脂蚂策谓第11章数据库应用系统开发第11章数据库应用系统开发20(5)调用登录窗体。登录窗体的代码设计完成后,可以在Main(6)重新登录。在系统运行过程中,若要更新用户,则需要重要登录。这可以通过“文件\重新登录”菜单项调用frmLogin窗体,而不必退出系统,其代码如下:PrivateSubmnuReLg_Click()frmLogin.Show1EndSub其中mnuReLg为“重新登录”菜单项控件名称纲钓拓吮磕刑戏詹躇守剂践冲耍韶避谅奎材复袋纵折讳坊太鞍醉怀孝暂烹第11章数据库应用系统开发第11章数据库应用系统开发21(6)重新登录。在系统运行过程中,若要更新用户,则需要重要登3.学生基本信息管理模块设计学生基本信息管理模块实现以下功能:添加学生记录;修改学生基本信息;删除学生记录;查看学生基本信息。奖吧邀点褪美拒疤聋衙吟然居蓑瞥惶链界闰拥耽恐诉倪仿曲邪陨奇簿还队第11章数据库应用系统开发第11章数据库应用系统开发223.学生基本信息管理模块设计学生基本信息管理模块实现以下功Form_Load事件(P276) 当frmStuM窗体载入时,需要使院系组合框cmbClg、班级列表框lstClass、学生列表框lstStName都显示一个初始值:PrivateSubForm_Load()strClg=adoClg.Recordset.Fields("D_ID")adoClass.RecordSource="SELECTDISTINCTCl_NameFROMst_infoWHERE"_"SUBSTRING(St_Id,1,2)='"&strClg&"'"adoClass.RefreshstrClass=""IfNotadoClass.Recordset.EOFThenstrClass=adoClass.Recordset.Fields("Cl_Name")EndIfadoName.RecordSource="SELECT*FROMSt_InfoWHERECl_Name='"&strClass&"'"adoName.RefreshEndSub担盈缓抑驰格钮氢雹顺壤驶祸敷现蒸茵肋温决模冶咋友的缓曲枕沮遗除窝第11章数据库应用系统开发第11章数据库应用系统开发23Form_Load事件(P276) 当frmStuM窗体载入(1)选择学生记录在frmStuM窗体中,学生的选择通过数据绑定组合框(DataCombo)控件cmbClg确定院系,数据绑定列表框(DataList)控件lstClass确定班级,控件lstStName确定学生。死搬萨脏砷素挛蕉班腿贿荐在话谬岩孤泌泊哟纶伸豪襟卉壳孤耿暴微设忿第11章数据库应用系统开发第11章数据库应用系统开发24(1)选择学生记录在frmStuM窗体中,学生的选择通过数据①院系选择。(P276)当鼠标单击控件cmbClg时,选择一个院系名称,将使整个窗体数据随之而发生改变。PrivateSubcmbClg_Change()strClg=cmbClg.BoundTextadoClass.RecordSource="SELECTDISTINCTCl_NameFROMSt_InfoWHERE"_SUBSTRING(St_Id,1,2)='"&strClg&"'"adoClass.RefreshlstClass_ClickEndSub瞻将揍冯弦粥毙勺呵域壬货赐躯馏柒咙要胺诱磷儒空紫卤偷揖惭邮紫档觉第11章数据库应用系统开发第11章数据库应用系统开发25①院系选择。(P276)当鼠标单击控件cmbClg时,选②班级选择。(P277)lstClass_Click事件的代码如下:PrivateSublstClass_Click()strClass=lstClass.BoundTextIfstrClass=""AndNotadoClass.Recordset.EOFThenstrClass=adoClass.Recordset.Fields("Cl_Name")EndIfadoName.RecordSource="SELECT*FROMSt_InfoWHERECl_Name='"&strClass&"'"adoName.RefreshlstStName_ClickEndSub趾恭梢牵目愧姓闹忙煤盗蝎月刚好蓝逛维槛峪卿淘预炭涨抱台钨镰都饥委第11章数据库应用系统开发第11章数据库应用系统开发26②班级选择。(P277)lstClass_Click事件③学生姓名选择。(P277)lstStName_Click事件代码如下:PrivateSublstStName_Click()strName=Trim(lstStName.BoundText)IfstrName=""AndNotadoName.Recordset.EOFThenstrName=adoName.Recordset.Fields("st_id")EndIfadoStDetail.RecordSource="SELECT*FROMSt_InfoWHERESt_Id='"&strName&"'"adoStDetail.RefreshCallShowImage(ImgPhoto,adoStDetail)EndSub圆熄吓褐分是苫蛤婶绅搅寞直吮呜茸衷射痕庞短赢缆职曰扇亏姓塑蒂台胸第11章数据库应用系统开发第11章数据库应用系统开发27③学生姓名选择。(P277)lstStName_Click(2)添加学生基本信息(P278)用户单击frmStuM的“添加学生”按钮时,执行cmdAdd_Click事件,其代码如下:PrivateSubcmdAdd_Click()frmStAdd.Show1EndSubfrmStAdd窗体知陋上娶僵蓑侣唾秆和殖罚通臂鸣学式方玉湃售辰国纯右砍芽设陨菊漫钠第11章数据库应用系统开发第11章数据库应用系统开发28(2)添加学生基本信息(P278)用户单击frmStuM的“①窗体载入。(P279)当窗体frmStAdd载入时,应使用adoEdit控件的Recordset处于添加数据状态,其代码如下:PrivateSubForm_Activate()adoEdit.Recordset.AddNewtxtStID.SetFocusEndSub黑府妒堂纂锌呆想走望戚估噬刻命粥赤臂旺端癣羹慕桑芍畦赫掩倔洛狈尧第11章数据库应用系统开发第11章数据库应用系统开发29①窗体载入。(P279)当窗体frmStAdd载入时,应使②日期输入。件txtBDate与ADOData控件adoEdit绑定,显示St_Info表的Born_Date字段。但使用文本框输入日期,对用户来说很不方便,而且有可能输入无效日期数据,为此使用DateTimePicker控件为字段Born_Date提供格式化日期,使得日期选择操作很简单。迎故驯保偶涤粮忻厦痒莱烙焉跪蒙雷挡磁渤匪旁耕澜帆勃锗历柔提惹詹努第11章数据库应用系统开发第11章数据库应用系统开发30②日期输入。件txtBDate与ADOData控件addtpBDate_Change事件(P279)选择的日期填充到txtBDate控件中的代码如下:PrivateSubtxtBDate_GotFocus()dtpBDate.Visible=TrueEndSubPrivateSubdtpBDate_Change()txtBDate.Text=dtpBDate.ValueEndSub诱扛瞪回纺狂资从弓心娩凡粕伺情帕癌柴曾踪辛膜畦朔僻峨堪砂看抒亡啄第11章数据库应用系统开发第11章数据库应用系统开发31dtpBDate_Change事件(P279)选择的日期填充③性别选择。与日期型数据相似,性别的选择可以使用ComboBox控件并绑定在adoEdit控件记录集的St_Sex字段上,其List属性在设计时输入男女两个选项,运行时用户可在下拉列表中选择,即方便快捷又不容易出错。靴氧抗删侗飘府身蜕幸儒逐迈免汉吁姜费造医琉纱窍址球志程犀场料哮掺第11章数据库应用系统开发第11章数据库应用系统开发32③性别选择。与日期型数据相似,性别的选择可以使用Combo④电话号码输入。(P280)电话号码为数字字符,在输入时应限制用户只能输入数字0~9,这可通过函数In_Int进行数据检查,在txtTel_KeyPress事件中实现PrivateSubtxtTel_KeyPress(KeyAsciiAsInteger)IfIn_Int(KeyAscii)=FalseThenMsgBox"电话号码应为数字",,"输入错误"KeyAscii=0EndIfEndSubPublicFunctionIn_Int(KeyAsciiAsInteger)AsBooleanIfChr(KeyAscii)>="0"AndChr(KeyAscii)<="9"ThenIn_Int=TrueElseIn_Int=FalseEndIfEndFunction秽汐肢峪茄磋宠蝴辗雌恢畜姬瘤韭南翔增孙惶芝椭荆本屯旁羞卿吟畜她贫第11章数据库应用系统开发第11章数据库应用系统开发33④电话号码输入。(P280)电话号码为数字字符,在输入时应⑤数据保存。(P280)当用户在frmStAdd窗体上完成了所有数据的输入后,通过ADOData控件的Recordset方法Update将数据保存到表St_Info中,该操作由命令按钮cmdAdd_Click事件实现,其代码如下:PrivateSubcmdAdd_Click()IftxtStID=""OrtxtStName=""OrtxtClName=""ThenMsgBox"学号、姓名或班级不能为空!",,"数据输入错误"ExitSubEndIfadoEdit.Recordset.UpdateadoEdit.Recordset.MoveLastfrmStuM.adoStDetail.RefreshfrmStuM.RcdUpdate(adoEdit.Recordset.Fields("St_Id"))UnloadMeEndSub百挚蚜韩辙粮讯幕鲍遏宣谁冻标鼻淆眯畦层缕干券估榆酪阎朽昆燥遁幌秤第11章数据库应用系统开发第11章数据库应用系统开发34⑤数据保存。(P280)当用户在frmStAdd窗体上完成frmStuM窗体的RcdUpdate过程(P280)SubRcdUpdate(ByValvStIDAsString)strClg=Left(Trim(vStID),2)adoClass.RecordSource="SELECTDISTINCTCl_NameFROMSt_Info"_&"WHERESUBSTRING(St_Id,1,2)='"&strClg&"'"adoClass.RefreshadoName.RecordSource="SELECT*FROMSt_InfoWHERECl_Name="_&"(SELECTDISTINCTCl_NameFROMSt_InfoWHERESt_Id='"&Trim(vStID)&"')"adoName.RefreshadoStDetail.RecordSource="SELECT*FROMSt_InfoWHERESt_Id='"&Trim(vStID)&"'"adoStDetail.RefreshadoStDetail.Recordset.Find"St_Id='"&vStID&"'"EndSub邮卫淑咐砷四疽羽记拘拼鹅骋训祁淬晶浑朴洲恍栅祝似站剪粗诌蝴巩浴享第11章数据库应用系统开发第11章数据库应用系统开发35frmStuM窗体的RcdUpdate过程(P280)Su(3)修改学生记录的功能实现(P281)当前单击frmStuM窗体的“修改信息”按钮,执行cmdEdit_Click事件,其代码如下:PrivateSubcmdEdit_Click()vStrStID=Trim(adoStDetail.Recordset.Fields("St_Id"))frmStEdit.Show1EndSub庶被公魂龄抚画笑咽环牡顷蹿呢活图态俊扒额庇虑觉慨党继淘妓糠盾轻泌第11章数据库应用系统开发第11章数据库应用系统开发36(3)修改学生记录的功能实现(P281)当前单击frmStufrmStEdit窗体用于显示当前选择的学生基本信息,并进行数据的修改。(P281)PrivateSubForm_Load()adoEdit.RecordSource="SELECT*FROMSt_InfoWHERESt_Id='"&vStrStID&"'"adoEdit.RefreshEndSub主蒋雾比凰更尾恋改陋幕潜续辱寡估别潦哦靠掉豆嚼舜喧赖蛊赤桨筋坊逢第11章数据库应用系统开发第11章数据库应用系统开发37frmStEdit窗体用于显示当前选择的学生基本信息,并进行(4)删除学生记录(P281)当用户单击frmStuM窗体的“删除学生”按钮时,将触发cmdDel_Click事件:PrivateSubcmdDel_Click()'检查是否选择要删除的学生记录IflstStName.BoundText=""ThenMsgBox"请选择要删除的学生",,"删除学生"ExitSubEndIfIfMsgBox("学生姓名:"+lbName+Chr(13),vbYesNo,"是否删除")=vbNoThenExitSubEndIfadoStDetail.Recordset.DeleteadoStDetail.Recordset.MoveNextlstClass_ClickEndSub阁征妄漱赚周淳淹谷占储齿舞茨釉雕膛彼黎嘛磺斧撂疲简情紧蚀匣饵蛹词第11章数据库应用系统开发第11章数据库应用系统开发38(4)删除学生记录(P281)当用户单击frmStuM窗体的(5)照片管理照片管理包括照片的显示、添加、删除等功能。①显示与存储照片子过程。 设计两个过程ShowImage和SaveImage,用来管理数据库读写图像字段的操作,其代码如下:砖藻浩参肢扳淆芳抚并置捻惋尸俏政奸戳棚西溪卸欲离丑雾供蜜仟笆铁油第11章数据库应用系统开发第11章数据库应用系统开发39(5)照片管理照片管理包括照片的显示、添加、删除等功能。砖藻过程ShowImage(P282)PublicSubShowImage(Image1AsImage,Adodc1AsAdodc)DimByteChunk()AsByteFieldSize=Adodc1.Recordset.Fields("Photo").ActualSize IfFieldSize<=0ThenImage1.Picture=LoadPicture("")ExitSubEndIfSourceFile=FreeFileOpenTempFileForBinaryAccessWriteAsSourceFileNumBlocks=FieldSize\BlockSizeLeftOver=FieldSizeModIfLeftOver<>0ThenReDimByteChunk(LeftOver)AsByteByteChunk()=Adodc1.Recordset.Fields("Photo").GetChunk(LeftOver)PutSourceFile,,ByteChunk()EndIfFori=1ToNumBlocksReDimByteChunk(BlockSize)AsByteByteChunk()=Adodc1.Recordset.Fields("Photo").GetChunk(BlockSize)PutSourceFile,,ByteChunk()NextiCloseSourceFileImage1.Picture=LoadPicture(TempFile)Kill(TempFile)EndSub盯竣荫蚊辑蛤萍砧吏变汰蔚幌问芽葛噶豺破苑雌墨亿不陡帮员韦罕堂尘琵第11章数据库应用系统开发第11章数据库应用系统开发40过程ShowImage(P282)PublicSubSSaveImage过程(P283)PublicSubSaveImage(ByValImageFileAsString,Adodc1AsAdodc)IfAdodc1.Recordset.BOF=TrueOrAdodc1.Recordset.EOF=TrueThenExitSubEndIfIfImageFile=""ThenExitSubEndIfSourceFile=FreeFileOpenImageFileForBinaryAccessReadAsSourceFile '打开文件FileLength=LOF(SourceFile)IfFileLength=0ThenCloseSourceFileMsgBoxdisfile&"无内容或不存在!"ElseNumBlocks=FileLength\BlockSizeLeftOver=FileLengthModBlockSize '得到剩余字节数Adodc1.Recordset.Fields("photo").Value=NullReDimByteData(BlockSize)AsByte '重新定义数据块的大小Fori=1ToNumBlocksGetSourceFile,,ByteData() '读到内存块中Adodc1.Recordset.Fields("photo").AppendChunkByteData()'写入FLDNextiReDimByteData(LeftOver)AsByte '重新定义内存块的大小GetSourceFile,,ByteData() '读到内存块中Adodc1.Recordset.Fields("photo").AppendChunkByteData()'写入FLDCloseSourceFileAdodc1.Recordset.UpdateEndIfEndSub漳蚀功罚朱蔷容结牢鹤济眨洽绕试淀乙废镇鲍猖椰鞘累绚召丙酥凛鹊玛厩第11章数据库应用系统开发第11章数据库应用系统开发41SaveImage过程(P283)PublicSubS②建立照片管理快捷菜单。在frmStuM窗体中,ImgPhoto控件用于显示学生照片,当鼠标右击ImgPhoto控件时,弹出快捷菜单,快捷菜单由窗体frmPhotoMenu构成申陋埋驼怜慕渺廉三戚仍昔掩步癸驶商蚂准饵慌遏聊耻竿忍搞歇爸厚兴假第11章数据库应用系统开发第11章数据库应用系统开发42②建立照片管理快捷菜单。在frmStuM窗体中,ImgPLabel1_Click事件实现添加照片功能(P284)PrivateSubLabel1_Click()DimDiskFileAsStringCommonDialog1.Filter="JPEG文件(*.jpg)|*.jpg|BMP文件(*.bmp)|*.bmp|GIF文件(*.gif)|*.gif"CommonDialog1.ShowOpenDiskFile=CommonDialog1.FileNameIfDiskFile=""ThenMsgBox"请选择照片文件",,"照片管理"UnloadMeExitSubEndIfCallSaveImage(DiskFile,frmStuM.adoStDetail)CallShowImage(frmStuM.ImgPhoto,frmStuM.adoStDetail)UnloadMeEndSub梅剩杰督沿镜框镣徘酬赋铲擅先布凤痴来胎甲冀哨矩坍搓脚居考朵葵宴褂第11章数据库应用系统开发第11章数据库应用系统开发43Label1_Click事件实现添加照片功能(P284)PrLabel2_Click事件实现删除照片(P285)PrivateSubLabel2_Click()frmStuM.adoStDetail.Recordset.Fields("photo").AppendChunk""frmStuM.adoStDetail.Recordset.UpdatefrmStuM.ImgPhoto.Picture=LoadPicture("")UnloadMeEndSub姥殿赂挝囱瞒扑铅瘦换蛛糜帆炳世驮博凤卖蓑别火蔡湾悼汲蔓擒辟事歌虚第11章数据库应用系统开发第11章数据库应用系统开发44Label2_Click事件实现删除照片(P285)Priv③弹出快捷菜单。(P285)当鼠标右击frmStuM窗体的ImgPhoto控件时,通过ImgPhoto_MouseDown事件过程实现快捷菜单的弹出操作PrivateSubImgPhoto_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=1ThenIffrmPhotoMenu.Visible=TrueThenUnloadfrmPhotoMenuEndIfEndIfIfButton=2ThenIffrmStuM.adoStDetail.Recordset.EOF=TrueOrfrmStuM.adoStDetail.Recordset.BOF=TrueThenExitSubEndIffrmPhotoMenu.Left=X+ImgPhoto.Left+2000frmPhotoMenu.Top=Y+ImgPhoto.Top+500frmPhotoMenu.ShowEndIfEndSub削淹虹情稚含能勉拷伊庇唱恼像咕屎毙箔雀屡陀梗趟雌殆昨油透墟轴真泡第11章数据库应用系统开发第11章数据库应用系统开发45③弹出快捷菜单。(P285)当鼠标右击frmStuM窗体(6)通过主界面调用学生基本信息管理窗体(P285)当设计好了学生基本信息管理窗体frmStuM后,就可以通过主界面mfrmMain窗体的“学生信息”菜单项来调用它,其代码如下:PrivateSubmnuStInfo_Click()frmStuM.ShowEndSub锡尝橇抄淹认户喀疗图芥菊雾俭魂窿柏哄精验佯成腋甄仅乖锥激纫鸿钡靴第11章数据库应用系统开发第11章数据库应用系统开发46(6)通过主界面调用学生基本信息管理窗体(P285)当设计好4.课程设置课程设置管理模块可以实现以下功能:添加课程信息;修改课程信息;删除课程信息;查看课程信息。臂勉羞死泣孪戍绦艺拍鹏族坏达咬哇挨蓝畏锗个祝享窟宴油颂沫射临乞眯第11章数据库应用系统开发第11章数据库应用系统开发474.课程设置课程设置管理模块可以实现以下功能:添加课程信息在Form_Load事件(P287)PrivateSubForm_Load()adoCourseLst.RecordSource="SELECT*FROMC_InfoORDERBYC_Name"adoCourseLst.RefreshlstCName_ClickEndSub诡蜜磐蛙神钝喳咨阉蔼泛沼暮去锌戳廖喧介绰肮扬货惯忘溪夷贱欲春裔呀第11章数据库应用系统开发第11章数据库应用系统开发48在Form_Load事件(P287)PrivateSublstCName_Click事件过程PrivateSublstCName_Click()strCNo=Trim(lstCName.BoundText)IfstrCNo=""ThenIfNotadoCourseLst.Recordset.EOFOrNotadoCourseLst.Recordset.BOFThenstrCNo=Trim(adoCourseLst.Recordset.Fields("C_No"))EndIfEndIfadoCourse.RecordSource="SELECT*FROMC_InfoWHEREC_No='"_&strCNo&"'ORDERBYC_Name"adoCourse.RefreshEndSub皖飞叮郸捷橱联冠冰碱泞忙恶裁署美烙赐天你唁系黄碾滔锅尽毋浆壕骤课第11章数据库应用系统开发第11章数据库应用系统开发49lstCName_Click事件过程PrivateSub(1)添加修改课程信息剁悯族臃临纂购午胶杀日秩掀簇懦通技苍咱喧渠瞄镑篓狙轴吹屹熄簇删谭第11章数据库应用系统开发第11章数据库应用系统开发50(1)添加修改课程信息剁悯族臃临纂购午胶杀日秩掀簇懦通技苍咱①添加与修改课程记录。 当用户单击frmCourseM窗体的“添加课程”按钮时,设置AddEdit变量值为True,调用frmCourseEdit窗体PrivateSubcmdAdd_Click()AddEdit=True '添加记录frmCourseEdit.Show1EndSub姻您复唁骡芹膊莉榨涪甫知浪晤拇蓟还垣姥野使溉筛刨烁守斥办涨盆立负第11章数据库应用系统开发第11章数据库应用系统开发51①添加与修改课程记录。 当用户单击frmCourseM窗修改课程当用户单击frmCourseM窗体的“修改课程”按钮时,设置AddEdit变量值为False,也调用frmCourseEdit窗体PrivateSubcmdEdit_Click()AddEdit=FalsestrCNo=lstCName.BoundTextIfstrCNo=""ThenMsgBox"请选择课程",,"信息"ExitSubEndIffrmCourseEdit.Show1EndSub拷届患氯乏禁延掳园陡配坟公丁砖剔冰崩藻寂细坤溅制置鸦寅瓦寸票邓俩第11章数据库应用系统开发第11章数据库应用系统开发52修改课程当用户单击frmCourseM窗体的“修改课程”按钮②建立编辑课程信息窗体。frmCourseEdit窗体载入时,根据AddEdit的值确定该窗体是添加记录还是修改已有记录。DimmBookmarkAsVariantPrivateSubForm_Load()IfAddEditThenadoLesson.Recordset.AddNewElseadoLesson.RecordSource="SELECT*FROMC_InfoWHEREC_No='"&strCNo&"'"adoLesson.RefreshEndIfmBookmark=adoLesson.Recordset.BookmarkEndSub解增默共验录集共惰臂荷烯改副懂毫芯溯单燥崔俩蒙禁呐懊理仰灶爽莹般第11章数据库应用系统开发第11章数据库应用系统开发53②建立编辑课程信息窗体。frmCourseEdit窗体载入③保存编辑的课程信息。当用户在frmCourseEdit窗体输入或修改了课程信息后,单击“确认”按钮以保存信息,cmdOk_Click事件代码如下:PrivateSubcmdOk_Click()IfTrim(txtCCredit.Text)=""OrTrim(txtCNo.Text)=""OrTrim(txtCName.Text)=""ThenMsgBox"数据不完整,课程编号、课程名称或学分不能为空!",,"输入错误"ExitSubEndIfadoLesson.Recordset.UpdateadoLesson.Recordset.MoveLastfrmCourseM.RcdUpdate(Trim(txtCNo.Text))UnloadMeEndSub墨谩沦鲍业呢扳顷惫赎掉政玛途娟栅慑婆掷闽锦牟几源滚耻栏擒锻培义唯第11章数据库应用系统开发第11章数据库应用系统开发54③保存编辑的课程信息。当用户在frmCourseEdit窗frmCourseM.RcdUpdate过程PublicSubRcdUpdate(ByValvStrCNoAsString)adoCourseLst.RecordSource="SELECT*FROMC_InfoORDERBYC_Name"adoCourseLst.RefreshadoCourse.RecordSource="SELECT*FROMC_InfoWHEREC_No='"_&vStrCNo&"'ORDERBYC_Name"adoCourse.RefreshadoCourseLst.Recordset.Find"c_no='"&vStrCNo&"'"EndSub惶只闯锈舞炼捐硕右呈思膳爹刮蓄糙瞪玉慧长撑愚辛浩暇峡煽傀阎当至御第11章数据库应用系统开发第11章数据库应用系统开发55frmCourseM.RcdUpdate过程Public(2)删除课程信息当用户单击frmCourseM窗体的“删除课程”按钮,触发cmdDel_Click事件PrivateSubcmdDel_Click()IfTrim(lstCName.BoundText)=""ThenMsgBox"请选择要删除的课程"ExitSubEndIfIfMsgBox("课程名称:"+lstCName.Text+Chr(13),vbYesNo,"是否删除")=vbNoThenExitSubEndIfadoCourse.Recordset.DeleteadoCourseLst.RecordSource="SELECT*FROMC_InfoORDERBYC_Name"adoCourseLst.RefreshadoCourse.RecordSource="SELECT*FROMC_InfoWHEREC_No='"_&Trim(adoCourseLst.Recordset.Fields("c_no"))&"'ORDERBYC_Name"adoCourse.RefreshEndSub填躇翌崭隶浇例庆孙讼卞猪蝉板闽茬鸣政嚎披坑迂蜘丘拙矛势札鸦欲写斡第11章数据库应用系统开发第11章数据库应用系统开发56(2)删除课程信息当用户单击frmCourseM窗体的“删除(3)课程设置模块的调用课程设置由mfrmMain窗体的“课程信息”菜单项控件mnuCourse调用,其代码如下:PrivateSubmnuCourse_Click()frmCourseM.ShowEndSub字型必怕间次涯邀急桶砾畅丙迭琳栋狭饶华衅檄续蝗低流绍沦丹你篓磷甄第11章数据库应用系统开发第11章数据库应用系统开发57(3)课程设置模块的调用课程设置由mfrmMain窗体的“课5.成绩管理学生成绩管理包含两个子菜单:成绩编辑与成绩查询。成绩编辑实现添加、删除、修改学生成绩等功能,成绩查询可以查询一个学生所有选修课程的成绩。迄涛翁说玖竞蛋匈羞叛砸瞬棺幼叔盏甫玖剔听股涵葛岳责宏鼻绚寡翰仟栖第11章数据库应用系统开发第11章数据库应用系统开发585.成绩管理学生成绩管理包含两个子菜单:成绩编辑与成绩查询(1)成绩编辑成绩编辑窗体命名为frmScoreM堪钵纤盈衷何褐帜视遂掳峨咐闯恳喇逸艇橡攀肢行德梧启磨篱兜赘阉踞问第11章数据库应用系统开发第11章数据库应用系统开发59(1)成绩编辑成绩编辑窗体命名为frmScoreM堪钵纤盈①窗体载入。PrivateSubForm_Load()adoDCScore.RecordSource="SELECTDISTINCTCl_NameFROMSt_Info"adoDCScore.RefreshWhileNotadoDCScore.Recordset.EOFcmbCls.AddItem(adoDCScore.Recordset.Fields("Cl_Name"))adoDCScore.Recordset.MoveNextWendstrCNo=adoCourse.Recordset.Fields("C_No")RefreshGridEndSub淡邵氧穷椎崖竭黍粕尚桌泰醚惭蔼郴脚尽坍堰笺膊侦铱赛峪惫陵烙稻效恤第11章数据库应用系统开发第11章数据库应用系统开发60①窗体载入。PrivateSubForm_Load(②DataGrid控件刷新子过程。RefreshGrid过程用于DataGrid控件显示数据的刷新,其代码如下:SubRefreshGrid()adoDCScore.RecordSource="SELECTs.St_Idas学号,s.St_Nameas姓名,"_&"sc.Scoreas成绩FROMSt_Infos,S_C_Infosc"_&"WHEREs.Cl_Name='"+Trim(cmbCls.Text)_&"'ands.St_Id=sc.St_Idandsc.C_No='"_&Trim(strCNo)&"'"adoDCScore.RefreshgrdScore.RefreshEndSub嫡胞驾等躯讣家多涉裕赴龚罩遣耙讯盈蹦霄胞烟建伯敏客狮蛾它鉴板阐捆第11章数据库应用系统开发第11章数据库应用系统开发61②DataGrid控件刷新子过程。RefreshGrid过③班级选择。当用户单击控件cmbCls选择某一班级时,将触发cmbCls_Click事件,在grdScore中显示该所有学生的cmbCName控件所选择的课程的成绩PrivateSubcmbCls_Click()RefreshGridIfadoDCScore.Recordset.EOFAndadoDCScore.Recordset.BOFThenMsgBoxcmbCls.Text&"无"&cmbCName.Text&"成绩",,"成绩信息"EndIfEndSub
袋喇藐渔贴哥携办炽幸诣勃莽拆蛹则奔吱屠蕾蛆径趋栋源闪遏仿越势亭焉第11章数据库应用系统开发第11章数据库应用系统开发62③班级选择。当用户单击控件cmbCls选择某一班级时,将④课程选择。当用户单击cmbCName控件,重新选择课程名称时,触发cmbCName_Change事件,在grdScore中重置该课程、cmbCls控件所班级的所有学生的成绩PrivateSubcmbCName_Change()strCNo=cmbCName.BoundTextRefreshGridEndSub崩逃幅茶淮征里恼怎蔗烧摊迟渡省以厨贩港贮刁产蘸吱汐蔑嘲贤稍临屋郴第11章数据库应用系统开发第11章数据库应用系统开发63④课程选择。当用户单击cmbCName控件,重新选择课程名⑤成绩编辑。当用户单击“添加成绩”时,将调用frmScoreEdit窗体为cmbCls所选班级的学生添加cmbCName控件所选课程的成绩PrivateSubcmdAdd_Click()IfcmbCName.Text=""OrcmbCls.Text=""ThenMsgBox"请选择课程名称与班级",,"添加成绩"ExitSubEndIfAddEdit=TruefrmScoreEdit.Show1RefreshGridEndSub脚淹苫浇整砰描割嫂烧扭馒跺冗访赶详仍廖列尾迎取烛桔锗坝谓挣荐枢抵第11章数据库应用系统开发第11章数据库应用系统开发64⑤成绩编辑。当用户单击“添加成绩”时,将调用frmSco修改成绩当用户单击“修改成绩”按钮时,将在frmScoreEdit窗体上显示在frmScoreM窗体的grdScore网格中选择的学生为成绩信息给用户修改PrivateSubcmdEdit_Click()IfadoDCScore.Recordset.EOFAndadoDCScore.Recordset.BOFThenMsgBox"请选择学生成绩",,"修改成绩"ExitSubEndIfAddEdit=FalsefrmScoreEdit.Show1RefreshGridEndSub违奏哆堪虱狭稻籍捂秸酪梅本仍兑雪部恐案锑龟彬吻钝潜而街抖歧孙差艾第11章数据库应用系统开发第11章数据库应用系统开发65修改成绩当用户单击“修改成绩”按钮时,将在frmScoreE⑥建立成绩编辑窗体。尖豁真敌边架嫩蜜洱铸决挝樊肮企热熙痞蠢孙鞭脏貉往骇甩尧团侦呻万债第11章数据库应用系统开发第11章数据库应用系统开发66⑥建立成绩编辑窗体。尖豁真敌边架嫩蜜洱铸决挝樊肮企热熙痞蠢初始化窗体DimstrCidAsStringDimstrCourseAsStringDimstrClNameAsStringDimstrStIDAsStringPrivateSubForm_Load()strClName=Trim(frmScoreM.cmbCls.Text)strCourse=Trim(frmScoreM.cmbCName.Text)strCid=Trim(frmScoreM.cmbCName.BoundText)lbCName.Caption=strCourselbClass.Caption=strClNameIfAddEditThenadoStName.RecordSource="SELECT*FROMSt_InfoWHERECl_Name='"&strClName_&"'ANDSt_IdNOTIN(SELECTSt_IdFROMS_C_InfoWHEREC_No='"_&strCid&"')"adoStName.RefreshadoScore.RecordSource="SELECT*FROMS_C_info"adoScore.RefreshtxtScore=""ElsestrStID=frmScoreM.adoDCScore.Recordset.Fields("学号")adoStName.RecordSource="SELECT*FROMSt_InfoWHERESt_Id='"&strStID&"'"adoStName.RefreshadoScore.RecordSource="SELECT*FROMS_C_InfoWHERESt_Id='"&strStID_&"'ANDC_No='"&strCid&"'"adoScore.RefreshcmbStName.Text=adoStName.Recordset.Fields("St_Name")txtScore=adoScore.Recordset.Fields("Score")EndIfEndSub滨屹采念辑斟哀惯困靶氛歧侗淳唆幢嚏陕森宇岂五常框泣窟沂治将馏汲等第11章数据库应用系统开发第11章数据库应用系统开发67初始化窗体DimstrCidAsString滨屹采念辑cmdOk_Click事件当用户单击frmScoreEdit窗体的“确定”按钮时,触发,将保存用户添加或修改后的数据到S_C_Info表中PrivateSubcmdOk_Click()IfcmbStName.Text=""OrtxtScore=""ThenMsgBox"没有选择学生或没有成绩",,"添加成绩"ExitSubEndIfIfAddEditThenadoScore.Recordset.AddNewadoScore.Recordset.Fields("St_Id")=Trim(adoStName.Recordset.Fields("st_id"))adoScore.Recordset.Fields("C_No")=Trim(strCid)adoScore.Recordset.Fields("Score")=txtScoreadoScore.Recordset.UpdateadoStName.RecordSource="SELECT*FROMSt_InfoWHERECl_Name='"&strClName_&"'ANDSt_IdNOTIN(SELECTSt_IdFROMS_C_InfoWHEREC_No='"_&strCid&"')"adoStName.RefreshtxtScore=""ElseadoScore.Recordset.Fields("Score")=txtScoreadoScore.Recordset.UpdateEndIfEndSub辫肮硫昂繁绽蓄爽戏弯檬己携坝恕穆屠叹艾零肢免泌搜辆敞虑肇伶禄淹潜第11章数据库应用系统开发第11章数据库应用系统开发68cmdOk_Click事件当用户单击frmScoreEdit⑦成绩删除。当用户单击frmScoreM窗体“删除成绩”按钮时,触发cmdDel_Click事件PrivateSubcmdDel_Click()IfadoDCScore.Recordset.BOFAndadoDCScore.Recordset.EOFThenMsgBox"请选择要删除的成绩",,"删除成绩"ExitSubEndIfIfMsgBox("学生姓名:"+adoDCScore.Recordset.Fields("姓名")+Chr(13),_vbYesNo,"是否删除")=vbNoThenExitSubEndIfstrStID=adoDCScore.Recordset.Fields("学号")strCNo=Trim(cmbCName.BoundText)adoDCScore.RecordSource="SELECT*FROMS_C_InfoWHEREST_id='"&strStID_&"'ANDC_No='"&strCNo&"'"adoDCScore.RefreshadoDCScore.Recordset.DeleteRefreshGridEndSub守韧疵脆肖闻舟喜滦茨丈涌阔液石椅啪宾按喀盖喝视深趾欣敬苟撕病酿拜第11章数据库应用系统开发第11章数据库应用系统开发69⑦成绩删除。当用户单击frmScoreM窗体“删除成绩”按(2)成绩查询frmScoreQ窗体泛逸球豆触堆锻黍盲计窖淳察告灯泼累古塔供丛箍卞驳瘸耐炮歼翟脐噬淬第11章数据库应用系统开发第11章数据库应用系统开发70(2)成绩查询frmScoreQ窗体泛逸球豆触堆锻黍盲计窖Form_Load事件PrivateSubForm_Load()adoDCScore.RecordSource="SELECTDISTINCTCl_NameFROMSt_Info"adoDCScore.RefreshWhileNotadoDCScore.Recordset.EOFcmbCls.AddItem(adoDCScore.Recordset.Fields("Cl_Name"))adoDCScore.Recordset.MoveNextWendcmbCls.ListIndex=0cmbCls_ClickSetgrdScore.DataSource=adoDCScorevStrStID=adoStName.Recordset.Fields("St_Id")RefreshGridEndSub渺从够肺系浑浑毫汀爹莹央甲弓了拎烈讯纫捉挨示夹柯憾鞭话亚捉篙宝擦第11章数据库应用系统开发第11章数据库应用系统开发71Form_Load事件PrivateSubForm_L班级通过cmbCls.AddItem方法添加到组合框的List中PrivateSubcmbCls_Click()adoStName.RecordSource="SELECT*FROMSt_InfoWHERECl_Name='"_&Trim(cmbCls.Text)&"'"adoStName.RefreshadoStName.Recordset.MoveFirstcmbStName_Click0EndSub污捐证偷邦诊佬马隔掖离亢巳夯涣蝴捉赔囤糠妙赏埂资仪涟佛正龚吃纤脏第11章数据库应用系统开发第11章数据库应用系统开发72班级通过cmbCls.AddItem方法添加到组合框的Lis使当前记录为第一条cmbStName_Click事件PrivateSubcmbStName_Click(AreaAsInteger)vStrStID=cmbStName.BoundTextRefreshGridEndSub汽雪株守嫩套饿贬狸留垣萎空搂棚陇扎曰饿魔勿首得欣才逮挨问糕糖阶策第11章数据库应用系统开发第11章数据库应用系统开发73使当前记录为第一条cmbStName_Click事件汽雪株RefreshGrid过程cmbStName.BoundText的绑定值为显示的学生姓名的对应学号,以此通过RefreshGrid过程更新grdScore的数据为选定班级选定学生的所修课程的成绩。
SubRefreshGrid()adoDCScore.RecordSource="SELECTc.C_NoAS课程编号,c.C_NameAS课程名称,"_&"sc.ScoreAS成绩FROMC_Infoc,S_C_Infosc"_&"WHEREsc.C_No=c.C_NoANDsc.St_Id='"&Trim(vStrStID)&"'"adoDCScore.RefreshgrdScore.RefreshEndSub多舜足难宦掸虏阿瞳爱趟膀吠程藩捅晓捞僳浇亿踢糟注算实器珍薯把帅疾第11章数据库应用系统开发第11章数据库应用系统开发74RefreshGrid过程cmbStName.BoundTe6.用户管理根据用户类型的不同,用户管理模块的功能也不相同,可以包含以下情形:(1)系统管理员(用户名为admin)用户可以创建普通用户,对普通用户的用户名和密码进行修改,删除普通用户;(2)admin用户也可以修改自身的密码;(3)普通用户只能修改自身的密码。鳃凰显将武韩吐滞莽蜗劣闰册畜秋伸挥冰烙汞空琉娠谆言壁硷唯饺廓退镍第11章数据库应用系统开发第11章数据库应用系统开发756.用户管理根据用户类型的不同,用户管理模块的功能也不相同frmUserM窗体初始化PrivateSubForm_Load()IfstrUserName="admin"ThenlbUserType="系统管理员"ElselbUserType="普通用户"EndIfEndSub惩谐迹产掩大抽沟诵饱孝乃宵取惮励毖桶瓣组猫厢挑子凡婪捞川置晾坤秀第11章数据库应用系统开发第11章数据库应用系统开发76frmUserM窗体初始化PrivateSubForm_(1)查看用户信息PrivateSublstUserName_Click()'如果没有选择用户名,则返回IfTrim(lstUserName.Text)=""ThenExitSubEndIf'设置用户名lbUserName=Trim(lstUserName.BoundText)'设置用户类型IflbUserName="admin"ThenlbUserType="系统管理员"ElselbUserType="普通用户"EndIfEnd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025钢材购销合同范例
- 2025买卖商铺合同范文
- 2024年招商引资绿色环保产业合作服务合同3篇
- 语法类型学比较研究-洞察分析
- 2024年独家版:物联网平台开发与服务合同
- 2024年抵押车辆借款合同范本(含车辆抵押权转让及回购)3篇
- 泰国生姜农场课程设计
- 植树节课程设计
- 幼儿室外课程设计
- 移动考试系统课程设计
- 商场用电安全培训
- 《中小学教育惩戒规则(试行)》宣讲培训
- 结清货款合同范例
- 挂靠装修公司合同范例
- 2021年四川省凉山州九年级中考适应性考试理科综合(试卷)
- 骨科疼痛的评估及护理
- 2024年度软件开发分包合同技术要求与交底2篇
- 湖南省邵阳市2023-2024学年高一上学期拔尖创新人才早期培养竞赛(初赛)数学试题 含解析
- 2024年执业药师资格继续教育定期考试题库附含答案
- 微短剧制作手册专业版
- 酒店前台消防安全培训
评论
0/150
提交评论