




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
24课程设计报告题目:学生信息管理系统班级:09软件本班成员:xxx xxx xxx具体分工 xxx:负责数据库的建立, 数据库的连接,编写设计报告, 系统部分编程、调试xxx:负责系统的功能设计、系统流程设计、系统部分编程、调试、运行xxx:输入/输出方案设计、数据库模型设计,系统部分编程、调试、运行目录一、实验目的-2二、应用需求分析-2三、主要功能(系统流程图)-3四、er图-3五、数据库设计-4六、系统操作-6七、总结-10附录:本系统代码一 实验目的:掌握vb编程技术及其平台的使用、asp的动态网业制作和sql server数据库的建立和使用。二 应用需求分析学生信息管理系统需要满足来自三方面的需求,这两个方面分别是学生、管理员。学生的需求是个人信息查询、修改个人信息、修改密码及成绩查询;管理员对学生信息情况进行操作、添加删除课程、修改密码、添加管理员、添加班级。学生可以直接查看个人信息情况,学生可以根据本人学号和密码登录系统,还可以维护部分个人信息。一般情况下,学生只应该查询和维护本人的信息情况。若查询和修改其他学生的信息情况,就要知道其他学生的学号和密码。这些是很难得到的,特别是密码,所以不但满足了学生的要求,还保护了个人隐私。管理员有管理员的使用权限,对系统有维护的权限。管理员能够查询、添加、删除课程,也能添加新的管理员和学生用户,还能注销学生用户,也能添加新的班级。三 主要功能:1. 学生:个人信息查询、修改个人信息、修改密码、成绩查询2. 管理员:添加学生用户、添加课程、成绩管理、删除课程、注销学生用户、修改密码、添加管理员、添加班级3系统流程图用户登入学生管理员个人信息查询修改个人信息修改密码成绩查询添加学生用户添加课程成绩管理删除课程注销学生用户修改密码添加管理员添加班级四、 er图学生管理员课程查询管理学号姓名班级性别密码用户号姓名密码学生管理员号学号课程姓名职工号姓名课程电话号码学生信息五、 数据库设计1.表设计:studentinformation(sid,classid,sname,sex,jiguan,telephong,room)class(classid,sumno,classname,)object(cid,cname,teacher)mark(sid,cid,mark,xuefen)user(sid,password)admin(adminid,adminname,password)2.在查询分析器中创建表 studentinformation 学生信息表(sid char(8) primary key not null, classid char(10), sname char(20), sex char(2), jiguan char(20), telephong char(20) ,room char(20)class 班级表(classid char(8) primary key not null, sumno char(10), classname char(20), not null)object 课程信息表(cid char(8),cname ,char(20),teacher char(20)not null)mark 成绩表(sid char(20) ,cid char(20),mark char(20 ),xuefen char(20)user 用户表(sid char(20) ,password char(20),not null) admin 管理员(adminid char(20),adminname char(20),password char(20), not null)六、 系统操作1.登陆一 、进入首页选择管理员或学生登陆,输入正确的用户号和密码就能进入操作主界面。二、登入进人了学生界面,可以进行个人信息查询,修改个人信息,修改密码,成绩查询三 登入进人了管理员界面,可以进行添加学生用户,添加课程,成绩管理,删除课程,注销学生用户,修改密码,添加管理员,添加班级七总结 通过学习vb语言和asp的设计,知道任何工作都不是那么简单可以完成的,经过此次作业使我更加熟练了对数据库等的操作, 熟练掌握sqlserver数据库的使用,数据库应用软件系统的设计方法,熟练掌握使用vb开发平台的使用。附录:系统代码option explicit标识是否能关闭dim mbclose as boolean标识当前要显示的照片的文件dim mstrfilename as stringprivate sub form_load() on error resume next if frmmain.mnusertype = 1 then 学生用户 fraseek.enabled = false frabrowse.enabled = false cmdadd.enabled = false cmddelete.enabled = false txtserial.enabled = false dcbclass.enabled = false grdscan.enabled = false if not (dataenv.rsstudent.eof and dataenv.rsstudent.bof) then dim temp as string temp = name = & & frmmain.msusername & dataenv.rsstudent.movefirst dataenv.rsstudent.find temp 刷新所绑定的控件 call refreshbinding end if exit sub else fraseek.enabled = true frabrowse.enabled = true cmdadd.enabled = true cmddelete.enabled = true txtserial.enabled = true dcbclass.enabled = true grdscan.enabled = true end if dim rsdep as new adodb.recordset, rsclass as new adodb.recordset set rsdep = dataenv.rsdepartment set rsclass = dataenv.rsclass rsdep.open 从department表中读取数据,填充cbodep组合框到中 cbodep.clear cbodep.additem 全部 将各个系的id号作为itemdata附加到组合框中 cbodep.itemdata(0) = 0 while not rsdep.eof cbodep.additem rsdep(name) cbodep.itemdata(cbodep.listcount - 1) = rsdep(id) rsdep.movenext wend cbodep.listindex = 0 从class表中读取数据,填充到cboclass组合框中 cboclass.clear cboclass.additem 全部 while not rsclass.eof cboclass.additem rsclass(name) rsclass.movenext wend cboclass.listindex = 0 cmdlist.value = true framanage.enabled = true mbclose = true 调用grdscan_change事件显示记录明细 call grdscan_changeend sub当dataenv.rsstudent的当前记录发生变化时,刷新所绑定的控件(用户改变了当前记录)sub refreshbinding() on error resume next with dataenv.rsstudent if dataenv.rssqlseek.bof and dataenv.rssqlseek.eof then 如果不存在任何记录,则清空所有的绑定的内容 txtserial = txtname = dtpbirth.value = txttelephone = txtaddress = txtresume = imgphoto.picture = loadpicture(null) else 否则和相应的字段进行绑定 txtserial = .fields(serial) txtname = .fields(name) dtpbirth.value = .fields(birthday) txttelephone = .fields(tel) txtaddress = .fields(address) txtresume = .fields(resume) cbosex.text = .fields(sex) dcbclass.text = .fields(class) imgphoto.picture = loadpicture(readimage(.fields(photo) end if end withend sub在dataenv.rsstudent中查询serial为sserial的学籍信息sub seekstudent(sserial as string) if not (dataenv.rsstudent.eof and dataenv.rsstudent.bof) then dim temp as string temp = serial = & & sserial & dataenv.rsstudent.movefirst dataenv.rsstudent.find temp 刷新所绑定的控件 call refreshbinding end ifend sub当改变记录集时,需要刷新用户导航的网格控件sub refreshgrid() grdscan.datamember = grdscan.refresh dataenv.rssqlseek.requery grdscan.datamember = sqlseek grdscan.refresh 刷新各个绑定控件 call grdscan_changeend sub用以在浏览时,根据当前记录所出的位置不同,来改变各个浏览按钮的状态sub changebrowsestate() with dataenv.rssqlseek if .state = adstateclosed then .open 如果没有任何记录,使某些按钮无效;否则则使这些按钮有效 if .bof and .eof then cmdadd.enabled = true cmdedit.enabled = false cmddelete.enabled = false cmdupdate.enabled = false cmdreport.enabled = false frabrowse.enabled = false else cmdadd.enabled = true cmdedit.enabled = true cmddelete.enabled = true cmdupdate.enabled = false cmdreport.enabled = true frabrowse.enabled = true end if 假如处于记录的头部 if .bof then if not .eof then dataenv.rsstudent.movefirst cmdprevious.enabled = false cmdfirst.enabled = false else cmdprevious.enabled = true cmdfirst.enabled = true end if 假如处于记录的尾部 if .eof then if not .bof then dataenv.rsstudent.movelast cmdnext.enabled = false cmdlast.enabled = false else cmdnext.enabled = true cmdlast.enabled = true end if end with mstrfilename = end subprivate sub cbodep_click() dim rsclass as new adodb.recordset dim strsql 根据所选的系的不同,采用不同的sql语句 if cbodep.itemdata(cbodep.listindex) = 0 then strsql = select * from 班级信息表 else strsql = select * from 班级信息表 where dept_id= & cbodep.itemdata(cbodep.listindex) end if rsclass.open strsql, dataenv.con 将所查到的rsclass中的内容来填充cboclass cboclass.clear cboclass.additem 全部 while not rsclass.eof cboclass.additem rsclass(name) rsclass.movenext wend cboclass.listindex = 0 rsclass.close set rsclass = nothingend subprivate sub cmdadd_click() 添加记录 fraseek.enabled = false frabrowse.enabled = false grdscan.enabled = false dataenv.rsstudent.addnew dtpbirth.value = 1980-01-01 frainfo.enabled = true frabrowse.enabled = false cmdadd.enabled = false cmdedit.enabled = false cmddelete.enabled = false cmdupdate.enabled = true cmdreport.caption = 取消 cmdreport.enabled = true mbclose = false 不能关闭窗口end subprivate sub cmddelete_click() 如果出错,则显示错误代码 on error goto errhandler if msgbox(要删除记录?, vbyesno + vbquestion + vbdefaultbutton2, 确认) = vbyes then 通过在dataenv.con中执行sql命令,来删除记录 dataenv.con.execute delete from 学生信息表 where serial = & txtserial & dataenv.rsstudent.movenext if dataenv.rsstudent.eof then dataenv.rsstudent.movelast 刷新用户导航的网格控件 call refreshgrid end if exit suberrhandler: msgbox err.description, vbcritical, 错误end subprivate sub cmdedit_click() 编辑记录之前,需要设置其他控件的enabled属性 fraseek.enabled = false frabrowse.enabled = false grdscan.enabled = false frainfo.enabled = true cmdadd.enabled = false cmdedit.enabled = false cmddelete.enabled = false cmdupdate.enabled = true cmdreport.caption = 取消 更改cmdreport标题 cmdreport.enabled = true mbclose = false 出于编辑状态,则用户不能关闭窗口end subprivate sub cmdfirst_click() 移动到记录的头部,并改变各个浏览按钮的状态 dataenv.rssqlseek.movefirst dataenv.rssqlseek.moveprevious call changebrowsestateend subprivate sub cmdlast_click() 移动到记录的尾部,并改变各个浏览按钮的状态 dataenv.rssqlseek.movelast dataenv.rssqlseek.movenext call changebrowsestateend subprivate sub cmdlist_click() 针对所选的班级,列出班级中所有的学籍信息 dim strsql if cboclass.text = 全部 then strsql = from 学生信息表 order by serial else strsql = from 学生信息表 where class= & cboclass & order by serial end if dataenv.rsstudent.close dataenv.rsstudent.open select * & strsql dataenv.rssqlseek.close dataenv.rssqlseek.open select serial, name & strsql 刷新用户导航的网格控件,并且根据记录集中记录的数目,来改变各个浏览按钮的状态。 call refreshgrid call changebrowsestate call grdscan_changeend subprivate sub cmdnext_click() 移动到记录的下一条 dataenv.rssqlseek.movenext call changebrowsestateend subprivate sub cmdprevious_click() 移动到记录的上一条 dataenv.rssqlseek.moveprevious call changebrowsestateend subprivate sub cmdreport_click() on error resume next if cmdreport.caption = 取消 then 取消所使用的更新更新 dataenv.rsstudent.cancelupdate 重新显示原来数据集中的内容 if dataenv.rsstudent.bof then dataenv.rsstudent.movefirst else dataenv.rsstudent.moveprevious dataenv.rsstudent.movenext end if call refreshbinding call changebrowsestate fraseek.enabled = true frabrowse.enabled = true frainfo.enabled = false grdscan.enabled = true cmdreport.caption = 报表(r) mbclose = true else 生成报表 dim strsql as string dataenv.rsrptstudent.close strsql = select * from 学生信息表 where serial = & txtserial.text & dataenv.rsrptstudent.open strsql rptstudent.show end ifend subprivate sub cmdselectphoto_click() on error goto errhandler: dlgselect.dialogtitle = 选择该学生的照片 dlgselect.filter = 所有图形文件|*.bmp;*.dib;*.gif;*.jpg;*.ico|位图文件(*.bmp;*.dib) & _ |*.bmp;*.dib|gif文件(*.gif)|*.gif|jpeg文件(*.jpg)|*.jpg|图标文件(*.ico)|*.ico dlgselect.showopen if dlgselect.filename = then exit sub imgphoto.picture = loadpicture(dlgselect.filename) mstrfilename = dlgselect.filename exit suberrhandler: msgbox err.description, vbcritical, 错误end subprivate sub cmdupdate_click() 更新所添加或者修改的记录 on error goto errhandler: dim str as string str = txtserial.text with dataenv.rsstudent .fields(serial) = txtserial.text .fields(name) = txtname.text .fields(sex) = cbosex.text .fields(class) = dcbclass.text .fields(birthday) = dtpbirth.value .fields(tel) = txttelephone.text .fields(address) = txtaddress.text .fields(resume) = txtresume.text if mstrfilename then call writeimage(.fields(photo), mstrfilename) .update end with cmdreport.caption = 报表(&r) cmdupdate.enabled = false frainfo.enabled = false mbclose = true if dataenv.rssqlseek.state = adstateclosed then dataenv.rssqlseek.open 刷新右端用以导航的网格控件 call refreshgrid 根据记录集中记录的个数,改变各个按钮的状态 call changebrowsestate 定位到刚刚添加或者修改过的记录 dataenv.rssqlseek.movefirst dataenv.rssqlseek.find serial= & str & fraseek.enabled = true frabrowse.enabled = true grdscan.enabled = true exit suberrhandler: msgbox err.description, vbcritical, 错误end subprivate sub dcbclass_click(area as integer) if txtserial = then txtserial = dcbclass.text end ifend subprivate sub form_queryunload(cancel as integer, unloadmode as integer) if not mbclose then msgbox 数据正被修改,窗口不能关闭, vbcritical, 错误 cancel = true end ifend subprivate sub frainfo_dragdrop(source as control, x as single, y as single)end subprivate sub grdscan_change() if grdscan.approxcount 0 then call seekstudent(grdscan.columns(0).celltext(grdscan.bookmark) end ifend subprivate sub grdscan_rowcolchange(lastrow as variant, byval lastcol as integer) 当前行改变,则动态改变所要显示的记录 if lastrow grdscan.bookmark then if grdscan.approxcount 0 then call seekstudent(grdscan.columns(0).celltext(grdscan.bookmark) end if end ifend subprivate sub writeimage(byref fld as adodb.field, diskfile as string) dim bytedata() as byte 定义数据块数组 dim numblocks as long 定义数据块个数 dim filelength as long 标识文件长度 dim leftover as long 定义剩余字节长度 dim sourcefile as long 定义自由文件号 dim i as long 定义循环变量 const blocksize = 4096 每次读写块的大小 sourcefile = freefile 提供一个尚未使用的文件号 open diskfile for binary access read as sourcefile 打开文件 filelength = lof(sourcefile) 得到文件长度 if filelength = 0 then 判断文件是否存在 close sourcefile msgbox diskfile & 无 内 容 或 不 存 在 ! else numblocks = filelength blocksize 得到数据块的个数 leftover = filelength mod blocksize 得到剩余字节数 fld.value = null redim bytedata(blocksize) 重新定义数据块的大小 for i = 1 to numblocks get sourcefile, , bytedata() 读到内存块中 fld.appendchunk bytedata() 写入fld next i redim bytedata(leftover) 重新定义数据块的大小 get sourcefile, , bytedata() 读到内存块中 fld.appendchunk bytedata() 写入fld close sourcefile 关闭源文件 end ifend subprivate function readimage(blobcolumn as adodb.field) as string 取得一个临时性文件 dim strfilename as string strfilename = imagetmp dim filenumber as integer 文件号 dim datalen as long 文件长度 dim chunks as long 数据块数 dim chunkary() as byte 数据块数组 dim chunksize as long 数据块大小 dim fragment as long 零碎数据大小 dim lngi as long 计数器 on error goto errhander chunksize = 2048 定义块大小为 2k if isnull(blobcolumn) then exit function datalen = blobcolumn.actualsize 获得图像大小 if datalen 0 then 有零碎数据,则先读该数据 redim chunkary(fragment - 1) chunkary = blobcolumn.getchunk(fragment) put filenumber, , chunkary 写入文件 end if redim chunkary(chunksize - 1) 为数据块重新开辟空间 for lngi = 1 to chunks 循环读出所有块 chunkary = blobcolumn.getchunk(chunksize) 在数据库中连续读数据块 put filenumber, , chunkary() 将数据块写入文件中 next lngi close filenumber 关闭文件 readimage = strfilename exit function errhander: readimage = end functionprivate sub imgphoto_click()end suboption explicit表示当前的用户类型:0-管理员类型的用户; 1-学生类型的用户public mnusertype as integer表示当前登录的用户名public msusername as stringprivate sub mdiform_load() 根据不同的用户类型,使相应的菜单项可见 select case mnusertype case 0: 以管理员身份登录 mnufind.visible = true tlbmain.buttons.item(3).visible = true tlbmain.buttons.item(4).visible = true exit sub case 1: 以学生身份登录, 只能查询自己的信息 mnufind.visible = false “信息查询”菜单不可见 tlbmain.buttons.item(3).visible = false “信息查询”按钮不可见 tlbmain.buttons.item(4).visible = false 第二个分隔条不可见 exit sub end selectend subprivate sub mdiform_queryunload(cancel as integer, unloadmode as integer) if msgbox(真的要对出本系统吗?, vbquestion + vbyesno + vbdefaultbutton2, 退出) = vbno then cancel = 1 end ifend subprivate sub mnuabout_click() load frmsplash frmsplash.mbabout = true frmsplash.show vbmodalend subprivate sub mnuarr_click() frmmain.arrange (3) 设置主窗体中所有最小化mdi子窗体图标重排end subprivate sub mnucas_click() frmmain.arrange (0) 设置主窗体中所有非最小化mdi子窗体层叠显示end subprivate sub mnuexit_click() unload meend subprivate sub mnufind_click() frmfind.showend subprivate sub mnuhori_click() frmmain.arrange (1) 设置主窗体中所有非最小化mdi子窗体水平平铺end subprivate sub mnulog_click() if msgbox(若重新登录,所有窗体都将关闭! & vbcrlf & 是否重新登录?, _ vbquestion + vbyesno + vbdefaultbutton2, 重新登录) = vbyes then unload me frmlogin.show end ifend subprivate sub mnustuden
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 9《正确认识广告》(第2课时)教学设计-2024-2025学年道德与法治四年级上册统编版
- 2024-2025学年七年级历史上册 第三单元 秦汉时期:统一多民族国家的建立和巩固 第10课 秦末农民大起义教学设计 新人教版
- 8第九套广播体操6-7节5 教学设计-八年级体育与健康
- 《节电小专家:1 家庭用电情况调查》教学设计-2023-2024学年四年级下册综合实践活动沪科黔科版
- 2024秋八年级英语上册 Module 3 Sports Unit 2 This year we are training more carefully教学设计(新版)外研版
- 2024年秋七年级道德与法治上册 2.1 学习伴成长教学设计 新人教版
- 17 气体的体积和质量 教学设计-2024-2025学年科学三年级上册青岛版
- 七年级生物上册 第二单元 生物体的结构层次(没有细胞结构的微小生物)教学设计1 (新版)新人教版
- 15《八角楼上》第二课时教学设计-2024-2025学年二年级上册语文统编版
- 七年级语文上册 第四单元 13《济南的冬天》教学设计 冀教版
- 建设工程安全生产管理条例试题
- 2025年郑州卫生健康职业学院单招职业适应性测试题库带答案
- 2025年河南应用技术职业学院单招职业适应性测试题库必考题
- 2025年郑州卫生健康职业学院单招职业适应性测试题库必考题
- 2025年湖北省八市高三(3月)联考英语试卷(含答案详解)
- 2025年南阳科技职业学院单招职业倾向性测试题库带答案
- 15 青春之光 公开课一等奖创新教学设计
- 2025年中国特殊热电偶市场调查研究报告
- 2025年人教版中考英语总复习清单八年级上册Units7-8
- 2025年河南工业贸易职业学院单招职业技能测试题库学生专用
- JJF(皖) 205-2025 土工击实仪校准规范
评论
0/150
提交评论