首页 学生信息管理论文

学生信息管理论文

举报
开通vip

学生信息管理论文学生信息管理论文 焦 作 大 学 作 者: 学 号: 学院(系):计算机工程系 专 业:应 用 与 维 护 题 目:学生信息管理系统 主 题: 指导教师: 职称: 高级实验师 2006年5月 1 前 言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 第一章 系统概述 „„„„„„„„„„„„„„„„„„„„„„„„„„2 1.1 开发背景„„„„„„„„„„„„„„„„„„„„„„„„„„„2 1.2学生信息管理系统概述„„„„„„„„„„„„„„„„„„„„„2 1.3 开发环境及...

学生信息管理论文
学生信息管理论文 焦 作 大 学 作 者: 学 号: 学院(系):计算机工程系 专 业:应 用 与 维 护 题 目:学生信息管理系统 主 题: 指导教师: 职称: 高级实验师 2006年5月 1 前 言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 第一章 系统概述 „„„„„„„„„„„„„„„„„„„„„„„„„„2 1.1 开发背景„„„„„„„„„„„„„„„„„„„„„„„„„„„2 1.2学生信息管理系统概述„„„„„„„„„„„„„„„„„„„„„2 1.3 开发环境及开发工具介绍„„„„„„„„„„„„„„„„„„„„3 1.3.1 Visual Basic 6.0简介„„„„„„„„„„„„„„„„„„3 1.3.2 SQL Server 2000 简介„„„„„„„„„„„„„„„„„„6 1.3.3 ADO对象概述„„„„„„„„„„„„„„„„„„„„„„8 1.3.4 Visual Basic 6.0访问数据库的方式„„„„„„„„„„„10 第二章 系统总体规划„„„„„„„„„„„„„„„„„„„„„„„„11 2.1 数据库设计„„„„„„„„„„„„„„„„„„„„„„„„„11 2.2 系统E-R图„„„„„„„„„„„„„„„„„„„„„„„„„12 2.3 系统流程图„„„„„„„„„„„„„„„„„„„„„„„„„14 2.4 系统功能分析„„„„„„„„„„„„„„„„„„„„„„„„15 第三章 系统具体实现„„„„„„„„„„„„„„„„„„„„„„„„16 3.1 准备工作 „„„„„„„„„„„„„„„„„„„„„„„„„„16 3.2 模块设计 „„„„„„„„„„„„„„„„„„„„„„„„„„16 3.3 用户界面的实现 „„„„„„„„„„„„„„„„„„„„„„„19 3.3.1 登陆界面 „„„„„„„„„„„„„„„„„„„„„„„19 3.3.2 MDI主窗体„„„„„„„„„„„„„„„„„„„„„„„20 3.3.3系统管理„„„„„„„„„„„„„„„„„„„„„„„„23 3.3.4 班级管理„„„„„„„„„„„„„„„„„„„„„„„„24 3.3.5 学生档案管理„„„„„„„„„„„„„„„„„„„„„„26 3.3.6课程管理„„„„„„„„„„„„„„„„„„„„„„„„29 3.3.7成绩管理„„„„„„„„„„„„„„„„„„„„„„„„30 3.3.8报表功能模块„„„„„„„„„„„„„„„„„„„„„„31 第四章 结束语„„„„„„„„„„„„„„„„„„„„„„„„„„„33 致谢 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„34 主要参考文献 „„„„„„„„„„„„„„„„„„„„„„„„„„„35 (事件代码) „„„„„„„„„„„„„„„„„„„„„„„„„„36 2 摘 要 学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一 致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易 使用等特点。 本系统主要完成对学生信息的管理,包括添加、修改、删除,查询,打印信 息以用户管理等六个方面。系统可以完成对各类信息的浏览、查询、添加、删除、 修改等功能。 系统的核心是添加、修改和删除三者之间的联系,每一个表的修改都将联动 的影响其它的表,当完成添加或删除操作时系统会自动地完成学生成绩的修改。 查询功能也是系统的核心之一,在系统中主要根据学生姓名和学号进行查询,其 目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并 具备报表打印功能。 系统采用Microsoft Office中的Access 2000来设计数据库,并使用当前优秀的开发工具—VB 6.0 ,它有着最为灵活的数据库结构,对数据库应用有着 良好的支持。 关键字:控件;窗体;数据库;visual basic语言。 I Abstract Student information management system is development two aspects that typical information management system( MIS), its development includes primarily the backstage database establishes with support and the head applies the procedure.Establishes to rise to the former request the data consistency is strong with the complete, the data safety like.But request the latter very much the applied procedure function complete, easy usage etc. characteristics. This system completes primarily to the management of student's information, including to increase, modify, delete, searching, printing the information to wait six aspects with the customer management.The system can complete to the view of various information, search, increase, delete, modification etc. function. System of core is modification that other form in influence that contact to increase, mod registration number according to student's name primarily in system, its purpose is all for the sake of the convenient customer to use.System contain complete customer increase, delete to modify the function with the password, combine to have the statement print the function. System adoption Microsoft Access in the Office 2000 design database, and use the current excellent development tool — VB 6.0, it have got the most vivid database construction, having got the good support to the database application. ActiveX; Form; Database; the language of visual basic. II 第1页 共50 页 前 言 学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足 的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件,这种 管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性 好、寿命长、成本低等。这些优点能够极大地提高学生管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中将以开发一套学生信息管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。 1 第2页 共50 页 第一章 系统概述 1.1.1 当前趋势 现代教育技术特别是网络与多媒体技术的发展,对学习活动产生了具有深远 意义的冲击,网络中的学习者必须是一个主动行为着的主体,人们可以选择或者 设计适合其学习特点的信息采集、加工与重组方式,一种个性化的学习类型。该 学生信息管理系统采用多层架构的系统,是真正适应教育信息化发展三大趋势的 校园网络应用系统,全面支持Internet功能、远程访问功能,全部采用最先进的B/S(浏览器/服务器) 模式来开发,支持有关学校信息交流、日常教学、教务 管理等的各种应用,提供了一个基于校园内联网中支持各种类型的学校应用产品 的服务平台和开发平台,基本目标是在学校内部和外部建立起顺畅的信息通道, 让信息技术成为推动教育生产力的有力工具,提高学校的管理水平和效率,同时 充分利用全球的教育资源为学校的教育服务,克服了目前大部分学校的校园网建 设只起到宣传作用的通病。 1.1.2 用计算机管理学生基本信息的意义 现在我国的中 小学 小学生如何制作手抄报课件柳垭小学关于三违自查自纠报告小学英语获奖优质说课课件小学足球课教案全集小学语文新课程标准测试题 校中学籍的管理水平还停留在纸介质的基础上,这样的机 制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传 统的管理方法必然被计算机为基础的信息管理所取代。 作为一个计算机应用的大专生,希望可以在这方面有所贡献。改革的总设计 师邓小平同志说过“科学技术是第一生产力”,我希望能用我四年的所学编制出 一个实用的程序来帮助中小学进行更有效的学生管理。 归纳起来,好处大约有以下几点: 1. 可以存储历届的学生基本信息,安全、高效; 2. 只需一到二名录入员即可操作系统,节省大量人力; 3. 可以迅速查到所需信息。 1.2.1 开展该系统的原因 由于现今的学生基本信息管理非常繁琐,行政人员付出大量的工作时间,得 到的效率很低。因此为提高工作效率,减轻校方人员的工作负担,决定开发学生 2 第3页 共50 页 基本信息管理系统软件。 1.2.2 该工程的基本目标 开发此学生信息管理系统软件,以供教学人员及操作者进行对学生的管理, 方便操作者随时添加、查询、修改等。为了我们提高软件开发的能力,学习汉语 编程的技巧,提高工作设计思想,通过本次的工程开发,开发小组成员与辅助老 师,公司的技师交流,能从中学习知识吸取经验,再技术和软件思想上同时得到 锻炼和提高,从而使总体水升到一个新的高度。 该软件是在Windows 2000 Advanced Server + Visual Basic 6.0 + SQL Server 2000的环境下完成的。下面就对这些开发工具进行介绍: 1.3.1 Visual Basic 6.0 微软公司的Visual Basic 6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了 界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。利用VISUAL BASIC 程序设计语言,可以很方便地设计出在WINDOWS环境下运行的应用程序。故而,实现本系统VB是一个相对较好的选择。 1.3.1.1 Visual Basic的编程特点 Visual Basic语言的出现为Windows下的编程提出了一个新概念,利用 Visual Basic的动态数据交换、对象的链接和嵌入、动态链接库、ActiveX技术 可以很方便地设计出功能强大的应用程序。 利用Visual Basic语言编程有以下几个特点: 1.可视化程序设计 在Visual Basic中开发的应用程序,不但有丰富的图形界面,同时由用户 为开发图形界面添加的代码真是少而又少,因为在设计图形界面的过程中只需设 置 ActiveX控件的属性即可。 2.强大的数据库和网络功能 随着Visual Basic 语言的向前发展,它在数据库和网络方面的功能优势就 愈加明显,利用Visual Basic 中的ODBC——开放式的数据库访问技术可以很方 便地开发出自己的数据库应用程序;利用 Visual Basic自带的可视化数据管理 3 第4页 共50 页 器和报表生成器,完全可以在Visual Basic就完成数据库的开发工作。 3.其它特性 在Visual Basic以前的版本中,由于仍然摆脱不了解释执行的代码运行机 制,所以在相当的程度上制约了 Visual Basic 的发展。 从Visual Basic5.0版本开始,在Visual Basic 中制作的应用程序都改变 为编译执行,使得Visual Basic的代码效率有了很大的提高,同时执行的速度 也加快了解30%(同Visual Basic4.0相比)。 当然在 Visual Basic中还有其它特性,例如: , 面向对象的编程语言; , 结构化程序设计; , 事件驱动的程序设计: 在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪一部分代 码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执 行,必要时才会调用过程。 在事件驱动的应用程序中,代码不是按预定的路径执行,而是在响不同的事 件时执行不同的代码片段。事件可以由用户操作触发、也可以由来自操作系统或 其它应用程序的消息触发、甚至由应用程序本身的消息触发。这些事件的顺序, 决定了代码执行的顺序,因此应用程序每次运行时所经过的路径都是不同的。 , 支持动态链接库; , 应用程序之间的资源共享。 1.3.1.2 VB 支持的数据库系统 VB支持对多 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 的数据库的访问和维护,无论是Access还是Foxpro中创建的数据库,都可以用VB打开,对其进行查询、修改和删除等操作。事实上, VB几乎支持对市面上所有数据库的访问。 VB可以访问的数据库可以简单的分为三类,即:Microsoft Access格式数据库,外部数据库和ODBC数据库。VB对多种数据库格式的支持,大大的增强了 开发数据库应用程序的能力。 1.3.1.3 Jet数据库引擎 Microsoft引擎为Visual Basic与数据库的接口提供了基本的方法。Jet引擎被Visual Basic,Microsoft Access和其他Microsoft产品共享。Jet数据 4 第5页 共50 页 库引擎提供了多种功能,Jet的数据定义功能支持对表、索引、查询的创建、修 改和删除。Jet以主键标和表间引用完整性的形式支持数据完整性。 对于数据操纵,Jet支持使用SQL。SQL提供用单独语句对基于用户定义标 准的 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 组进行检索、添加、删除或更新的方法。 Jet也提供对安全功能的支持。这种功能让开发者指定用户标识符和口令, 他们必须在用户访问数据库之前给出。Jet也支持使用许可,或是对单个表和查 询的访问级别(例如,只读或读写可访问性)。这是的数据库管理员要对每一位 用户或用户组分配对数据库不同特定访问。 除了数据操作和数据定义任务外,也可用Jet引擎来执行其他的任务。Jet 还具备在数据库开发工作中所需的其他功能,这些功能包括:数据库修复,数据 库压缩(以使消除不同的空间)和重新索引。 1.3.1.4 数据库开发中的三大工具 在数据库应用程序的开发领域中,提供包含数据管理(DataManager),数据控件(Data Control)以及数据编程对象(数据访问对象(DAO)、远程数据对象(RDO)和ActiveX数据对象(ADO))等功能强大的工具,协助设计人员轻松的 连接数据库文件,并访问其中的数据,在功能方面与其他一些专业数据库软件(如 FoxPro,Micosoft Access等)不相上下。 数据管理器(Data Manager)是Visual Basical已有的老成员之一,拓本盛举有的Jet数据库引擎(Database Engine)可以帮助VB程序元件立即维护数据库内容,并可通过输入查询或查找数据库信息,而不必再通过其他数据库软件 另外去设计数据库。 数据控件是VB所提供的基本控件成员之一。它使得设计者省下一堆程序代 码编写的工作,能够轻松的设计及维护数据库内容。数据控件可以通过一些属性 的设置去链接某个数据库文件,但是它本身并无法显示数据库各个记录的内容, 必须在搭配其他具有数据感知(Data Aware)功能的控件对应并显示一个字段内 容,以方便地进行记录的浏览及编辑工作。 VB提供的数据访问对象(Data Access Object;DAO)让程序设计者拥有更大的发挥空间。借助程序代码编写,直接控制Jet数据库引擎,配合数据库控件,能够开发出更具弹性且高效率的数据应用程序。 RDO是处理远程数据库的一些专门需要的对象集合。使用RDO可以不用本地 5 第6页 共50 页 的查询机就能访问ODBC数据源,这无疑将大大提高应用程序的性能。 ADO是VB6.0中新增的对象,它是一个更简单的对象模型,它更好的集成了 其它数据访问技术,并且对本地和远程数据库均有共同的界面,可以取代DAO和RDO。ADO更易于使用。 我们在本系统中利用数据管理器创建了数据库及数据库表,并采用了ADO数据访问技术。 1.3.2 SQL Server 2000简介 SQL Server 2000是微软公司最新版的大型数据库服务器,其性能指标在各 方面都有赶超Oracle数据库的趋势。用它可以方便地管理数据库和开发应用程 序,它使用了最先进的数据库构架,与Windows NT/2000平台紧密集成,具有完 全的Web功能。通过对高端硬件平台、网络和存储技术的支持,为WEB站和企业的应用最大限度地提供了可扩展性和高可靠性,能在Internet商业领域快速建立并应用。此外,还增强了安全性,保护防火墙内外的数据。支持基于角色的安 全并拥有安全审计工具。在经历了SQL Server 6.5和7.0两个版本的尝试后,微软公司终于开始了大规模的业务。记得在以前各种关于SQL Server的文章,都会将其定位成中小型应用方面,这种感觉被大家自然的延续到了2000版之中。其实这是一种误解。在过去的很长一段时间中,微软公司聘请了世界上最优秀的 数据库专家以及专门搭建了信息量可谓空前的地理信息系统,励精图治,就是为 了摘掉扣在自己头上的这顶帽子。有了强大的性能和功能支持,再配合其一向为 人称道的易用性,SQL Server可以说成为了开发者手中的一柄利器! 另外,目前国内的一些关于微软平台的数据库编程教程,喜欢使用Access作为数据库平台的案例,并展开相关的内容。这其实对于开发真正的数据库应用 并没有直接的帮助作用,只能使大家停留在应用的初级阶段。SQL Server 2000提供的非常傻瓜的缺省安装和使用模式,其上手难度并不比Access大。另外,SQL Server 2000可以兼顾小、中、大规模的应用,有着远远比Access强大的伸缩性。 1.3.2.1 SQL Server数据库特点 概括起来,SQL Server 2000数据库管理系统具有以下主要特点。 1.丰富的图形管理工具,使系统管理、操作更为直观方便。SQL Server企业管理器是一个基于图形用户界面(GUI)的集成管理工具,利用它可以配置管 6 第7页 共50 页 理SQL Server服务器、管理数据库和数据库对象、备份和恢复数据、调度任务 和管理警报、实现数据复制和转换操作等。此外,SQL Server 2000还提供了SQL事件探查器、SQL查询分析器、SQL Server服务管理器和多种操作向导等图形界 面管理工具,大大简化了用户操作,从而增强了系统的易用性。 2.动态自动管理和优化功能。即使SQL Server数据库管理员不做任何设置, SQL Server也能够在运行过程中根据环境配置和用户访问情况动态自动配置, 以达到最优性能,从而减轻管理员工作。 3.充分的Internet技术支持。Internet网络发展到今天已经成为一条重要 的信息发布渠道,SQL Server增强了对Internet技术支持,它除保留了前期版 本中的数据库Web出版工具“Web助手”外,还增强了对XML和HTTP技术的支持,这使得电子商务系统能够通过XML等访问SQL Server数据库系统,也扩展 了SQL Server在数据挖掘和分析服务领域的应用。 4.丰富的编程接口工具,使用户开发SQL Server数据库应用程序更加灵活。 SQL Server提供了Transact-SQL、DB-Library for C、嵌入式SQL(ESQL)等开发工具,Transact-SQL与工业 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 SQL语言兼容,并在其基础上加以扩充, 使它更适合事务处理方面的需要。此外,SQL Server 2000还支持ODBC、OLE DB、ADO规范,可以使用ODBC、OLE DB、ADO接口访问SQL Server数据库。 5.具有很好的伸缩性和可靠性。SQL Server 2000既能运行在Windows桌面操作系统下,又可运行在服务器操作系统(包括Windows NT和Windows 2000)下;既能运行在单CPU计算机上,又能运行在对称多处理系统下。所以,它具有 很好的伸缩性,能够满足从桌面应用到大型企业分布式应用到不同层次用户的要 求。 6.简单的管理方式。SQL Server 2000与Microsoft Windows 2000有机集成,所以可以使用Windows 2000的活动目录(Active Directory)功能对SQL Server进行集中管理,大大简化大型企业中的系统管理工作。此外,与Windows 2000的集成还使SQL Server能够充分利用操作系统所提供的服务和功能(如安 全管理、事件日志、性能监视器、内存管理和异步I/O等),从而增强了SQL Server数据库系统的功能,并且只需要占用很少的系统资源。 1.3.3 ADO对象概述 ADO对象是针对当前微软的软件所支持的数据进行操作的最为有效、简单并 7 第8页 共50 页 且功能强大的方法。它可以把大部分数据源可编程的属性直接扩展到Active Server上,主要含有Connection、Recordset与Command三种对象。其中:Connection对象主要负责打开或连接数据库文件;Recordset对象主要是存取数据库的内容;Command对象主要是对数据库下达行动查询指令以及SQL Server的Stored Proceduce。 ADO对象能够存取到数据库的内容,首先要求数据库的驱动程序( ODBC驱动程序与OLE DB驱动程序)必须安装上,否则,ADO对象是无法存取数据库中内容, 其原理示意图如图1.1所示: 客户端 客户端 客户端 ADO对象 各种数据库所对应的驱动程序 各种数据库(如Access、SQL Server以及Oracle等) 图1.1 ADO对象存取数据原理示意图 请注意:上图中的“各种数据库所对应的驱动程序”即ODBC驱动程序与OLE DB驱动程序。 1.3.3.1 利用ADO开发网络数据库应用程序 ADO(Active Date Objects,即ActiveX数据对象)是一个ASP内置的ActiveX服务器组件(ActiveX Server Component)。可把它与ASP结合起来,建立提供数据库信息的网页内容,对数据库进行查询、插入、更新、删除等操作,并可以 把在用户端实现“网上实时更新显示”的最新Web数据库技术。 要执行ADO,服务器端必须安装Windows NT Server 和Internet Information Server(IIS),而客户端只要有IE或NETSCAPE较新版本的浏览器即可。 利用ADO开发网络数据库应用程序有以下几个优点: ? 支持客户机/服务器结构(Client/Server)与Web系统开发技术。 ? 内部有多个互相独立的对象模型。 ? 支持分批修改数据库内容。 8 第9页 共50 页 ? 支持多种不同的数据控制指标形式。 ? 先进的Recordset数据高速缓存管理功能。 ? 允许在程序中使用多个Recordset对象或者多个分批修改区块传送。 ? ADO属于Free_threaded对象,利用它可以开发出更有效的Web应用程序。 1.3.3.2 ADO组件的主要对象及其功能 ADO组件又称为数据库访问组件,它提供了以下七种对象: Connection对象:提供对数据库的连接服务。 Command对象:定义对数据库源操作的命令。 Recordset对象:由数据库服务器所返回的记录集。 ?Recordset对象的LockType属性的设置值 常量 值 说明 adLockReadOnly 1 默认值,只读。无法更改数据 保守式记录锁定(逐条)。提供者执行必要的操作确保成adLockPressimistic 2 功编辑记录,通常采用立即锁定数据源的记录的方式。 开放式记录锁定(逐条)。提供者使用开放式锁定,只在adLockOptimistic 3 调用Updata方法时锁定记录。 adLockBatchOptimistic 4 开放式批更新。用于与立即更新模式相反的批更新模式。 Fields对象:由数据库服务器所返回的单一数据字段 Parametes对象:表示Command对象的参数。 Property对象:单独的一个Property对象,提供属性功能。 Error对象:提供处理错误的功能。 使用ADO对象可以建立和管理数据库的连接,按数据库服务器的要求获得数 据,执行更新、删除、添加数据等操作,获取ODBC的错误信息等。 1.3.3.3 用来操纵数据的SQL命令 SQL命令是发送给数据库并要求数据库操作的指令,它是专门为数据库设计 的语言,比一般的计算机程序语言简单的多。SQL命令主要分成两部分:DDL(Data Definition Language)和DML(Data Manipulation Language),其中DDL是建立数据表及数据列的指令群,而DML则是操作数据库记录的指令群,如数据库记录 的添加、更新、删除、和查询等。 SQL命令,包括Select、Delete、Update、Insert Into、Select Into等。 ? 筛选及排序记录的Select指令 基本句型一:Select 字段串列 From 数据表 基本句型二:Select „ From „ Where 筛选条件 9 第10页 共50 页 基本句型三:Select „ From „ Order By字段串列 Select Top:限定选取数据的条数 ? 删除数据记录的Delete指令 基本语法:Delete From 数据表 Where 条件式 ? 更新数据记录的Update指令 基本语法:Update 数据表Set 表达式 ? 增加数据记录的Insert Into 指令 基本句型一:Insert Into 数据表 (字段串列) Values (字段串列) 基本句型二:Insert Into 数据表 (字段1,字段2,„,字段n) Select „ ? 建立新数据表的Select Into 指令 该指令与“Insert Into „ Select „”指令的区别是,这个指令将建立另一个 新的数据表,而Insert Into是增加数据记录到“现存的”数据表中。 1.3.4 Visual Basic 6.0访问数据库的过程 ?定义数据库组建 Dim con As New ADODB.Connection ?打开数据库 对于SQL数据库,其连接语句为con.Open "driver={sql server};server= localhost;uid=sa;pwd=;database=student"。而对于Access数据库,连接语句为 con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path + "\student.mdb" ?设定SQL语句,使用“Execute”命令,即可开始执行访问数据库的动作 Dim rs As New ADODB.Recordset 其中rs为结果集对象(RECORDSET) ?关闭结果集对象,断开与数据库的连接 rs.Close Con.Close 10 第11页 共50 页 第二章 系统整体规划 在系统设计过程中,首先要建立的就是数据库。本数据库采用SQL Server 2000来构造,共使用了7个表,它们分别是用户信息表(User)、学籍信息表(xj)、开设课程信息表(allkecheng)、班级信息表(Class)、班级课程信息表 (classkecheng)、考试类型信息表(kaoshileixing)、学生成绩表(cj)。 1.用户信息表(User): 字段名 数据类型 说明 是否为空 描述 Username 文本 用户名 Not Null Primary Key Password 文本 用户密码 Not Null Admin 文本 管理员 Not Null Readonly 文本 只读用户 Not Null 2.学籍信息表(xj): 字段名 数据类型 说明 是否为空 描述 SID 文本 学号 Not Null Primary Key SName 文本 姓名 Not Null SGender 文本 性别 Not Null SClass 文本 班级 Not Null SBirthday 日期/时间 出生日期 Not Null SAddress 文本 家庭住址 Not Null SCode 文本 邮政编码 Not Null STel 文本 联系电话 Not Null SRuxueshijian 文本 入学时间 Not Null SRemark 备注 备注 Not Null 3.开设课程信息表(allkecheng): 字段名 数据类型 说明 是否为空 描述 Name 文本 课程名称 Not Null Primary Key Name 文本 教材 Not Null 4.班级信息表(Class): 字段名 数据类型 说明 是否为空 描述 Year 文本 年级 六年级体育公开课教案九年级家长会课件PPT下载六年级家长会PPT课件一年级上册汉语拼音练习题六年级上册道德与法治课件 Not Null Primary Key Class 文本 班级 Not Null 11 第12页 共50 页 ID 文本 教室 Not Null Nianzhi 文本 年制 Not Null Zhuanye 文本 专业 Not Null Teacher 文本 班主任 Not Null Remark 文本 备注 Not Null 5.班级课程信息表(Classkecheng): 字段名 数据类型 说明 是否为空 描述 Year 文本 年级 Not Null Primary Key Zhuanye 文本 专业 Not Null Nianzhi 文本 年制 Not Null Data 文本 学期 Not Null Name 文本 课程名称 Not Null 6.考试类型信息表(Kaoshileixing): 字段名 数据类型 说明 是否为空 描述 ID 文本 类型 Not Null Primary Key 7.学生成绩表(Chengji): 字段名 数据类型 说明 是否为空 描述 ID 文本 学号 Not Null Primary Key Data 文本 学期 Not Null Leixing 文本 类型 Not Null Name 文本 课程名称 Not Null Primary Key Score 文本 分数 Not Null Remark 文本 备注 Not Null 得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种 实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各 种具体信息,通过相互之间的作用形成数据的流动。 本实例根据上面的设计规划出的实体有:学生实体、班级实体,班级课程实体,学籍实体,成绩实体。 12 第13页 共50 页 年制 教室 专业 年级 专业 年制 年级 学期 班主任 课程 名称 设置 班级 班级课程 姓名 住址 学号 生日 性别 学习 学 生 属于 学习 属于 学号 入学时间学号 录号 录号 学籍表 成绩表姓名录 情况 姓名联系电话 情况 号 性别 分数 学期 邮编类型课程班级 录号 时间 名称 住址出生描述 日期 时间 图2.1 学生信息管理系统E-R图 13 第14页 共50 页 开始 登陆窗体 N 重新登陆 判断用户是 否存在 Y MDI主窗体 (系统主窗口) 返回主窗体 判断用户权Admin用 限 户 管理系统用户 普通用户(浏览) (添加、删除、 修改) 学生信息管理(班级信息、学生档学生信息 查找(按学案、课程和成绩管理) 号和姓名) 图2.2 系统流程图 14 第15页 共50 页 系统开发的目标是实现学生信息管理的系统化、规范化和自动化,这是在 用户要求的基础上提出来的,功能要求如下: (一)系统管理:定义使用本系统的用户名称、密码 及访问权限。 (二)班级管理:能对学生班级添加、浏览、查询。 (三)学生档案管理:能对学生档案添加、浏览、查询。 (四)课程管理:对课程进行添加、修改、删除操作。 (五)成绩管理:对学生考试类型的设置及成绩的添加、浏览、查询。 (六)打印报表:实现对所有学生基本信息的总体浏览和打印。 15 第16页 共50 页 经过需求分析、功能模块设计之后要进入详细设计阶段,本阶段将按系统的 主要模块进行论述,重在阐述具体的某项功能的实现方法或运用到的相关技术。 1.添加引用:单击工程菜单中的引用选项,添加Microsoft ActiveX Data Objects 2.6 Library和Microsoft Excel 9.0 Object Library两个引用。 2.添加部件:单击工程菜单中的部件选项,添加Microsoft ADO Data Control 6.0(OLEDB)、Microsoft Common Dialog Control 6.0(SP3) 、Microsoft FlexGrid Control 6.0、Microsoft Windows Common Controls 6.0(SP4)和Microsoft Windows Common Controls-2 6.0五项。 添加一个模块module1,在module1中添加如下代码 Public modi As Boolean Public classmodi As Boolean Public xuefeimodi As Boolean Public txtsql As String Public find As Boolean Public classfind As Boolean Public xuefeifind As Boolean Public username As String Public qxstr As String Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset Dim mycon As ADODB.Connection Dim rst As ADODB.Recordset Set mycon = New ADODB.Connection mycon.ConnectionString = connstring mycon.Open Dim stokens() As String On Error GoTo exectuesql_error stokens = Split(sql) If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then 16 第17页 共50 页 mycon.Execute sql Else Set rst = New ADODB.Recordset rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic Set ExecuteSQL = rst End If exectuesql_exit: Set rst = Nothing Set mycon = Nothing Exit Function exectuesql_error: Resume exectuesql_exit End Function Public Function connstring() As String connstring = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" & App.Path & "/xs.mdb" End Function Public Function Executeqx(ByVal txt As Integer) As String Dim sql As String Dim mycon As ADODB.Connection Dim rst As ADODB.Recordset Set mycon = New ADODB.Connection mycon.ConnectionString = connstring mycon.Open Set rst = New ADODB.Recordset sql = "select admin from use where username='" & username & "'" rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic If rst.EOF = True Then MsgBox "非法用户!", vbExclamation + vbOKOnly, "警告" Executeqx = "nothing" Exit Function End If If rst.Fields(0) = "y" Then Executeqx = "admin" 17 第18页 共50 页 Exit Function End If rst.Close sql = "select readonly from use where username='" & username & "'" rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic If rst.Fields(0) = "y" Then Executeqx = "readonly" Exit Function End If Select Case txt Case 1 sql = "select qx1 from use where username='" & username & "'" Case 2 sql = "select qx2 from use where username='" & username & "'" Case 3 sql = "select qx3 from use where username='" & username & "'" Case 4 sql = "select qx4 from use where username='" & username & "'" End Select On Error GoTo exectuesql_error Set rst = New ADODB.Recordset rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic If rst.Fields(0) = "y" Then Executeqx = "true" Else Executeqx = "false" End If exectuesql_exit: Set rst = Nothing Set mycon = Nothing Exit Function exectuesql_error: Resume exectuesql_exit End Function 18 第19页 共50 页 3.3.1 登陆界面(frmdenlu) 因为本系统是按学生信息管理的思想设计的,故而登陆部分主要完成用户及 密码校验、确定使用者的权限等功能。这里附上本程序的登陆界面,见图3.1。 图3.1 用户登陆界面 用户登陆界面流程图如下图3.2所示: 19 第20页 共50 页 开始 输入用户名, 密码 N n i>3 判断 Y Y Y 进入主窗体MDI 退出 图3.2 登陆界面流程图 本窗体由3个label控件,2个textBox文本框,4个pictureBox图片控件,2个command命令按钮。通过“立即登录”command1按钮来检查数据在数据库中查询,如果查到相应的记录,用户的登陆获得通过,此时可以退出登陆窗口,并 进入MDI主窗口。详细代码见附录。 3.3.2 MDI主窗口(frmmain) 本系统采取多文档界面(MultiDocument Interface)。多文档界面是一种Windows用户界面标准。它有一个父窗口,在典型情况下,父窗口用来显示程序 菜单以及包含子窗口。 在工程中添加一个MDI窗口,取名为“MDIForm1.frm”,并为MDI窗体进行 菜单和代码的设计,其运行界面如图3.3所示。 20 第21页 共50 页 图3.3 主界面 主界面流程图如图3.4所示: 开始 主窗体MDI 判断用户的权限 普通用户 Admin用户 可以任意添加修不能任意添加信息 改资料 返回菜单 图3.4 主界面流程图 主界面模块上方显示了系统管理、班级管理、学生档案管理、学生交费管理、 21 第22页 共50 页 课程管理、成绩管理、打印报表菜单。主界面模块其实就等于是一个容器,各个 模块都通过它连成一体,组成一个完整的系统。其功能的实现主要通过菜单编辑 器和编写代码来完成。详细代码见附录。 3.3.2.1 窗体代码设计 1.在代码窗口的通用部分,定义两个数组find1和liulan1用于对学生信息 的查找和浏览。 Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Dim find1 As Integer Dim liulan1 As Integer 2.判断用户权限 如果登陆的为普通用户类型的用户,则用户不能使用“系统管理”这一功能, 而对于管理员类型的用户,则没有此限制。所以在MDIForm的Load事件中需要 判断用户类型。 Private Sub MDIForm_Load() 'username = "0001" DataEnv1.Connection1.ConnectionString = connstring StatusBar1.Panels(2).Text = Now StatusBar1.Panels(3).Text = "当前操作员: " & username Dim aa As String Select Case Executeqx(1) Case "admin" aa = "超级管理员" Case "readonly" aa = "只读管理员" Case Else aa = "普通管理员" End Select StatusBar1.Panels(4).Text = "状态: " & aa 22 第23页 共50 页 End Sub 3.3.2.2 菜单设计 MDI主窗体是整个系统的容器,为了方便用户的使用,应设计相应的菜单和 代码。 3.3.3系统管理 1.“重新登陆”子菜单的代码 当单击了“重新登陆”退出整个MDI主窗体,并显示登陆窗体。 Private Sub denglu2_Click() Frmdenlu.Show Unload Me End Sub 2.添加用户管理窗体(frmuser1) 向项目中添加窗体,并命名为frmuser1.frm。窗体的控件设计如图3.5所示 图3.5 用户管理界面 用户管理界面流程图如图3.6所示: 23 第24页 共50 页 开始 Admin用户 判断 添加新用户 y 普通用户 判断用户是否存在 不是存在 n 返回菜单 图3.6 用户管理界面流程图 如果登陆的用户类型是超级管理员,“系统管理”菜单中的“添加用户”一 项是可用的,当单击该子菜单时,会出现新增用户窗口,可以添加新的用户。根 据访问权限要求不同,添加的用户也就有所不同。 在“新用户名”后的文本框中输入要注册的新用户名,在“密码”后的文本 框中输入密码,在“确认密码”后的文本框中在次输入密码,在“用户类别”和 “权限”项选择要添加的用户类别,用单击“添加”按钮即提示添加成功,单击 “取消”则清空文本框中的数据,如两次输入的密码不一致,则提示两次密码输 入密码不同。如注册成功,则将注册的信息保存到系统用户信息表user中。详 细代码见附录。 3.3.4班级管理 包括班级信息浏览、添加、查询等子模块。 1.班级浏览窗体(formclass2) 在工程中添加一个窗体,命名为formclass2.frm, 这里将使用formclass2窗体,来实现浏览学生信息的功能,该界面运行时如图3.7所示。 24 第25页 共50 页 图3.7 班级浏览 在该窗体中,用户可以查找修改删除学生信息,所以用一个Treeview和一个Listview分别显示班级列表和该班级下面的学生列表,具体设置如表3.1所示 表3.1formclass2中部分控件的属性 对象 属性 设置 Name Formclass2 Caption 浏览班级 Form BorderStyle 1-Fixed Single MDIChild True WindowState 2-Maximized 7-tvwTreelinesPlusMinusoPictureTTreeview Style ext Toolbar1 Appearance 0-ccFlat MSF1 MSFLexGrid Appearance 0-flex3D 当窗体启动时,需要在Treeview中加载班级列表,并初始化MSF1中的内容。 在显示该班级下面所有学生信息的同时,用户可以对记录进行管理:添加新 记录、编辑或者删除当前记录,为此在Listview中创建右键菜单,用来对记录 进行操作。 2.添加班级(formclass1) 在工程中添加一个窗体,命名为formclass1.frm, 这里将使用formclass1窗体,来实现添加班级信息的功能,该界面运行时如图3.8所示。 25 第26页 共50 页 图3.8 添加班级 在“添加班级设置”窗体中,按照上面的提示填上要添加班级的信息,单击 “确定”按钮,即将添加后的信息更新保存到系统班级信息表class中,单击“取消”按钮清空文本框里所有数据,并退出“添加班级设置”界面。详细代码见附 录。 3.查询班级(formclass3) 在工程中添加一个窗体,命名为formclass3.frm, 这里将使用formclass3窗体,来实现添加班级信息的功能,该界面运行时如图3.9所示。 图3.9 班级查询 在“班级设置查询”窗体中,按照上面的提示信息填上要查询的班级信息, 单击“确定”按钮,即可显示所查班级的基本信息,详细代码见附录。 3.3.5学生档案管理 在工程中添加三个窗体,分别命名为form1,form2,form3,通过菜单来实现对学生档案添加、浏览、查询的功能。 26 第27页 共50 页 (1)档案添加模块: 图3.10 添加学生信息界面 操作如下: 在“文本框”中按文本框中的提示内容依次输入或选择相应的学籍信息,单 击“确定”按钮即将此学籍信息保存到系统学生档案信息表xj中,单击“取消”按钮清空文本框中所有数据。界面如图3.10所示。代码见附录。 (2)档案信息查询模块: 图3.11 档案信息查询 操作如下: 本模块可按学号,姓名,班级,按姓名关键字查询学生档案信息,按文本框 中的提示信息输入查询条件,单击“查询”按钮,将查询到的信息显示到学生档 案信息列表中,单击“取消”按钮,清空显示数据。界面如图3.11所示。代码见附录。 (3)档案信息浏览模块: 在工程中添加一个窗体,命名为form3.frm, 这里将使用form3窗体,来实 27 第28页 共50 页 现浏览学生信息的功能,该界面运行时如图3.12所示。 图3.12 浏览 操作如下: 在该窗体中,用户可以查找修改删除学生信息,所以用一个Treeview和一个Listview分别显示班级列表和该班级下面的学生列表,具体设置如表3.1所示 表3.2formclass2中部分控件的属性 对象 属性 设置 Name Form3 Caption 浏览班级 Form BorderStyle 1-Fixed Single MDIChild True WindowState 2-Maximized 7-tvwTreelinesPlusMinusoPictureTTreeview Style ext Toolbar1 Appearance 0-ccFlat MSF1 MSFLexGrid Appearance 0-flex3D 当窗体启动时,需要在Treeview中加载班级列表,并初始化MSF1中的内容。在显示该班级下面所有学生信息的同时,用户可以对记录进行管理:添加新记录、 编辑或者删除当前记录。 28 第29页 共50 页 3. 3. 6课程管理 在工程里添加两个窗体,分别命名为frmjiben.frm和Frmclasskecheng,将用这两个窗体来实现班级课程设置和基本课程设置的功能。该窗体运行时界面如 图3.13和3.14所示 图3.13 课程设置 操作如下: 首先打开基本课程对话框,然后点“增加”按钮,在“课程名”对应的文本 框中输入课程名,“教材”下输入使用教材的信息,单击“确定”即可完成课程 的添加。这样就可能实现基本课程的添加。若要“修改”和”删除”.先选中要改的课程,然后点“确定”,这时系统会提示要真的“修改”和”删除”吗,要 是了点“是”按钮就可完成操作,反之这取消操作。 29 第30页 共50 页 图3.14 班级课程设置 首先打开基本课程对话框(图3.10),然后依次在年级、专业、年制、学期 对应的列表中选择相应的项目,从“课程列表”中选择要添加的课程,单击“添 加”或“全部添加”即可完成班级课程设置。代码见附录。 该模块包括考试类型设置、成绩管理(浏览、添加、查询)来实现对学生成 绩管理的功能。代码见附录。该模块其中一项运行的结果如图3.15所示 30 第31页 共50 页 图3.15 成绩添加 (1)成绩信息添加模块 操作如下: 首先打开成绩添加对话框,分别在学期、班级、学号、类型、姓名对应的文 本框中选择或输入相应的信息,在“各科成绩”对应的文本中输入成绩,单击“添 加”按钮即可将成绩信息保存到系统成绩信息表cj中。单击“取消”清空文本 框中所有数据。 (2)成绩信息的查询模块 操作如下: 可按考试期号、学号、班号和课程信息查询,单击“查询”即可。 (3)成绩信息修改模块 操作如下: 选择要修改的成绩信息修改后单击“修改”按钮即可保存到成绩表cj中。单击“取消”清空文本框中所有数据。 3.3.8报表功能模块 报表设计在实践应用中很有实用性,同样,它也是一项细致的工作,没有太 难的算法;当然要使其统计功能做得强大,还要有统计学的理论知识作指导。 此模块很简单,主要实现的是学生信息的预览、打印等功能。 默认的数据报表设计器包含如下内容: 1.报表标头 包含显示在一个报表开始处的文本,例如报表标题、作者或 数据库名。如果想把报表标头作为报表的第一页,设置它的ForcePageBreak属性为rptPageBreakAfter。 2.页标头 包含在每一页顶部出现的信息,例如报表的标题。 3.分组标头/注脚 包含数据报表的一个“重复”部分。每一个分组标头与 一个分组注脚相匹配。标头和注脚对与数据环境设计器中的一个单独的command对象相关联。 4.细节 包含报表的最内部的“重复”部分(记录)。详细部分与数据环境 层次结构中最低层的Command对象相关联。 5.页注脚 包含在每一页底部出现的信息,例如页数。 6.报表注脚 包含报表结束处出现的文本,例如摘要信息或一个地址或联系 31 第32页 共50 页 人姓名。报表注脚出现在最后一个页标头和页注脚之间。 Microsoft数据报表设计器(Microsoft Data Report Designer)是一个多功能的报表生成器,以创建联合分层结构报表的能力为特色。同数据源(如数据 环境设计器(Data Environment Designer)一起使用),可以从几个不同的相关 表创建报表。除创建可打印报表之外,也可以将报表导出到HTML或文本文件中。 使用Data Report根据数据库中的记录来生成报表,需要完成以下步骤: 1.置一个数据源,例如Microsoft数据环境,以访问数据库。 2.设定DataReport对象的DataSource属性为数据源。 3.设定DataReport对象的DataMember属性为数据成员。 4.右键单击设计器,并单击“检索结构”。 5.向每个相应的节添加响应的控件。 6.为每一个控件设定DataMember和DataField属性。 7.运行时,使用Show方法显示数据报表。 至此,整个学生信息管理系统开发完成,单击Visual Basic 6.0程序的“文件,“生成学生信息管理系统.exe”,将该数据库程序编译生成可执行程序学生 信息管理系统.exe。对此执行文件进行测试,然后利用Visual Basic自带的打向导工具Package & Deployment Wizard来发布该系统,之后即可利Setup.exe文件行学生信息管理系统程序的安装。 32 第33页 共50 页 第四章 结束语 在毕业设计中,我们遇到的困难很多,在解决它们的同时我又学到了很多, 获益非浅,特别是如何分析、建立、开发一个系统。 在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系 统模型。在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方 面知识有一个认识,然后将系统的模型建立起来。而且一个成功的软件要符合用 户的需要,要以用户为中心,开发出用户想要的软件,而不能自以为是,想当然。 在程序编写中,我认识到软件要有简便的界面,良好的程序风格,完备的文 挡。拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代 码时更加容易下手。 我认为,所谓良好的界面,就是用户需要的界面,力求简便全面。所以设计 一个界面时,开发人员必须要了解用户的想法,从用户的角度去设计,当然,开 发不能全听用户的意见,在详细分析了系统后,开发人员可以向用户提出一些修 改的意见,在双方多次交流后定出程序所需的功能,以决定界面的实现。 在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良 好的编程风格与习惯也是使软件便于维护的基础。那如何是良好的编程风格与习 惯呢?我认为主要是程序的模块化、必要的注释和完备的设计文挡三个方面。所 谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码 中实现多个功能,如果这样做,别的人是非常难读懂你的程序。必要的注释,显 而易见是要在程序的编写中加入对程序的说明,原因就是为了别人能读懂你的程 序,再一段时间后你自己还能读懂自己的程序。而完备的设计文挡是在系统开发 过程中记录下开发的全部过程,拥有它,在以后维护软件时就有依据使维护工作 变得简单一些。 总结这次毕业设计给我感受最深的至少有四点: 1.进行软件开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。 2.要遵循软件开发本身的规律和善于吸收已有的经验。 3.要善于同别人交流与合作,获取多方面的资源。 4.要真真实实的多查资料,多问,多看。 33 第34页 共50 页 致 谢 经过一个月的毕业设计,本人学会了很多知识,个人的能力有了很大的提高, 对Visual Basic 6.0和SQL Server 2000的建设有了更深刻的认识,在朋友和 老师的指引下,并用Visual Basic 6.0结合SQL Server 2000顺利的开发了这样的一个学生信息管理系统,我的毕业设计取得了应有的效果。 在这里,我还要感谢我们的指导老师邢文生老师,他们帮助我解决了设计中 的疑难和困惑,为我完成设计提供了极大的帮助。在我遇到问题时他总是耐心的 为我们作出解答,并帮我查找相关资料;在我遇到困难时帮助解决了不少的难点, 使得系统能及时完成。 邢文生老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我 受益匪浅,使我得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮 助,感谢指导老师耐心的辅导。能够顺利完成毕业课题我们还要感谢计算机科学 与技术系,给我们提供了良好实习和设计环境。 本人在此对所有向我提供帮助的老师和同学致以最诚挚的敬意。 34 第35页 共50 页 参考文献 [1] 抖斗书屋.Visual Basic 6.0常用编程技巧.清华大学出版社,1999.8 [2] 袁鹏飞 孙军安.中文版SQL Server 2000数据库系统管理.人民邮电出版社,2001.5 [3] 李真文.Visual Basic 6.0全实例教程.北京:希望电子出版社,2002.6 [4] 张海藩.软件工程导论.清华大学出版社,2002.1 [5] 罗朝盛,余文方.Visual Basic6.0程序设计教程.人民邮电出版, 2001.5 [6] 周苏,王文.软件工程.科学出版社,2000.3 [7] 张瀚文.Visual Basic数据库系统开发实例与解析.高等教育出版社, 2001.4 [8] 萨师煊,王珊.数据库系统概论.高等教育出版社,2000.1 [9] 邱淑清.Microsoft Access2000即学即会. 清华大学出版社,2000.3 35 第36页 共50 页 Private Sub Command1_Click() Dim mrc As ADODB.Recordset txtsql = "select username from use where username='" & Trim(Text1.Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then MsgBox " 用户名错误!", vbExclamation + vbOKOnly, "警告" Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) Exit Sub End If username = mrc.Fields(0) txtsql = "select username from use where password='" & Trim(Text2.Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then MsgBox " 密码错误!", vbExclamation + vbOKOnly, "警告" Text2.SetFocus Text2.SelStart = 0 Text2.SelLength = Len(Text2.Text) Exit Sub End If MDIForm1.Show Unload Me End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End If End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Dim find1 As Integer Dim liulan1 As Integer Private Sub add_Click() qxstr = Executeqx(2) If qxstr = "false" Or qxstr = "readonly" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If Form1.Show modi = False Form1.ZOrder (0) End Sub Private Sub cjadd_Click() qxstr = Executeqx(4) If qxstr = "false" Or qxstr = "readonly" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") 36 第37页 共50 页 Exit Sub End If frmcj2.Show frmcj2.ZOrder 0 End Sub Private Sub cjbrowse_Click() qxstr = Executeqx(4) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If frmcj1.Show frmcj1.ZOrder 0 End Sub Private Sub cjfind_Click() qxstr = Executeqx(4) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If End Sub Private Sub claasfind_Click() qxstr = Executeqx(2) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If Form4.Show Form4.ZOrder (0) i = SetWindowPos(Form4.hwnd, -1, 0, 0, 0, 0, 3) End Sub Private Sub classapp_Click() qxstr = Executeqx(2) If qxstr = "false" Or qxstr = "readonly" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If Formclass1.Show classmodi = False Formclass1.classload Formclass1.ZOrder (0) End Sub Public Sub clabrowse() txtsql = "select * from class" Formclass2.ZOrder (0) Formclass2.Caption = "浏览班级设置" Formclass2.classshowtitle Formclass2.classshowdata End Sub Private Sub classbrowse_Click() qxstr = Executeqx(2) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub 37 第38页 共50 页 End If Formclass2.Show End Sub Private Sub classfind_Click() qxstr = Executeqx(2) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If Formclass3.Show Formclass3.ZOrder (0) End Sub Private Sub classkecheng_Click() qxstr = Executeqx(4) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If Frmclasskecheng1.Show Frmclasskecheng1.ZOrder End Sub Private Sub leixing_Click() qxstr = Executeqx(4) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If Frmleixing.Show Frmleixing.ZOrder 0 End Sub Private Sub liulan_Click() qxstr = Executeqx(2) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If find = False Form3.Show End Sub Private Sub MDIForm_Load() 'username = "0001" DataEnv1.Connection1.ConnectionString = connstring StatusBar1.Panels(2).Text = Now StatusBar1.Panels(3).Text = "当前操作员: " & username Dim aa As String Select Case Executeqx(1) Case "admin" aa = "超级管理员" Case "readonly" aa = "只读管理员" Case Else aa = "普通管理员" End Select StatusBar1.Panels(4).Text = "状态: " & aa End Sub 38 第39页 共50 页 Private Sub useradd_Click() qxstr = Executeqx(1) If qxstr = "false" Or qxstr = "readonly" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If frmuser1.Show frmuser1.ZOrder 0 End Sub Private Sub usermodi_Click() qxstr = Executeqx(1) If qxstr = "false" Then ss = MsgBox("对不起,你没有管理本功能的权限,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If End Sub Private Sub Command1_Click() If Trim(Text1(0).Text) = "" Then MsgBox "用户名不能为空!", vbExclamation + vbOKOnly, "警告" Text1(0).SetFocus Exit Sub End If If Trim(Text1(1).Text) = "" Then MsgBox "密码不能为空!", vbExclamation + vbOKOnly, "警告" Text1(1).SetFocus Exit Sub End If If Trim(Text1(2).Text) = "" Then MsgBox "确认密码不能为空!", vbExclamation + vbOKOnly, "警告" Text1(2).SetFocus Exit Sub End If If Trim(Text1(1).Text) <> Trim(Text1(2).Text) Then MsgBox "确认密码不正确!", vbExclamation + vbOKOnly, "警告" Text1(2).SetFocus Exit Sub End If Dim aa As Integer aa = 0 If Option1(2).Value = True Then For i = 0 To 3 If Check1(i).Value = 1 Then aa = 1 Exit For End If Next i If aa = 0 Then MsgBox " 普通用户至少要有一项权限!", vbExclamation + vbOKOnly, "警告" Exit Sub End If End If Dim mrc As ADODB.Recordset txtsql = "select * from use where username='" & Trim(Text1(0).Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = False Then MsgBox " 已存在该用户!", vbExclamation + vbOKOnly, "警告" 39 第40页 共50 页 Text1(0).SetFocus Text1(0).SelStart = 0 Text1(0).SelLength = Len(Text1(0).Text) Exit Sub End If txtsql = "select * from use" Set mrc = ExecuteSQL(txtsql) mrc.AddNew mrc.Fields(0) = Trim(Text1(0).Text) mrc.Fields(1) = Trim(Text1(1).Text) For i = 0 To 2 If Option1(i).Value = True Then Select Case i Case 0 mrc.Fields("admin") = "y" Case 1 mrc.Fields("readonly") = "y" Case 2 For j = 0 To 3 If Check1(j).Value = 1 Then Select Case j Case 0 mrc.Fields("qx1") = "y" Case 1 mrc.Fields("qx2") = "y" Case 2 mrc.Fields("qx3") = "y" Case 3 mrc.Fields("qx4") = "y" End Select End If Next j End Select End If Next i mrc.Update MsgBox " 用户添加成功!", vbExclamation + vbOKOnly, "警告" Text1(0).Text = "" Text1(1).Text = "" Text1(2).Text = "" End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Option1(2).Value = True End Sub Private Sub Form_Resize() Text1(0).SetFocus End Sub Private Sub Option1_Click(Index As Integer) If Index <> 2 Then For i = 0 To 3 Check1(i).Enabled = False Next i Else For i = 0 To 3 Check1(i).Enabled = True Next i 40 第41页 共50 页 End If End Sub Private Sub Combo1_Click(Index As Integer) Dim mrc As ADODB.Recordset If Index = 0 Then txtsql = "select DISTINCT 专业 from class where 年级='" & Trim(Combo1(0).Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then Combo1(1).Text = "" Combo1(2).Text = "" Exit Sub End If Combo1(1).Clear mrc.MoveFirst Do Until mrc.EOF Combo1(1).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(1).ListIndex = 0 txtsql = "select DISTINCT 年制 from class where 年级='" & Trim(Combo1(0).Text) & "' and 专 业='" & Trim(Combo1(1).Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then Combo1(2).Text = "" Exit Sub End If Combo1(2).Clear mrc.MoveFirst Do Until mrc.EOF Combo1(2).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(2).ListIndex = 0 ElseIf Index = 1 Then txtsql = "select DISTINCT 年制 from class where 年级='" & Trim(Combo1(0).Text) & "' and 专业='" & Trim(Combo1(1).Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then Combo1(0).Text = "" Combo1(2).Text = "" Exit Sub End If Combo1(2).Clear mrc.MoveFirst Do Until mrc.EOF Combo1(2).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(2).ListIndex = 0 End If End Sub Private Sub Combo1_DropDown(Index As Integer) If Index = 0 Then Dim mrc As ADODB.Recordset txtsql = "select DISTINCT 年级 from class " Set mrc = ExecuteSQL(txtsql) mrc.MoveFirst Combo1(0).Clear 41 第42页 共50 页 Do While Not mrc.EOF Combo1(0).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(0).ListIndex = 0 End If End Sub Private Sub Command1_Click() qxstr = Executeqx(4) If qxstr = "readonly" Then ss = MsgBox("对不起,你是只读用户不能添加记录,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If If List2.ListCount = 0 Then ssss = MsgBox("你还没有选择课程!", vbInformation + vbOKOnly, "警告") Exit Sub End If Dim mrc As ADODB.Recordset txtsql = "select * from classkecheng where 年级='" & Trim(Combo1(0).Text) & "' and 专业='" & Trim(Combo1(1).Text) & "'and 年制='" & Trim(Combo1(2).Text) & "' and 学期='" & Trim(Combo1(3).Text) & "'" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = False Then sss = MsgBox("已存在该班级本学期课程设置和成绩记录," & Chr(10) & Chr(13) & "继续会导致以 上的成绩丢失,继续吗?!", vbOKCancel + vbExclamation, "警告") If sss = vbCancel Then Exit Sub Else txtsql = "delete * from classkecheng where 年级='" & Trim(Combo1(0).Text) & "' and 专业='" & Trim(Combo1(1).Text) & "'and 年制='" & Trim(Combo1(2).Text) & "' and 学期='" & Trim(Combo1(3).Text) & "'" Set mrc = ExecuteSQL(txtsql) txtsql = "delete * from cj where 学号 in(select DISTINCT xj.学号 from xj inner join class on xj.班级=class.班级 where 年级='" & Trim(Combo1(0).Text) & "' and 专业='" & Trim(Combo1(1).Text) & "'and 年制='" & Trim(Combo1(2).Text) & "') and 学期='" & Trim(Combo1(3).Text) & "'" Set mrc = ExecuteSQL(txtsql) End If End If txtsql = "select * from classkecheng" Set mrc = ExecuteSQL(txtsql) For i = o To List2.ListCount - 1 mrc.AddNew mrc.Fields(0) = Trim(Combo1(0).Text) mrc.Fields(1) = Trim(Combo1(1).Text) mrc.Fields(2) = Trim(Combo1(2).Text) mrc.Fields(3) = Trim(Combo1(3).Text) mrc.Fields(4) = Trim(List2.List(i)) mrc.Update Next i ssss = MsgBox("课程设置成功!", vbInformation + vbOKOnly, "提示") End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Command3_Click() Dim i As Integer i = 0 Do While i < List1.ListCount 42 第43页 共50 页 If List1.Selected(i) = True Then List2.AddItem List1.List(i) List1.RemoveItem i Else i = i + 1 End If Loop If List1.ListCount = 0 Then Command3.Enabled = False End If If List2.ListCount <> 0 Then Command4.Enabled = True End If End Sub Private Sub Command4_Click() Dim i As Integer i = 0 Do While i < List2.ListCount If List2.Selected(i) = True Then List1.AddItem List2.List(i) List2.RemoveItem i Else i = i + 1 End If Loop If List1.ListCount <> 0 Then Command3.Enabled = True End If If List2.ListCount = 0 Then Command4.Enabled = False End If End Sub Private Sub Form_Load() Dim mrc As ADODB.Recordset txtsql = "select DISTINCT 年级 from class " Set mrc = ExecuteSQL(txtsql) mrc.MoveFirst Combo1(0).Clear Do While Not mrc.EOF Combo1(0).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(0).ListIndex = 0 txtsql = "select DISTINCT 专业 from class where 年级='" & Trim(Combo1(0).Text) & "'" Set mrc = ExecuteSQL(txtsql) Combo1(1).Clear mrc.MoveFirst Do While Not mrc.EOF Combo1(1).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(1).ListIndex = 0 txtsql = "select DISTINCT 年制 from class where 年级='" & Trim(Combo1(0).Text) & "' and 专 业='" & Trim(Combo1(1).Text) & "'" Combo1(2).Clear Set mrc = ExecuteSQL(txtsql) mrc.MoveFirst Do While Not mrc.EOF Combo1(2).AddItem mrc.Fields(0) 43 第44页 共50 页 mrc.MoveNext Loop Combo1(2).ListIndex = 0 mrc.Close Combo1(3).AddItem Val(Format(Date, "yyyy")) - 1 & "---" & Val(Format(Date, "yyyy")) & "年级 第一学期" Combo1(3).AddItem Val(Format(Date, "yyyy")) - 1 & "---" & Val(Format(Date, "yyyy")) & "年级 第二学期" Combo1(3).AddItem Format(Date, "yyyy") & "---" & Val(Format(Date, "yyyy")) + 1 & "年级第一学 期" Combo1(3).AddItem Format(Date, "yyyy") & "---" & Val(Format(Date, "yyyy")) + 1 & "年级第二学 期" Combo1(3).AddItem Val(Format(Date, "yyyy")) + 1 & "---" & Val(Format(Date, "yyyy")) + 2 & " 年级第一学期" Combo1(3).AddItem Val(Format(Date, "yyyy")) + 1 & "---" & Val(Format(Date, "yyyy")) + 2 & " 年级第二学期" If Val(Format(Date, "mm")) > 8 Then Combo1(3).ListIndex = 2 Else Combo1(3).ListIndex = 1 End If '填充列表框 List1.Clear List2.Clear txtsql = "select 课程名称 from allkecheng " Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then Exit Sub End If mrc.MoveFirst Do Until mrc.EOF List1.AddItem mrc.Fields(0) mrc.MoveNext Loop Set mrc = Nothing '判断按纽是否有效 If List1.ListCount = 0 Then Command3.Enabled = False Else Command3.Enabled = True End If If List2.ListCount = 0 Then Command4.Enabled = False Else Command4.Enabled = True End If End Sub 浏览窗体: Public printstr As String Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Public Sub showtitle() MSF1.Clear Dim i As Integer With MSF1 .Cols = 14 .TextMatrix(0, 1) = "学号" .TextMatrix(0, 2) = "姓名" 44 第45页 共50 页 .TextMatrix(0, 3) = "性别" .TextMatrix(0, 4) = "年级" .TextMatrix(0, 5) = "班级" .TextMatrix(0, 6) = "专业" .TextMatrix(0, 7) = "年制" .TextMatrix(0, 8) = "出生年月" .TextMatrix(0, 9) = "家庭住址" .TextMatrix(0, 10) = "邮政编码" .TextMatrix(0, 11) = "联系电话" .TextMatrix(0, 12) = "入学时间" .TextMatrix(0, 13) = "备注" .ColWidth(0) = 200 .ColWidth(1) = 500 .ColWidth(2) = 700 .ColWidth(3) = 500 .ColWidth(4) = 1000 .ColWidth(5) = 800 .ColWidth(6) = 700 .ColWidth(7) = 800 .ColWidth(8) = 800 .ColWidth(9) = 3000 .ColWidth(10) = 800 .ColWidth(11) = 1000 .ColWidth(12) = 800 .ColWidth(13) = 6000 .FixedRows = 1 For i = 1 To 13 .ColAlignment(i) = 0 Next i .FillStyle = flexFillSingle .Col = 0 .Row = 0 .RowSel = 1 .ColSel = .Cols - 1 .CellAlignment = 4 .Row = 1 End With End Sub Private Sub Form_Activate() If find = True Then Form4.ZOrder End If If find = True Then Exit Sub ElseIf modi = True Then showdata ' TreeView1_DblClick modi = False Else tree End If End Sub Public Sub showdata() Dim j As Integer Dim i As Integer Dim mrc As ADODB.Recordset Set mrc = New ADODB.Recordset Set mrc = ExecuteSQL(txtsql) If mrc.EOF = False Then 45 第46页 共50 页 mrc.MoveFirst With MSF1 .Rows = 50 .Row = 1 Do While Not mrc.EOF .Rows = .Rows + 1 For i = 1 To mrc.Fields.Count .TextMatrix(.Row, i) = mrc.Fields(i - 1) Next i .Row = .Row + 1 mrc.MoveNext Loop End With Else If find = True Then Form3.Hide Form4.Show zzz = MsgBox("对不起,没有此学生的档案记录!", vbOKOnly, "查询") Form4.ZOrder (0) Form4.Text1(0).SetFocus End If End If Set mrc = Nothing End Sub Private Sub Form_Unload(Cancel As Integer) If find = True Then find = False Form4.Text1(0).SetFocus End If End Sub Public Sub tree() TreeView1.Nodes.Clear Dim nodex As Node Dim mrc As ADODB.Recordset Dim mrc1 As ADODB.Recordset Dim str As String Dim a As String a = "年级" 'TreeView1.LineStyle = tvwRootLines str = "select distinct 年级 from class order by 年级" Set mrc = ExecuteSQL(str) str = "select distinct 年级,班级 from class order by 年级,班级" Set mrc1 = ExecuteSQL(str) mrc.MoveFirst Do Until mrc.EOF mrc1.MoveFirst Set nodex = TreeView1.Nodes.add(, , a, mrc.Fields(0), 1, 1) Do While Not mrc1.EOF If mrc1.Fields(0) = mrc.Fields(0) Then Set nodex = TreeView1.Nodes.add(a, tvwChild, , mrc1.Fields(1), 2, 2) End If mrc1.MoveNext Loop a = a & "1" mrc.MoveNext Loop mrc1.Close mrc.Close Set mrc = Nothing 46 第47页 共50 页 Set mrc1 = Nothing End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Tag Case "find" Form4.Show Case "modi" If Trim(Me.MSF1.TextMatrix(MSF1.Row, 1)) = "" Then sssss = MsgBox("你还没有选择记录!", vbOKOnly + vbExclamation, "警告") Exit Sub Else qxstr = Executeqx(2) If qxstr = "readonly" Then ss = MsgBox("对不起,你是只读用户不能修改记录,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If modi = True Form1.Show Form1.ZOrder 0 End If Case "del" Dim mrc As ADODB.Recordset Dim intcount As Integer If Trim(Me.MSF1.TextMatrix(MSF1.Row, 1)) = "" Then sssss = MsgBox("你还没有选择记录!", vbOKOnly + vbExclamation, "警告") Else If qxstr = "readonly" Then ss = MsgBox("对不起,你是只读用户不能删除记录,请与管理员联系!", vbInformation + vbOKOnly, " 警告") Exit Sub End If If MsgBox("确定要删除学号为 " & Trim(Me.MSF1.TextMatrix(MSF1.Row, 1)) & " 的记 录吗?" & Chr(10) & Chr(13) & "该操作会导致该学生交费记录和成绩记录的丢失!确定吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then intcount = Me.MSF1.Row txtsql = "delete * from xj where 学号='" & Trim(Me.MSF1.TextMatrix(MSF1.Row, 1)) & "'" Set mrc = ExecuteSQL(txtsql) txtsql = "delete * from jf where 学号='" & Trim(Me.MSF1.TextMatrix(MSF1.Row, 1)) & "'" Set mrc = ExecuteSQL(txtsql) txtsql = "delete * from cj where 学号='" & Trim(Me.MSF1.TextMatrix(MSF1.Row, 1)) & "'" Set mrc = ExecuteSQL(txtsql) TreeView1_DblClick End If End If ' Case "print" ' Form6.Show ' Form6.ZOrder 0 End Select End Sub Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu) Select Case ButtonMenu.Key Case "dang" If Trim(printstr) = "" Then sssss = MsgBox("没有当前记录!", vbOKOnly + vbExclamation, "警告") Exit Sub 47 第48页 共50 页 End If If DataEnv1.rsCommand1.State = adStateOpen Then DataEnv1.rsCommand1.Close End If DataEnv1.rsCommand1.Open printstr If DataEnv1.rsCommand1.EOF = True Then sssss = MsgBox("没有当前记录!", vbOKOnly + vbExclamation, "警告") Exit Sub End If DataReportclass.Show 1 Case "all" If DataEnv1.rsCommand1.State = adStateOpen Then DataEnv1.rsCommand1.Close End If DataEnv1.rsCommand1.Open ("select xj.学号,xj.姓名,xj.性别,xj.班级,xj.出生年月,xj.家庭住 址,xj.邮政编码,xj.联系电话,xj.入学时间,xj.备注,class.专业 from xj inner join class on xj.班级 =class.班级") If DataEnv1.rsCommand1.EOF = True Then sssss = MsgBox("没有当前记录!", vbOKOnly + vbExclamation, "警告") Exit Sub End If DataReportclass.Show 1 End Select End Sub Private Sub TreeView1_DblClick() On Error GoTo ss If TreeView1.SelectedItem.Index = 0 Then MSF1.Clear Exit Sub End If txtsql = TreeView1.Nodes.Item(TreeView1.SelectedItem.Index) txtsql = "select xj.学号,xj.姓名,xj.性别,class.年级,xj.班级,class.专业,class.年制,xj.出生 年月,xj.家庭住址,xj.邮政编码,xj.联系电话,xj.入学时间,xj.备注 from xj inner join class on xj. 班级=class.班级 where xj.班级='" & txtsql & "' or 年级='" & txtsql & "' order by class.年 级 ,class.班级 ,xj.学号 " printstr = txtsql Me.Caption = "浏览学生档案" Me.showtitle Me.showdata Exit Sub ss: MSF1.Clear End Sub Dim txtsql1 As String Private Sub Combo1_Click(Index As Integer) Dim mrc As ADODB.Recordset txtsql1 = "select 专业,年制 from class where 班级='" & Trim(Combo1(1).Text) & "'" Set mrc = ExecuteSQL(txtsql1) mrc.Close End Sub Private Sub Combo1_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}" End If End Sub Private Sub Command1_Click() For j = 0 To 7 If Text1(j) = "" Then 48 第49页 共50 页 ss = MsgBox(Label1(j).Caption & "不能为空!", vbExclamation + vbOKOnly, "警告") Text1(j).SetFocus Text1(j).SelStart = 0 Text1(j).SelLength = Len(Text1(j).Text) Exit Sub End If Next Dim mrc As ADODB.Recordset txtsql1 = "select * from xj where 学号='" & Trim(Text1(0).Text) & "'" Set mrc = ExecuteSQL(txtsql1) If modi = False Then If mrc.EOF = False Then sss = MsgBox("已经存在该学号的记录,学号不能重复!", vbExclamation + vbOKOnly, "警告") Text1(0).SetFocus Text1(0).SelStart = 0 Text1(0).SelLength = Len(Text1(0).Text) mrc.Close Exit Sub End If End If If Not IsDate(Text1(2).Text) Then '判断是否日期格式 ssss = MsgBox("应输入日期 mm-dd-yy", vbInformation + vbOKOnly, "警告") Text1(2).SetFocus Text1(2).SelStart = 0 Text1(2).SelLength = Len(Text1(2).Text) Exit Sub End If If Not IsDate(Text1(6).Text) Then ssss = MsgBox("应输入日期 mm-dd-yy", vbInformation + vbOKOnly, "警告") Text1(6).SetFocus Text1(6).SelStart = 0 Text1(6).SelLength = Len(Text1(6).Text) Exit Sub End If If modi = True Then txtsql1 = "update xj set 学号='" & Trim(Text1(0).Text) & "',姓名='" & Trim(Text1(1).Text) & "',性别='" & Trim(Combo1(0).Text) & "',班级='" & Trim(Combo1(1).Text) & "',出生年月=#" & Trim(Text1(2).Text) & "# ,家庭住址='" & Trim(Text1(3).Text) & "' ,邮政编码='" & Trim(Text1(4).Text) & "' ,联系电话='" & Trim(Text1(5).Text) & "' ,入学时间=#" & Trim(Text1(6).Text) & "# ,备注='" & Trim(Text1(7).Text) & "'where 学号='" & Trim(Form3.MSF1.TextMatrix(Form3.MSF1.Row, 1)) & "'" Set mrc = ExecuteSQL(txtsql1) txtsql1 = "update cj set 学号='" & Trim(Text1(0).Text) & "' where 学号='" & Trim(Form3.MSF1.TextMatrix(Form3.MSF1.Row, 1)) & "'" Set mrc = ExecuteSQL(txtsql1) txtsql1 = "update jf set 学号='" & Trim(Text1(0).Text) & "' where 学号='" & Trim(Form3.MSF1.TextMatrix(Form3.MSF1.Row, 1)) & "'" 'Set mrc = ExecuteSQL(txtsql1) Unload Me Exit Sub End If txtsql1 = "select * from xj " Set mrc = ExecuteSQL(txtsql1) mrc.AddNew For i = 4 To 9 mrc.Fields(i) = Text1(i - 2).Text Next i mrc.Fields(0) = Trim(Text1(0).Text) mrc.Fields(1) = Trim(Text1(1).Text) mrc.Fields(2) = Trim(Combo1(0).Text) 49 第50页 共50 页 mrc.Fields(3) = Trim(Combo1(1).Text) mrc.Update Set mrc = Nothing For j = 0 To 7 Text1(j) = "" Next End Sub Public Sub load1() Dim mrc As ADODB.Recordset txtsql1 = "select DISTINCT 班级 from class order by 班级" Set mrc = ExecuteSQL(txtsql1) If mrc.EOF Then ddd = MsgBox("请先设置班级部署!", "警告") mrc.Close Exit Sub End If Combo1(1).Clear mrc.MoveFirst Do While Not mrc.EOF Combo1(1).AddItem mrc.Fields(0) mrc.MoveNext Loop Combo1(1).ListIndex = 0 Combo1(0).ListIndex = 0 If modi Then '如果是修改状态 Me.Caption = "修改" txtsql1 = "select * from xj where 学号='" & Trim(Form3.MSF1.TextMatrix(Form3.MSF1.Row, 1)) & "'" Set mrc = ExecuteSQL(txtsql1) mrc.MoveFirst For i = 4 To 9 Text1(i - 2).Text = mrc.Fields(i) Next i Text1(0).Text = mrc.Fields(0) Text1(1).Text = mrc.Fields(1) Combo1(0).Text = mrc.Fields(2) Combo1(1).Text = mrc.Fields(3) mrc.Close Else Me.Caption = "登记" For i = 2 To 7 Text1(i).Text = "" Next i Text1(6).Text = Date Text1(0).Text = "" Text1(1).Text = "" End If End Sub 50
本文档为【学生信息管理论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_348501
暂无简介~
格式:doc
大小:361KB
软件:Word
页数:86
分类:
上传时间:2017-09-19
浏览量:58