《2022年基于ExcelVBA中小学校收费系统的设计与实现》由会员分享,可在线阅读,更多相关《2022年基于ExcelVBA中小学校收费系统的设计与实现(17页珍藏版)》请在金锄头文库上搜索。
1、【标题】基于 Excel VBA 中小学校收费系统的设计与实现【作者】 陈松环【关键词】 Excel VBA 办公自动化中小学校收费系统【指导老师】谭海军【专业】 计算机科学与技术【正文】1 前言1.1 研究背景办公自动化作为一种新兴的办公手段,拥有强大的数据处理、分析能力, 它有足够的潜力“打破”传统的手工办公的束缚,彻底改变办公模式,提高办公效率、 增强数据安全性。 无论是从数量上还是质量上,办公自动化都体现出了强大的优势。对于学校而言, 收费及其收费的管理一直以来都是难题。办公自动化系统的进驻彻底改变了现状。 无论是从速度上还是从效率上都得到了极大的提高。同时减轻了参与人员的劳动强度。M
2、icrosoft Excel 是一个功能强大、广泛使用的电子表格软件, 可实现多重安全保护 (文件密码保护、数字签名、宏安全性) , 它的内置控制语言是VBA (Visual Basic For Application) , 可极大地增强Excel 的数据处理能力,以上特点使得学生收费系统可以利用Excel 的 VBA 开发完成。目前国内外很多教学、科研、设计等部门都在运用这一软件从事日常的数据表格处理。1.2 国内外办公自动化发展情况办公自动化于50 年代在美国和日本首先兴起,最初只是具有电子数据处理(EDP)的簿记功能,60 年代被管理信息系统(MIS) 取代,直到70 年代后期才形成涉及
3、多种技术的新型综合学科一办公自动化(OA)。80 年代,国外办公自动化得到了飞速发展,许多著名的计算机软硬件公司都跻身于这一巨大的市场。进入 90 年代以来,办公自动化在世界主要发达国家得到蓬勃发展。21 世纪办公自动化主要向个性化、移动办公和智能化方向发展。我国的OA软件业经过从80 年代末至今多年的发展,已从最初的提供面向单机的辅助办公产品,发展到今天的可提供面向企业级应用的大型协同工作产品。我国的OA软件厂商在走过一条艰难的创业之路的同时,也积累了许多先进的技术,培养了大量优秀的人才,为我国实现全面信息化社会打下了扎实的基础。1.3 学校收费系统的现状诸多高级程序语言的出现和学校对收费系
4、统的需求量促使了学校收费系统无论是量上还是质上都达到了很高的标准,功能也是应有尽有。收费、统计、 催款、 打印、数据库管理等等无所不能。权限的划分也是非常合理。但是, 许多收费系统并不提供数据备份、恢复,数据导入导出。针对这几点, 本系统完美支持Excel 文件数据的导入导出, 大大的提高了收费效率。同时, 数据的导出功能也方便了收费数据的处理、传输和携带。1.4 开发学校收费系统的意义精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 17 页Microsoft Excel 是一个功能强大、广泛使用的电子表格软件, 可实现多重安全保护 (
5、文件密码保护、数字签名、宏安全性) , 它的内置控制语言是VBA (Visual Basic For Application) , 可极大地增强Excel 的数据处理能力,以上特点使得学生收费系统可以利用Excel 的 VBA 开发完成。目前国内外很多教学、科研、设计等部门都在运用这一软件从事日常的数据表格处理。对于财政开支较小的中小学来说,花一笔不菲的费用去购买专业的收费软件是没有多大必要的, Microsoft Excel能轻松解决他们的问题,同时能为学校节约很大一笔开支。 对于中小学教师来讲,专业的软件使用需要培训,对学校来说也会产生很大一笔费用,但就 Microsoft Excel而言
6、,在各个单位尤其学校使用很普遍,一般的教师都有计算机应用基础,不需要特别的培训就能很熟练的使用。2 学校收费系统系统分析2.1 需求分析需求分析是软件开发的第一步也是最重要的一步。需求分析阶段要通过描述系统的需求,通过定义系统中的关键领域的类来建立模型。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的渠道,应明确系统要服务于哪些用户,对这些用户提供哪些服务等。2.1.1 功能需求分析本系统是一个学校收费系统,我的目标是赋予其基本的收费及收费管理功能,使其能够满足大部分用户的需求。所以我力图分析理论中对用户有价值的功能。本系统除了有基本的收费功能外,还有数据的导入导出功能。用户可以
7、根据需要导出或者导入某段时间的收费数据,同时用户也可以对数据进行汇总或者备份。我将学校收费系统划分为管理员对功能的需求和操作员对功能的需求两个部分。他们的需求如下所列:? 操作员对功能的需求收费、基本信息(操作员关联、学生信息更改(添加、修改、删除)、收费标准(收费标准一览)、收费查询(按年级查询、按个人查询(按学号查询、按姓名查询)、欠款统计(按班级统计、按年级统计)、票据打印、数据导入导出等。? 管理员对功能的需求收费、基本信息(操作员关联、学生信息更改(添加、修改、删除)、操作员信息修改(添加、修改、删除、权限设置)、收费标准(收费标准一览、收费标准设置(添加收费项、修改收费项、删除收费
8、项、生成应收款)、补助标准设置(年级补助、贫困补助、个人奖励)、收费查询(按年级查询、按个人查询(按学号查询、按姓名查询)、欠款统计(按班级统计、按年级统计、生成欠款通知单)、票据打印、收费汇总、数据导入、数据导出、数据备份等。2.1.2 非功能性需求分析要求系统拥有清爽简洁的外观,采用正常平衡的页面布局,强调秩序, 能达到安定诚实、信赖的效果;要求界面符合大多用户的操作习惯,操作简单,易学;要求系统进行消息传递时顺利通畅;并且要求系统具有较高的安全性。与大多数收费系统一样,本系统也采用了数据库,但是本系统不仅仅采用了数据库,同时也采用了EXCEL 工作表, 二者相结合更能满足用户的需求。且用
9、户对数据的操作不会直接和工作表或数据库打交道,一切由窗体查询实现。使整个过程不会变得繁杂。2.2 系统介绍2.2.1 系统的结构精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 17 页系统的结构如下:图 2.2. 1管理员功能图 2.2. 2 操作员功能2.2.2 用户使用流程介绍? 管理员:登陆添加年级添加班级添加学生名单添加收费标准分发到操作员? 操作员:登陆真实姓名关联收费打印票据导出收费数据供管理员汇总2.2.3 主要模块介绍2.2.3.1 管理中心模块? 密码修改: 无论是管理员还是操作员,只能修改自己的密码,无权修改他人密码
10、。? 班级管理:该模块负责年级添加、修改、删除和班级添加、修改、删除。为了保精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 17 页证数据一致,班级中的年级不能以不存在的年级名称进行添加。? 用户管理:该模块是管理员权限模块,操作员无权操作。管理员则可以添加、修改、删除用户,改变用户权限,对于用户密码丢失的进行密码重置。? 学生管理:该模块的功能是添加、修改、删除学生信息。2.2.3.2 收费模块? 该模块负责学生的收费。2.2.3.3 收费查询模块? 该模块是对应收金额、已收金额、 补助金额、欠费金额的查询。查询可按年级查询,可按班级
11、查询,也可以按学号或者姓名单个查询。2.2.3.4 数据中心模块? 数据中心模块主要是对收费数据汇总、备份、导入、导出。2.2.4 系统的技术特点及运行环境? 采用 EXCEL VBA + ACCESS 2003 安全性高、可操作性好。? 免安装、体积小,便于携带。? 系统开发与运行环境开发环境:开发语言: Excel VBA 数据库: Microsoft Access 2003 运行环境:安装有 Microsoft Excel 2003 的 Windows 系列操作系统3 数据库设计3.1 ADO 概述ADO是 ActiveX Data Objects的缩写,又称为OLE自动化接口,中文名称
12、为动态数据对象,是目前Microsoft通用的数据访问技术。ADO是为 OLE DB设计的,而OLE DB则是由 ODBC 延伸出来的COM 组件,是一个便于应用的底层接口。使用ADO以后, OLE DB的使用变得更加简单。通过ADO可以访问多种类型的数据库数据,其中就包括Excel 文件。ADO具有以下特点:? 将原本复杂的数据库程序开发编程轻松容易的工作,除了具有传统数据库开发环境的优点外,还增加了对数据库修改和维护的功能。? 几乎兼容所有的数据库系统,并为他们都提供了相同的处理界面供程序设计人员使用。? 能跨多种不同的程序语言开发环境,并且提供了类似的设计方式,方便了用户的使用。? 几乎
13、可以在任何支持COM (Component Object Model, 组件对象模型)和OLE (对象链接和嵌入)的服务器端操作系统上使用。3.2 利用 ADO访问数据库每个数据库连接只能服务于一段VBA程序,如果有其他的程序或其他的人需要数据库的服务就需要建立新的数据库连接。因此,ADO提供了控制连接通断的方法,以此保证每个连接都可以尽快地利用数据库的服务。Excel 中若要访问数据库,必先建立与数据库的连接,为了创建数据库与Excel 的连接, 首先必须要引用ADO对象库。 几个需要引用的项目如下(版本随机器上安装的版本有所变化,如你机器里面是其他版本,那么就引用该版本):1) Micro
14、soft ADO ext2.8 for DDL and security 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 17 页2) Microsoft active data objects (multi-dimensional) 2.8 library 3) Microsoft active data objects recordset 2.8 library 4) Microsoft active data objects 2.8 library 5) Microsoft jet and replocation objects
15、2.8 library 引用方法:在Excel VBA编辑器窗口中,单击【工具】菜单中的【引用】命令,打开【引用 -VBAproject】对话框,勾选相应的项目即可,如图:图 3. 1添加引用ADO的责任被划分为3 个部分。以下分别说明。? 建立数据库连接(Connection )在 ADO 中表示数据库连接的对象叫做Connection 。该对象的Connectionstring属性就表示目标数据库的地址,以下代码将与某个Access 数据库建立连接。Dim Mycon as adodb.connection 申明connection对象类型的变量名为Mycon Set Mycon =new
16、 adodb.connection 生成一个新的connection对象,将存储到Mycon变量中Dim constr as string Constr= ”provider=microsoft.jet.oledb.4.0;data source=”+ “thisworkbook.path&”csh 收费系统 .mdb”指定数据库位置Mycon.connectionstring=constr Mycon.open连接Mycon.close 断开? 执行 SQL命令( Command )数据库连接建立之后,需要向数据库传递相应的命令,以实现操作数据库的目的。由于一个连接可能会涉及到不止一个SQL
17、命令,因此SQL命令由独立的Command对象来表示。在建立Command 对象后,就可以发出命令操作数据库。一般情况下,Command 对象可以在数据源中添加、修改、删除和更新数据、或在表中查询数据。? 处理命令执行的结果(Recordset )对于查询的SQL命令,执行的结果保存到Recordset对象中。通过使用Recoedset对象,可以浏览记录、修改记录、添加记录、或者删除记录等等。3.3 系统数据库设计3.3.1 系统 E-R 图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 17 页图 3. 2 系统 E-R 图3.3.2
18、 数据表设计根据系统功能设计的要求以及功能模块的划分,对于本系统的数据,可以列出以下数据项和数据结构:? 年级表:该表用于存储年级信息,表的结构如下:表 3.1 年级表字段名称数据类型字段长度说明年级名称文本 40 主键? 班级表:该表用于存储班级信息,表的结构如下:表 3.2 班级表字段名称数据类型字段长度说明年级名称文本 40 年级名称来源于年级表班级名称文本 40 无? 收费标准表:该表用于存储收费项目和金额,表的结构如下:表 3.3 收费标准表字段名称数据类型字段长度说明年级名称文本 40 年级名称来源于年级表收费项目文本 40 无收费金额货币无学期 文本 40 无精选学习资料 - -
19、 - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 17 页? 学生表:该表用于存储学生与收费有关的基本信息,表的结构如下:表 3.4 学生表字段名称数据类型字段长度说明学号 文本 40 主键姓名 文本 40 学生姓名年级 文本 40 学生所属年级班级 文本 40 学生所属班级? 学生信息表:该表用于存储学生所有的收费信息,该表结构如下:表 3.5 学生信息表字段名称数据类型字段长度说明学号 文本 40 学号来源于学生表姓名 文本 40 姓名来源于学生表年级 文本 40 年级来源于学生表班级 文本 40 班级来源于学生表学期 文本 40 学期来源于收费标准表补
20、助 货币无应收 货币无已收 货币无欠款 货币无收款人文本 40 无收款日期时间 / 日期记录系统当前时间备注 文本 40 记录补助原因等4 系统实现设计是对系统的详细描述,我们需要在这里提供中小学收费系统的详细解决方案和具体解决过程。在这一部分,我们需要对系统作进一步的描述。针对本系统而言,所有的代码和界面都在Excel 2003中的 VBE中实现。下面将列出主要的界面及关键性的、难以实现的代码。4.1 Excel VBA概述VBA是 Visual Basic for Application 的简写, 是一种由微软开发的自动化语言。这种自动化语言主要用于控制Office应用程序, 包括 Out
21、look 、 Word、PowerPoint等。由于 VBA可以应用于众多的Office应用程序中,为了区分与不同的应用程序结合的 VBA ,经常将应用程序的名字加在VBA前。故产生了Excel VBA 之说。Excel VBA 是寄生在Excel 之上的,也就是说,如果机器上没有安装Excel ,则无法运行 Excel VBA ,同时这也是VB与 VBA的区别之一。使用 Excel VBA 可以完成以下工作:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 17 页? 制作报表? 填写报表? 管理工作表与工作簿? 修饰报表的外观? 打印
22、、发送报表? 统计报表中的数据? 用报表中的数据生成图形实际上, Excel VBA 可以完成所有Excel 的功能。如果不计算机工作量的话,Excel VBA能完成的功能任何一门计算机编程语言都有完成以上功能的可能,但是使用Excel VBA来实现这些功能与其他高级编程语言相比有如下优点:? 可以利用Excel 已经实现的绝大部分功能,节约开发时间。? 可以利用Excel 已经实现的大量函数。? 可以利用Excel 熟悉的界面。? 可以实现需求,进行几乎无限的扩展。4.2 界面的设计及代码实现4.2.1 初始界面本系统所使用的VBA必须依赖Excel ,当运行本系统的时候会自动打开一个Exc
23、el工作簿, 这与我们平时见到的收费系统有所不同,为了消除视觉上的差异,必须在运行本系统的时候自动隐藏工作簿而只显示窗体界面。对于 VBA而言, 这一点可以轻松实现,步骤如下:第一步:打开Excel VBE 界面第二步:双击“工程-VBAproject下面的 Thisworkbook 第三步:输入如下代码:Private Sub workbook_open()工作簿打开时候执行事件Dim ws As Worksheet For Each ws In Worksheets ws.Visible = True Next Application.Visible = False 设置工作簿的属性为不显
24、示login.Show 显示系统登陆界面End Sub 4.2.2 系统登陆界面本系统中, 管理员和操作员登陆共用一个入口,其好处在于我们登陆的时候不必选择管理员或者是操作员,我们只需输入用户名和密码,系统会自动识别并给出相应权限。相对于常见的系统,要方便得多。登陆界面如下:图 4. 1 登陆界面由于收费系统中操作用户不会太多,故本系统中采用的是把操作员和管理员的信息装在工作表“用户表”中,而不是采用数据库的形式,这样的好处是整个登陆过程不会调用数据库。并且利用工作表来管理同样能够实现数据库的功能和安全性。其代码如下:精选学习资料 - - - - - - - - - 名师归纳总结 - - -
25、- - - -第 8 页,共 17 页Private Sub cmd1_Click()登陆按纽事件Dim xRng As Range Set xRng = Sheets(用户表 ).Range(A3:A53) 再判断用户名是否不存在If Application.WorksheetFunction.CountIf(xRng, txt1) = 0 Then MsgBox 无此用户名!, vbInformation, 系统提示 Exit Sub End If With Sheets(用户表 ) 最后判断用户名与密码是否一致frow = .Range(A3:A53).Find(what:=txt1).
26、Row If .Cells(frow, 2) CStr(txt2.Text) Then MsgBox ( 密码错误 ) txt1.Text = txt2.Text = Exit Sub End If Sheets( 用户表 ).Cells(1, 1) = login.txt1.Value Unload Me If .Cells(frow, 3) = 2 Then 验证用户,是管理员则显示用户表Sheets( 用户表 ).Visible = -1 - x1sheetveryhidden 收费系统 .Show Else 收费系统 .Show End If End With End Sub Priv
27、ate Sub login_Initialize()初始化窗体txt1.RowSource = 用户名 txt1.SetFocus End Sub Private Sub cmd2_Click()关闭按纽Application.Quit End Sub 在工作表“用户表“中使用4 个字段:用户名,密码,权限,真实姓名。其中权限用于识别登陆人员是管理员还是操作员,并据此给出相应的权限,而真实姓名则用于收费中的实名制,有利于责任划分。对于“ Sheets( 用户表).Cells(1, 1) = login.txt1.Value“这句代码,可能很多人不解, 其实很简单, 它把当前登陆的用户名显示到单
28、元格中的作用是:将登陆框中用户名写入sheets( “用户表” ) 的A1单元格中。4.2.3 系统主界面当用户登陆成功后将显示主界面。主界面上主要是功能菜单,实现的是链接的功能,主要采用的是Click事件,代码不再赘述,其界面如下:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 17 页图 4. 2 收费系统主界面4.2.4 班级管理界面班级管理实现年级添加、修改、删除和班级添加、修改、删除的功能。为减少用户操作出错率, 不允许用户直接添加班级,而是先添加年级之后,在添加班级的时候直接选择班级所在的年级。其界面如下:图 4. 3 班级
29、管理界面由于设计各个功能的时候采用的是一个窗体实现一个功能,所以设计到数据库的多次连接,各功能模块代码如下:年级添加主要代码Dim sql As String mydata = ThisWorkbook.Path & CSH 收费系统 .mdb 指定数据库位置mytable = 年级表 指定数据表Set cnn = New ADODB.Connection 生成Connection对象,将其放入到变量cnn中With cnn .Provider = microsoft.jet.oledb.4.0 .Open mydata End With sql = select * from & mytab
30、le & where 年级名称 = & TextBox1.Value & Set rs = New ADODB.Recordset rs.Open sql, cnn, adOpenKeyset, adLockOptimistic If rs.RecordCount 0 Then MsgBox 你所添加的年级已经存在, 不能重复添加! Else rs.AddNew rs.Fields(年级名称 ) = TextBox1.Value rs.Update MsgBox 年级添加成功 End If rs.Close cnn.Close Set rs = Nothing Set cnn = Nothin
31、g 4.2.5 收费界面收费界面实现的学生收费功能,界面可以根据学生的学号或者姓名(如有重名则需要其提供学号)以及学期信息自动显示学生所在年级、班级、应交款。操作员点击确定时学生的收费信息将保存到数据表“学生信息表”中。同时用户可以通过明细查看学生交费详细信息(应交、已交、补助、欠费等等)。其界面如下:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 17 页图 4. 4收费界面图 4. 5 收费明细界面收费界面主要代码如下Dim sql As String mydata = ThisWorkbook.Path & CSH 收费系统 .
32、mdb mytable = 学生信息表 Set cnn = New ADODB.Connection With cnn .Provider = microsoft.jet.oledb.4.0 .Open mydata End With sql = select * from & mytable & where 学号 = & TextBox1.Value & & and 学期 = & ComboBox1.Value & Set rs = New ADODB.Recordset rs.Open sql, cnn, adOpenKeyset, adLockOptimistic Set rs = Ne
33、w ADODB.Recordset rs.Open mytable, cnn, adOpenKeyset, adLockOptimistic rs.AddNew rs.Fields(学号 ) = TextBox1.Value rs.Fields(姓名 ) = TextBox2.Value rs.Fields(年级 ) = TextBox3.Value rs.Fields(班级 ) = TextBox4.Value rs.Fields(学期 ) = ComboBox1.Value rs.Fields(应收 ) = TextBox5.Value rs.Fields(已收 ) = TextBox7
34、rs.Fields(欠款 ) = rs.Fields(应收 ) - rs.Fields(已收 ) - rs.Fields(补助 ) rs.Fields(收款人 ) = 收费系统 .Label31.Caption rs.Fields(收款日期 ) = Date rs.Fields(备注 ) = 无 rs.Update Label13.Caption = 收费成功 ! 4.2.6 数据导出界面该界面的主要功能是将数据从数据库中导出到Excel 文件中,以便于数据备份和汇总。用户可以选择导出数据的起始日期和终止日期进行有选择的数据导出。并将导出数据自动保存到“数据导出.xls “中。其界面如下图:精
35、选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 17 页图 4. 6 数据导出界面数据导出的主要代码:Dim wb As Workbook Dim mycol As Integer Set wb = Workbooks.Add wb.SaveAs Filename:=ThisWorkbook.Path & 数据导出 .xls保存路径和名称Dim mydata As String, sql As String Dim cnn As ADODB.Connection Dim rs As Recordset Dim i As Integer
36、ActiveSheet.Cells.Clear mydata = ThisWorkbook.Path & CSH 收费系统 .mdb Set cnn = New ADODB.Connection With cnn .Provider = microsoft.jet.oledb.4.0 .Open mydata End With sql = SELECT * FROM 学生信息表 WHERE 收款日期 =# & DTPicker1.Value & # & and 收款日期 =# & DTPicker2.Value & # Set rs = New ADODB.Recordset rs.Open
37、sql, cnn, adOpenKeyset, adLockOptimistic For mycol = 1 To rs.Fields.Count Cells(1, mycol) = rs.Fields(mycol - 1).Name Next mycol Range(a2).CopyFromRecordset rs ActiveSheet.Columns.AutoFit rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing wb.Save ActiveWorkbook.Close MsgBox 数据导出成功,并保存在同文件夹下文件名为数据
38、导出的工作簿中!, vbInformation, 提示 4.2.7 数据导入界面该界面主要实现的功能是将“.xls ”文件类型的数据导入到数据表中,在数据的恢复中将会用到。其界面如下:图 4. 7 数据导入界面当点击数据导入按纽将出现对话框,用户可以选择导入数据源的路径。其主要代码精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 17 页如下:Dim myfilename As String myfilename = Application.GetOpenFilename(excel 工作簿 (*.xls),*.xls) If myfi
39、lename False Then Workbooks.Open Filename:=myfilename Dim mydata As String, mytable As String, sql As String Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset Dim rsx As ADODB.Recordset mydata = ThisWorkbook.Path & CSH 收费系统 .mdb mytable = 学生信息表 n = Sheets(sheet1).Range(a65536).End(xlUp).Row Set
40、cnn = New ADODB.Connection With cnn .Provider = microsoft.jet.oledb.4.0 .Open mydata End With mysql = select * from & mytable Set rs = New ADODB.Recordset rs.Open mysql, cnn, adOpenKeyset, adLockOptimistic For i = 2 To n sql = select * from & mytable & where 学号 = & Cells(i, 1).Value & Set rsx = New
41、ADODB.Recordset rsx.Open sql, cnn, adOpenKeyset, adLockOptimistic rsx.AddNew For j = 1 To rsx.Fields.Count rsx.Fields(Cells(1, j).Value) = Cells(i, j).Value Next j rsx.Update Next i MsgBox 数据导入完毕!, vbInformation + vbOKOnly rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing Set rsx = Nothing Activ
42、eWorkbook.Close Else MsgBox 没有选择工作簿 End If 4.2.8 数据汇总界面该界面实现的功能是将多个工作簿进行汇总。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 17 页图 4. 8 数据汇总界面当点击数据汇总按纽,将弹出对话框, 用户可以自行输入路径,也可以采用默认路径,由于本功能所采用的是汇总文件夹下所有“.xls ”文件,所以建议用户将要汇总的文件统一放到本系统中“数据汇总”文件夹内,同时在数据汇总的时候选择默认路径。数据汇总的主要代码如下:Dim mypath As String, defa
43、ultpath As String, mysql As String Dim i As Integer, j As Integer, n As Integer, p As Integer Dim n1 As Integer, n2 As Integer, n3 As Integer, n4 As Integer Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset 删除当前工作簿的总表工作表中所有数据Worksheets(总表 ).Cells.Clear 从指定文件夹中寻找要汇总工作簿文件defaultpath = ThisWorkbook
44、.Path & 数据汇总 mypath = InputBox(请输入要查询工作簿的文件夹完整目录及名字: & cbcrlf & vbCrLf & 如果为空 ,则默认为 & vbCrLf & defaultpath, 输入路径 , defaultpath) If mypath = Then mypath = defaultpath Application.StatusBar = 正在查找汇总工作簿Set fs = Application.FileSearch With fs .LookIn = mypath .FileType = msoFileTypeExcelWorkbooks If .Ex
45、ecute(SortBy:=msoSortByFileName, sortorder:=msoSortOrderAscending) 0 Then p = .FoundFiles.Count MsgBox 在此文件夹中共有 & p & 个工作表的数据文件需要汇总!, vbInformation, 搜索到汇总文件 ReDim myfile(p) As String For i = 1 To p myfile(i) = .FoundFiles(i) Next i Else MsgBox 没有搜索到要汇总的文件, vbInformation, 没有汇总文件 Application.StatusBar
46、 = False Exit Sub End If End With 建立与每个工作簿的连接, 查询记录并且复制到工作表总表中For i = 1 To p Set cnn = New ADODB.Connection 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 17 页With cnn .Provider = microsoft.jet.oledb.4.0 .ConnectionString = extended properties=excel 8.0 ; & data source= & myfile(i) .Open End
47、With 查询每个工作簿的全部记录数据Set rs = New ADODB.Recordset mysql = select * from sheet1$ rs.Open mysql, cnn, adOpenKeyset, adLockOptimistic If i = 1 Then For j = 0 To rs.Fields.Count - 1 Worksheets(总表 ).Cells(1, j + 1) = rs.Fields(j).Name Next j End If n = Worksheets(总表 ).Range(a65536).End(xlUp).Row If rs.Reco
48、rdCount 0 Then Worksheets(总表 ).Range(a & n + 1).CopyFromRecordset rs End If Next i 5 软件测试软件测试是为了发现程序中的错误而执行程序的过程。其目标是不断暴露程序中的错误,并且加以改正,使系统不断完善。5.1 模块测试在模块测试时,首先应该对模块接口的数据流进行测试,如果数据不能正确进出,所有其他测试都是不切实际的。在对模块接口进行测试时主要检查下述几方面:参数的数目、 次序、属性或单位系统与变元是否一致;是否修改了只作输入用的变元;全局变量的定义和用法在各个模块中是否一致。表 5. 1用户登陆测试模块一测试用
49、例期望结果实际结果用户登陆用户名: chensonghuan 密码: 123456 登陆成功登陆成功用户名: chensonghuan 密码: 12345 密码出错密码出错用户名:密码: 123456 用户名为空用户名为空用户名: chensong 密码: 123456 用户名不存在系统报错用户名: dsads密码: 123456 用户名不存在系统报错表 5. 2班级管理模块测试模块二测试用例期望结果实际结果精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 17 页班级管理添加小 Listbox1显示小无添加小 1 班 Listbox2
50、显示小 2 班 无表 5. 3收费模块测试模块三测试用例期望结果实际结果收费模块学号: 00001 显示学生所有基本信息显示学生所有基本信息学号: 00006 学号有误学号有误姓名:张小丽显示学生所有基本信息显示学生所有基本信息姓名:王八学生姓名有误学生姓名有误姓名:张雨(设置两个相同名字)显示学生所有基本信息只显示第一个张雨的基本信息表 5. 4数据导出测试模块四测试用例期望结果实际结果数据导出空数据创建一个空工作簿创建了空工作簿输入两行数据创建工作簿并且包含输入的两行数据如预期结果5.2 系统测试开发此系统是因其具有很强的实用价值,基于这个目的, 将整个系统组织起来进行了集成测试。 在测试
51、中使用了大量不规则数据,基本都能达到期望的结果,基本上能提供需求分析中指定的功能。5.3 问题及解决方法? 用户登陆:第一次测试发现当用户名输入有误时系统报错,通过检查代码发现,程序报错是因为没有设置用户名不存在情况下的出错处理通路,后在程序中加入以下代码后程序测试正常。代码如下:Dim xRng As Range Set xRng = Sheets(用户表 ).Range(A3:A53) 判断用户名是否不存在If Application.WorksheetFunction.CountIf(xRng, txt1) = 0 Then MsgBox 无此用户名!, vbInformation, 系
52、统提示 Exit Sub End If ? 班级管理: 测试发现当年级或者班级添加后并没有立即显示出来,但是数据库中数据已经添加成功,只是当前窗体中没有实时显示添加结果,后通过代码将窗体设置为数据改变后自动关闭在打开以实现数据刷新的目的,经测试,显示正常。? 收费模块: 当姓名出现重名时,如果收费时输入的是学生姓名则只显示数据表中排再最前面那个学生的姓名。改进方法: If rs.RecordCount 1 Then MsgBox 存在多个相同姓名, 请输入学号 ! End if 后经测试:达到期望结果。6 结束语及展望经过几个月的调研、分析、开发,基于Excel VBA的中小学收费系统的设计和
53、实现精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 17 页基本完成。 本系统的出发点是实用、实惠、简单。每一个功能都是从调研中得出的。不仅为用户提供了学校收费的基本功能,同时在界面处理的时候也尽量满足用户的操作习惯, 保持与其他系统在操作上的相似性。同时从数据安全性出发,提供了操作权限限制、数据备份和数据导入导出功能。由于时间仓促和本人的水平有限,本系统还存在很多不足之处,我会根据发现的问题不断完善,以求在功能、性能和安全性上满足用户需求。毕业设计使我学到了很多东西。以前, 就想着用一款大家都熟悉的软件运用其中大家都不常用的功能去完
54、成大家都能完成的任务,终于实现了。 虽然第一次做, 品质上存在很多问题,但是让我学会了很多,懂得了很多。更重要的是,在这个过程中,老师给予了很多帮助和鼓励,让我坚持做了下来。感谢谭老师! 这也许是大学生涯中最后一次的锻炼,但同时是我大学四年以来最重要的一堂课。我会不断学习,优化知识结构,做到学以致用。在今后的使用中,我会不断的改进系统的性能,增加系统的功能,尽可能的满足大多数用户的要求,使该收费系统更具有使用价值。7 感谢时间飞逝, 转眼间, 大学生涯即将结束,在这里, 我衷心感谢所有给予我教育的老师,尤其是指导老师谭老师。谭老师十分繁忙,但是总是在百忙之中抽出时间给予我们耐心指导。 特别是在论文设计、论文撰写的过程中,导师对科学研究严谨求实的治学态度, 勤奋探索的精神以及崇高的品德,将使我终身受益,导师悉心的指导和鞭策是我能够顺利完成论文的坚实基础。在此,我表示衷心的感谢。大学四年, 老师们的敬业精神深深的感染了我。老师们孜孜不倦的教诲深深的鞭笞着我不断向前、不断提高、不断进步。老师们严谨的治学态度更是令我受益匪浅。在毕业设计阶段, 同学们也给予了很多帮助。在这里, 我再次感谢老师们,同学们。感谢各位专家和评委在百忙中审阅我的论文。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 17 页