首页 > 精品范文库 > 12号文库
学生公寓管理系统
编辑:星海浩瀚 识别码:21-313774 12号文库 发布时间: 2023-04-05 01:37:47 来源:网络

第一篇:学生公寓管理系统

1.需求分析

需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。

学生公寓管理系统

学校有若干公寓,每栋5层,每层18个房间,每个房间4个学生,需要一个管理系统实现管理。

(1)寝室分配:根据系别、年纪、班级分配寝室,查询寝室状态和入住信息(2)学生管理:实现入住学生信息的维护和查询功能(3)信息查询:按公寓楼号、学生姓名等查询住宿信息(4)出入登记:实现对外来人员进行登记功能

1.1 数据流图(DFD)

数据流图用于表达和描述系统的数据流向和对数据的处理功能。

画数据流图

学生入住信息学生入住入住信息信息登记住宿信息寝室信息学生学生信息公寓管理访客信息访客

图1-1公寓管理系统1层数据流图

公寓管理分配信息学生入住信息住宿信息访客信息寝室分配管理学生管理寝室信息查询管理分配信息学生入住信息住宿信息寝室分配信息学生入住信息住宿信息图1-2公寓管理系统1层数据流图

学生公寓管理入住信息入住信息入住信息汇入住查询条件总报表学生入住入住信息查询统计入住信息入住信息入住信息图1-3学生管理2层数据流图

访客管理访客信息访客信息 访客公寓管理访客信息访客信息统计登记访客信息访客信息统计访客信息访客信息 图1-4访客管理2层数据流图

1.2 数据字典(DD)

数据字典是数据库中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要结果。数据文件:学生信息

信息组成:系别、年级、班级、姓名

数 据 项:系别 数据类型:字符型 数据长度:2

数 据 项:年级 数据类型:字符型 数据长度:2

数据组成:班级 数据类型:字符型 数据长度:2 数 据 项:姓名 数据类型:可变字符类型 数据长度:20

数据文件:信息查询

信息组成:公寓楼号、学生姓名

数据组成:公寓楼号 数据类型:整型 数据长度:1

数 据 项:学生姓名 数据类型:可变字符类型 数据长度:20

数据文件:访客信息

信息组成:访客姓名、学生姓名、日期

数 据 项:访客姓名 数据类型:可变字符类型 数据长度:20

数 据 项:学生姓名 数据类型:可变字符类型 数据长度:20

数 据 项:日期 数据类型:日期类型 数据长度:10

2.概念结构设计

概念结构设计阶段的任务就是把这些实际需求抽象成计算机能够识别的信息世界的结构,这种将需求分析阶段得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。

E-R图(在Powerdesigner中创建概念模型,粘贴图)

图2-1 E-R图

3.逻辑结构设计

关系模式((在Powerdesigner中由概念模型转化为物理数据模型,粘图))

图3-1物理数据模型图

4.建表SQL语句

由物理数据模型生成SQL Server 2008数据库的建表语句。

/*================*/ /* DBMS name: Microsoft SQL Server 2008 */ /* Created on: 2013-12-6 22:36:42 */ /*================*/

if exists(select 1 from sysindexes where id = object_id('学生')and name = '入住_FK' and indid > 0 and indid < 255)drop index 学生.入住_FK go

if exists(select 1 from sysobjects where id = object_id('学生')and type = 'U')drop table 学生 go

if exists(select 1 from sysobjects where id = object_id('宿舍')and type = 'U')drop table 宿舍 go

if exists(select 1 from sysindexes where id = object_id('访客')and name = '探访_FK' and indid > 0 and indid < 255)drop index 访客.探访_FK go

if exists(select 1 from sysobjects where id = object_id('访客')and type = 'U')drop table 访客 go

/*================*/ /* Table: 学生 */ /*================*/ create table 学生(姓名 varchar(20)not null, 公寓楼号 int null, 学生姓名 varchar(20)null, 系别 char(2)not null, 班级 char(2)not null, 年级 char(2)not null, constraint PK_学生 primary key nonclustered(姓名))go

/*================*/ /* Index: 入住_FK */ /*================*/ create index 入住_FK on 学生(公寓楼号 ASC, 学生姓名 ASC)go

/*================*/ /* Table: 宿舍 */ /*================*/ create table 宿舍(学生姓名 varchar(20)not null, 公寓楼号 int not null, constraint PK_宿舍 primary key nonclustered(公寓楼号, 学生姓名))go

/*================*/ /* Table: 访客 */ /*================*/ create table 访客(访客姓名 varchar(20)not null, 日期 datetime not null, 姓名 varchar(20)null, constraint PK_访客 primary key nonclustered(访客姓名, 日期))go

/*================*/ /* Index: 探访_FK */ /*================*/ create index 探访_FK on 访客(姓名 ASC)go

第二篇:学生公寓管理系统-招标书

1.5 学生公寓管理系统

采用顶层设计、分级管理的设计思路,将宿舍资源管理、学生入住管理、宿舍日常管理、学生退宿管理、宿舍检查管理、校外人员入住宿舍管理等模块集成,实现学生宿舍管理的数据信息化、流程信息化、决策信息化,最终达到数据共享、管理自动化、管理智能化的目的。

目前我校宿舍管理方式如下:

 迎新阶段:

①.本科生:后勤分配新生房源给各学院,各学院在新生到校前安排新生到具体房间和床位,学生登录迎新系统进行查询。

②.硕士、博士生:新生到校报到时可人工分配床位,也可床位自选。 在校阶段:

在校生调宿、退宿、申请入住时提出申请意向,经过辅导员和学院审批后,由学生公寓审批通过,至财务处核算费用后,学生持材料(如:入住通知单)到公寓中心分配房间后在相关公寓楼栋办理具体手续。

 离校阶段:

学生在结清相关费用后,在公寓服务中心办理退宿手续,批量删除毕业学生住宿信息。

 在退宿、入住、调寝环节,学生信息和门禁系统实时对接,确保学生

入住情况准确。

系统包括6大模块,具体功能说明如下:

1)宿舍基本数据管理

 学生信息管理

各级管理老师可以维护和查询自己管辖范围内的学生信息;系统提供数据接口,可进行批量数据导入,或将查询和统计的结果数据导出成EXCEL表格。系

统实现数据集成后,学生的部分信息可以通过数据集成平台从教务、学工等系统共享而来;宿舍管理系统只对宿舍业务相关的学生信息内容进行维护。 宿舍设备资源管理

学校管理人员按管理权限可以对学校的宿舍区、宿舍楼、宿舍等基本信息进行管理,如公共资源配置数量(如热水器、洗衣机、开水炉、彩电等)、住宿费标准、住宿学生类别、备注等信息。

 住宿变更流程管理:

宿舍流程管理实现学校管理人员对学生入住、退宿、宿舍调整的申请与审核流程的设置与管理。

2)学生住宿管理

人工分配宿舍:对新进学生分配宿舍,对住宿期间临时调换宿舍、中途入住生进行调整安排。

自动分配宿舍:根据学院男女生入住人数在指定的楼栋、楼层、房间中自动分配宿舍床位。

学生自选床位:特定的学生在指定床位范围内通过网络自选床位。公寓空调安装后,学生出现对空调需求差异,存在挑选有无空调宿舍的情况,学生可根据不同的需求选择宿舍。

 住宿管理:

学校相关管理人员对学生进行安排入住,住宿日常管理类型可包括:

中途变更住宿管理:入住登记、退宿登记、延期毕业登记等日常处理项目。批量管理:学生住宿信息的批量导入、变更、删除等。可采用人工手动分配、电脑自动分配、自选床位分配的方式进行登记。

 非在校住宿学生管理

学校相关管理老师直接维护学生校外住宿学生的基本信息,进行备案,供今后查询使用,包括学号姓别、院系、年级、班级、校外住宿地址、联系电话、联系人、申请外住日期、家庭详细信息等。

 宿舍业务申请与受理

学生可以在线进行入住、退宿及宿舍调整的相关业务,填写详细的申请理由,并送达管理人员进行审核。各级管理老师对学生的入住、退宿、调整申请进行审

核,并填写审批意见。

3)查询统计

住宿信息管理功能主要用于住宿学生的各类信息查询和统计,可以快速直接对住宿人员、宿舍房源)、公共设施设备、宿舍基础数据进行查询,满足校内各部门对宿舍资源使用情况的实时查询统计。查询分为总体查询、分类查询、个别查询、组合查询。总体查询可直接查询校内/区域内总楼栋数、总床位数、总空床位数、总住宿人数等总体数据。分类查询可以根据校区、楼栋号、楼层数、房间号进行统计查询;也可以根据学院、年级、学生属性进行统计查询;或者根据缴费情况、住宿状况进行统计查询。个别查询是根据学生个人信息进行详细查询,可以查到学生的住宿情况、缴费情况等。组合查询是根据所需要的数据进行筛选综合的一种查询方式。

住宿管理系统要有比对功能,住宿名单要与财务处收费名单进行比对,可以实时查询未交费学生情况。

系统提供全校学生住宿情况查询统计报表、学生宿舍调动查询统计报表。通过系统学校的相关管理人员可以查询到各宿舍区房间总数、床位总数、已住总数、空余床位数等详细信息。系统提供数据接口,可将查询和统计的结果数据导出成EXCEL、WORD、PDF文件。

4)宿舍日常管理

 楼栋管理员设置

学校相关管理老师设置楼栋管理人员清单以及其所管辖的楼栋。设置完成后,楼栋管理员可以维护本人管理范围内的楼栋的学生住宿情况、卫生检查情况等。 卫生检查管理

根据学校对宿舍卫生管理要求,学校相关管理老师或者楼栋管理员可对宿舍卫生检查情况进行记录和管理,具体可包括宿舍的房间号、检查分数、检查日期、操作日期和操作人等。系统支持定期检查和抽查等多种检查类型。

 违章违纪管理

根据学校宿舍管理规定,学校相关管理老师或者楼栋管理员可对住宿人员的违章违纪情况进行登记,供相关管理人员查询使用。系统可自定义多种违纪类型。其他数据的统计管理:对夜不归宿、迟归等学生情况的统计上传,让学院、辅导

员及时了解学生状况,保障住宿生的人身安全,并为学生年终评优评奖提供依据。

5)公寓公共设施设备管理功能

公寓服务中心可通过该功能对公寓楼内公共设施设备数量、使用年限、维修更换情况进行有效地掌控。

将每栋公寓楼内的公用电器和基础设施,如热水器、开水炉、洗衣机、吸顶扇、空调、排风扇、家具、消防设施设备等公共设施数据编入系统。根据中心的工作节点对各类设施设备进行检查、维修、更换,并及时更新系统数据。

6)系统管理

 待办事宜:可根据系统中业务开展情况,自动的生成事务性的提醒。可针对

不同的用户提供不同的提醒。如:学生申请入住后,辅导员可收到待审的学生人数提醒。

 系统设置:学校相关管理老师设置当前学年、当前学期等系统整体设置。 日志管理:系统自行记录每个用户的访问时间IP地址等信息;每个功能的访问时间IP地址等信息;记录系统的访问日志、数据变化日志以及发生问题日志。

 权限管理:可以灵活配置每个用户所属的用户组,以及用户组的的权限,保

证用户在系统中的一切操作在授权范围内进行,当用户发生岗位调整或者岗位职责发生变化时系统可以灵活调整。

本系统与学校其他部门的信息互通

宿舍管理系统作为学校信息化建设中重要一环,不仅承载了和学生住宿相关的业务功能,在其他业务系统或科室信息化建设中也起到了不可替代的作用从迎新系统取得新生数据,宿管系统将新生宿舍分配结果发给迎新系统,让学生未到校前在移动端或PC端即可查询自己的住宿位置;宿管系统将宿舍分配结果和学生日常表现放到公共数据交换平台供学工系统使用,用于学生日常管理;学工处、研工部将学生基本信息及变更信息发送至公共数据交换平台供宿舍管理信息系统使用,实现信息互通;宿舍管理系统比对财务系统的学生住宿费缴纳情况,为管理部门办理学生入住调换退宿提供依据;宿舍管理系统通过集成门禁系统和一卡通系统,学生入住或退宿后系统学

生门卡可自动启用或关闭对用楼栋的门禁。门禁出入记录统计便于学工处或后勤管理部门实时掌握学生动向,提前预警。宿舍管理系统可与学校微信APP接口向学生推送相关信息,比如卫生检查通知、个人宿舍缴费情况等等

第三篇:学生公寓管理系统立项报告

学生公寓管理系统系统开发立项报告

一.现行系统概述

郑州航院信息统计职业学院学生公寓管理对学生的信息登记、物品登记、来访者信息登记等相关操作都采用手工操作,这样的操作方式不仅效率低而且易出错,需要的管理人员很多,使学校耗费大量的人力、物力、财力。对于学校公寓宣布的信息学生不能及时地得到,造成公寓跟学生不能很好的沟通,学生的很多意见和建议同样也不能及时的反馈到学校公寓管理员手中。

薄弱环节:我校学生公寓现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力、物力、财力;信息共享慢,学生查询信息慢且不便于及时的更改信息。未能利用先进的计算机和网络技术处理学生公寓的日常工作,公寓管理员的工作负担较重。

二.新系统概述 系统的意义:由于公寓人工管理效率低下,工作繁杂,所以需要建立这样一个“学生公寓管理系统”来提高效率,便于管理。

系统的目标:

(1)录入公寓各学生的基本情况。

(2)全面查询学生的基本情况。

(3)对学生离校进行处理。

(4)每学期对学生住宿进行注册。

(5)对来访人员进行出入管理。

(6)对学生的财务进行登记管理。

(7)对各项情况进行修改,删除,更新。

(8)友好的操作界面, 以及简单快速的操作.(9)多种查询方式。

用户需求:可实现系统管理人员的增删,及学生情况的登记、公寓床位的分配、公寓日常管理、水电费统计、学生住宿情况的登记和非住宿人员的进出登记、物品进出登记等。

运行环境:操作系统 Windows 2000 Server

数据库:SQL Server 2000

三.项目经费预算及来源

初步估算约人民币5万元,其中包括:服务器、数据库软件、技术资料、印刷资料、开发工作人员及奖金等费用。

经费来源:学院提供5万元人民币开发经费。

四.系统开发进度和计划完成期限

本系统计划用九个周时间开发完成,具体为:

系统规划1个周系统分析1个周系统设计2个周系统调试、测试四个周系统试运行1个周五.系统的验收标准和方法

在系统运行一个周后,组织系统验收,系统的验收标准严格按照系统方案,以及系统需求说明书的要求进行。验收的内容包括应用系统开发的程序、阶段性文档等所有项目成果。

本系统验收主要通过检测系统功能实现情况、及满足用户需求情况来进行考察分析,其主要方法有第三方评测、专家组验收测试、现场技术考察与分析、文档资料核查与分析。

第四篇:开题报告 学生公寓管理系统

本科生毕业论文(设计)开题报告书

题目高校学生公寓管理系统

学生姓名 _李双

学号200817020120

专业班级信管 08101班

指导老师黄铁

2011年 11月

第五篇:VB+Access学生公寓管理系统-论文

VB+Access学生公寓管理系统-论文

中文摘要

随着电脑的普及与使用,现在的管理也提升了一个档次,渐渐实现了无纸化办公,即从原来的人工记录管理模式转变为电脑一体化管理。高校是科研的阵地,后勤的公寓管理也应该一改传统的人工管理,更加信息化,时代化,节省人力物力,提高效率。基于这一点,开发此学生公寓管理软件。学生公寓管理软件,是以高校的管理方式为实例而设计的一种实用型管理系统。本系统最大的特点是通用性、简单操作性,适用于同行业以及一些同类型的企业管理。随着学校寄宿人员的增多,公寓管理人员的负担越来越重,为了让所有公寓管理人员能从繁重的工作中解脱出来,实现无纸化办公;使工作更有条理,更方便,更有效率而开发出这套公寓管理软件。软件从对学生的分房开始到最后的公寓管理全部电脑化。它主要包括:公寓、寝室的配置、住宿人员登记、卫生检查、公寓资产、学生违纪、值班老师记录以及对学生住宿情况查询,可以更快地了解到每个学生的住宿情况,使公寓的管理效率更高,做的更好!

关键字:配置、登记、检查 Abstract

With the popularization and use of the computer, present management has been promoted much, more and more jobs have been done by computer.It namely changes the original artificial record management mode into computer''s integrating and managing.The university is the position of scientific research, the apartment management should change traditional managing artificially too, for the efficiency.So , develop the management software of student''s apartment.Student Apartment Management System is a utility management system based on the managing mode of many universities and colleges.Universal and easy-operating are the greatest features of the system ,which is also applicable for enterprises of the same type.Apartment keepers bear a increasingly heavy burden because of the gradually added number of roomers.In order to free apartment keepers from the heave work,and make the work more convienent and efficient.The apartment management system is developed.The system computerized all the processes concerning the apartment management which include apartment,dormitory distribution,roomer registration,santitation examination,and the query for apartment property,students'' violation of discipline,teachers'' records and rooming situation.It makes the apartment management more efficient and much better.Key word: dispose、register、check 目录

引言...4 第一章系统分析...5 1.1开发工具简介及系统运行环境...5 1.2开发的必要性...6 1.3系统开发的可行性...7 1.4数据来源...8 1.5新系统数据流程图...9 第二章 数据库设计...12 第三章功能模块设计...16 3.1新系统功能结构图及运行图如下:...16 3.2系统设置:.17 3.3公寓管理...18 3.4 卫生检查...19 3.5 公寓资产...20 3.6 记录查看与记录删除...20 3.7值班记录...20 3.8帮助制作...21 第四章 程序设计...22 主程序流程图...22 4.1 登录界面...23 4.2 程序主界面...26 4.3系统设置...32 4.4公寓管理...57 4.5卫生检查...60 4.6 公寓资产...64 4.7记录查看...66 4.8记录删除...74 4.9值班记录...81 4.10 Help制作...88 第五章 系统测试...90 总结...91 参考文献...92 引言

随着电脑的普及与应用,现在的管理也需要提升一个档次。即从原来的手工记录管理模式转变为电脑一体化管理。这样会给公寓的管理人员带来很多好处,让他们管理的效率更高、效果更好,管理起来更方便。由此而产生了本管理软件――学生公寓管理软件。学生公寓管理软件是用Microsoft Visual Basic 编写完成。由于Visual Basic率先采用了可视化(VISUAL)的程序设计方法。所以利用系统提供的大量可视化控件,可以方便的以可视化方式直接绘制用户图形界面,并可直观,动态的调整界面的风格和样式,直到满意为止,从而克服了以前必须用大量代码去描述界面元素的外观和位置的传统编程模式。做起来方便,使用起来更为快捷。

作为一个学生公寓的管理软件,要十分全面的贴近以及适合大学公寓的管理方法。本软件的参考资料主要有两种来源:一是参考本学校公寓的管理结构,管理方法。如各个公寓的分布特色,以及公寓的各种管理制度。这些资料是本软件的主要依据,也可以说这些资料来源于普通的生活,比较真实一些。二是来源于网络上的各种同类软件,通过这些软件可以看出一个公寓最低需要哪些管理与设置,在这些软件中,有些软件功能比较齐全,但是在管理上显的非常的不方便,使用起来十分麻烦、繁琐,有些虽然简单,但是功能上又不是十分完善,对这些软件首先要进行取其精华,弃其糟粕,从而进行编写。

本软件主要包括以下方面:系统设置、公寓管理、卫生检查、公寓资产、记录查看、记录删除、值班记录、帮助制作。

学生公寓管理软件目前版本为1.0.1,为一个测试版本。它目前在功能上,以及操作的简便上有很大的改进。但是还是存在一些不足,在有些功能的实现上还不是十分的理想,这也是本人在时间和精力上留下的遗憾。但是相信这些会在以后的版本中得到完善,使这个软件成为一个功能上最全,使用上最简捷方便的管理软件。431

[10]...>> 第一章系统分析

系统采用MICROSOFT公司的 VISUAL BASIC语言编写的学生公寓管理系统,本系统在研制开发过程中,严格遵循软件工程方法,完全采用结构化程序设计方法。

本系统的主要功能可以方便的对学生公寓进行管理,系统采用ACCESS数据库使数据具有较强的完整性、较好的数据安全性等特点以及提供了标准的帮助,使用户方便的获得所需的帮助。界面友好、操作简单、功能齐全、具有较好的人机接口界面是本系统的最大优点。1.1开发工具简介及系统运行环境 1.1.1

VB6简介

本软件的开发工具为VISUAL BASIC,作为一种开发语言,VISUAL BASIC率先采用了可视化(VISUAL)的程序设计方法。利用系统提供的大量可视化控件,可以方便的以可视化方式直接绘制用户图形界面,并可直观、动态的调整界面的风格和样式,直到满意为止,从而克服了以前必须用大量代码去描述界面元素的外观和位置的传统编程模式。

它还拥有面向对象的编程方法。面向对象的程序设计是伴随WIDNOWS图形界面的诞生而产生的一种新的程序设计思想,与传统程序设计有着较大的区别,VISUAL BASIC采用了面向对象的程序设计思想。所谓“对象”就是现实生活中的每个一人,每一个可见的实体。同样,在VISUAL BASIC中,用来构成用户图形界面的可视化控件,也可视为是一个对象。不同的对象,在程序中所赋给它的功能是不同的,比如,在图形界面上有两个命令按钮,一个用来实现数据的统计计算,另一个用来实现数据的打印,这两个按钮就可视为是两个不同的对象,为了实现这两个对象各自不同的功能,接下来就应该分别针对这两个对象编写程序代码,这种编程的思想和方法即为所谓的“面向对象的程序设计”。它还支持第三方软件商为其开发的可视化控制对象,如本例中就用到了一个。这些可视化控件对应的文件扩展名这OCX。只要拥有控件的OCX文件,就可将其加入到VB系统中,从而大大增强VB的编程实力。使软件做起来会更加得心应手。1.1.2 HELP 制作

制作help文档需要一个专业制作软件,本人使用的是破解版的QuickCHM,此软件无论在功能上还在是操作上用起来都是很方便。它属于一个傻瓜型的制作软件,利用它可以快速的制作出各种你所需要的帮助文档。但是如果想制作出帮助文档,就需要使用制作网页的软件把内容先做成html形式,本人使用Dreamweaver制作的网页,然后在用此软件进行加载,最后生成chm文档。1.2开发的必要性

信息资源已成为各个部门的重要财富和资源,建立一个满足各级部门信息处理需要的信息系统,也一个企业或组织生存越来越重要的信息资源。长期以来,使用传统人工的方法管理高校公寓,这种管理方式存在着许多缺点,如:效率低。而且时间一长,将产生大量的文件和数据,这对于查找、更新、维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥越来越重要的作用。学生公寓管理软件,是以高校的管理方式为实例而设计的一种实用型管理软件。

本系统最大的特点是通用性、简单操作性。随着学校寄宿人员的增多,公寓管理人员的负担越来越重,为了让所有公寓管理人员能从繁重的工作中解脱出来,实现无纸化办公,使工作更有条理、更方便、更有效率,而开发出这套公寓管理软件。1.3系统开发的可行性 1.3.1 技术上的可行性 我们正走进一个信息时代,信息技术将从根本上改变人类社会的生产方式和生活方式,各行各业的业务管理现在都已经相继使用计算机来处理,可以说用计算机进行信息管理是一个总趋势。学生公寓管理软件主要是对公寓、寝室的配置、住宿人员登记、卫生检查、公寓资产、学生违纪、值班老师记录以及对学生住宿情况查询,修改,更新等。可以更快地了解到每个学生的住宿情况。开发一个学生公寓管理系统可以达到事半功倍的效果。随着数据库管理系统的普及以及可视化编程软件的出现,使数据库管理信息系统的开发变得更为简单,因此开发一个学生公寓管理系统是完全可行的。1.3.2 经济上的可行性

本单位有自己的微机室可以使用,不必重新购置计算机,不需要花费大量资金,是一个节约人力物力的好办法。

1.3.3 组织管理上的可行性

本单位的领导干部具有较高的素质,它们对管理现代化有较高的认识水平,并且有各级领导的大力支持和重视。

综上所述,建立一个学生公寓管理软件与人工操作相比具有速度更快,操作更准确,更节约开支等有利之处,因此建立一个学生公寓管理软件是必要可行。

1.4数据来源

作为一个学生公寓的管理软件,要十分全面的贴近以及适合大学公寓的管理方法。本软件的参考资料主要有两种来源:一是参考本学校公寓的管理结构,管理方法,这些资料是本软件的主要依据,也可以说这些资料来源于普通的生活,比较真实一些。二是来源于网络上的各种同类软件,通过这些软件可以看出一个公寓最低需要哪些管理与设置,在这些软件中,有些软件功能比较齐全,但是在管理上显的非常的不方便,使用起来十分麻烦、繁琐,有些虽然简单,但是功能上又不是十分完善,对这些软件首先要进行取其精华,弃其糟粕,从而进行编写。

[10]...>> 1.5新系统数据流程图

图1.1数据流程图

数据字典

图1.2 数据元素 注:其它数据元素略

图1.3 数据流 注:其它数据流略

图1.4 加工 注:其它加工略

注:其它数据存储略

第二章 数据库设计

1、E-R图

图2.1 E-R图

2、信息的数量越来越大,数据库的作用越发突出,所以数据库的建立是系统施实的主要部分之一,它关系到整个系统的运行情况,是整个系统的重要组成部分。本系统数据库为db.mdb,在数据库中包括十个表。分别是:用户表、公寓表、班级表、寝室表、卫生等级表、学生基本情况表、学生请假情况表、学生违规情况表、寝室卫生情况表、资产表。下面介绍几个主要的表:

⑴ 学生基本情况表主要是存放学生的基本情况,字段包括:姓名、性别、学号、班级、公寓、寝室、入学时间、年制、寝室电话、个人电话、备注。数据结构如下表:

字段名 数据类型 数据长度 姓名 文本 8 性别 文本 2 学号 文本 10 班级 文本 10 公寓 文本 20 寝室 文本 10 入学时间 文本 14 年制 文本 8 个人电话 文本 15 备注 备注

⑵ 学生请假情况表主要存放学生请假情况,字段包括:日期、姓名、班级、公寓、寝室、天数、原因、老师、备注。数据结构如下表: 字段名 数据类型 数据长度 日期 文本 14 姓名 文本 8 班级 文本 10 公寓 文本 20 寝室 文本 10 天数 文本 10 原因 备注

老师 文本 8 备注 备注

⑶ 学生违规情况表主要存放学生违规情况,字段包括:日期、姓名、班级、公寓、寝室、原因、程度、处罚、备注。数据结构如下表:

字段名 数据类型 数据长度 日期 文本 14 姓名 文本 8 班级 文本 10 公寓 文本 20 寝室 文本 10 原因 备注

程度 备注

处罚 备注

备注 备注

⑷ 卫生情况表主要存放寝室卫生情况,字段包括:日期、公寓、寝室、检查1到

5、得分、减分、等级、备注。其中检查1到5是为了在没有使用者想输入的记录的情况下自己输入而设计的,保证了系统的可修改性、可扩展性。数据结构如下表: 字段名 数据类型 数据长度 日期 文本 14 公寓 文本 20 寝室 文本 10 检查1 文本 40 检查2 文本 40 检查3 文本 40 检查4 文本 40 检查5 文本 40 得分 文本 4 减分 文本 4 等级 文本 6 备注 备注

⑸ 资产表主要存放寝室新增资产情况,字段包括:日期、公寓、名称、数量、单价、总价、用途、备注。数据结构如下表: 字段名 数据类型 数据长度 日期 文本 14 公寓 文本 20 名称 文本 20 数量 文本 4 单价 文本 10 总价 文本 10 用途 备注

备注 备注

第三章功能模块设计

3.1新系统功能结构图及运行图如下:

1、系统功能结构图:

[10]...>> 图3.1系统功能结构图

2、系统功能结构图运行图:

图3.2系统功能结构运行图

经过系统分析,确定了本软件主要包括以下方面:系统设置、公寓管理、卫生检查、公寓资产、记录查看、记录删除、值班记录、帮助制作。3.2系统设置: 主要完成:用户管理、公寓设置、数据备份、数据转换、退出的功能。运行图如下:

图3.3系统设置运行图 3.2.1 用户管理

可以进行管理人员的添加和修改以及删除操作。添加人员可以分为两类:普通用户、管理员。可以视不同人员而添加。管理员拥有所有权力,对整个系统的操作。普通用户只有浏览、及一些简单的添加操作权力。无用户设置、公寓设置及记录删除等权力。3.2.2公寓设置

分为三个主要的操作:公寓设置、寝室设置、班级设置。在这里可以添加学校所有的公寓、所有班级、每个公寓的所有寝室,也可以用此软件管理一幢公寓。这样操作起来会更简单、操作一目了然。3.2.3数据备份

这是一个数据管理软件所必不可少的一部分,利用它可以及时的备份当前的数据库以及在出现故障后利用已保存的数据进行恢复。3.2.4数据转换

利用数据转换将当前数据库中的表转换成Excel表格的形式,显示更为直观,可以进行打印等操作。3.3公寓管理

主要完成:学生请假、学生违规、床位设置的功能。运行图如下:

图3.4公寓管理运行图 3.3.1学生请假

主要是对学生请假记录做一个添加。利用它可以把学生的基本的请假资料保存起来。3.3.2学生违规

主要是对学生违规记录做一个添加。利用它可以把学生的基本的违规资料保存起来。3.3.3床位设置

通过床位设置可以简单查看每个公寓每个寝室的床位使用情况以及床位剩余情况。还可以通过详细查看,查看到某个公寓某个寝室住宿人员的人数,以及具体的住宿人员的名字。3.4 卫生检查

主要完成:添加检查记录的功能。卫生检查可以对卫生检查的结果进行记录。这里的卫生标准一共有五项可以填写,在每一项里已经基本设置了所不合标准的记录,你可以在下拉列表框中进行选择即可,但是如果没有你想输入的记录的话,也可以自己输入。运行图如下:

图3.5卫生检查运行图 3.5 公寓资产

主要完成:添加新增物品的功能。可以对公寓资产的收入或其它物品的入库进行记录。运行图如下:

图3.6公寓资产运行图 3.6 记录查看与记录删除

主要是对学生请假、学生违规、卫生记录,公寓资产等记录所进行的操作,利用这两个功能可以对任一记录进行查看与删除。运行图如下:

图3.7记录查看

图3.8记录删除运行图 3.7值班记录

它的功能主要是针对值班人员开发出来的,在这里可以让值班人员对当天值班情况进行一个小记,以便日后查看。运行图如下:

图3.9值班记录运行图 3.8帮助制作

对于一个稍显正规的软件来说帮助的制作都是必不可少的内容,本程序也不例外,制作了此帮助文档。在程序中可以按F1或点击帮助菜单来显示此help.Chm文档。以便对本软件进行快速操作。运行图如下:

图3.10帮助运行图

第四章 程序设计 主程序流程图

4.1 登录界面

此界面是由Photoshop制作而成。在做这个登录面的时候想了很多,最后选择了这种,感觉它看起来干净,整齐。又不失其庄雅。加上本单位最有特色的建筑,会让人一目了然。

4.1.1 登录图片显示

图4.1登录界面

4.1.2 界面制作与实现

在这个界面中,主要处理的是判断当前用户输入的信息是否正确。如果正确,那么它属于哪种类型用户。因为此管理软件在登录后不同类型的用户显示的窗体与实现的功能都不是一样的,它们会有所差别!(1)浮动按钮的实现

确定和取消两个按钮在鼠标没有放上去之前看上去只是一个普通的平面字效果,但是当你把鼠标放在这几个字上面后,它会显示凸出的效果,按下后呈现凹陷的效果。总体实现立体的感觉。原理主要是在鼠标mousemove事件与线的颜色变化组合来实现。主要代码如下:

在窗体中的鼠标移动过程中,以及在窗体初始化的时候,要把添加的线的.Visible 属性设置为 False,只有在鼠标按下的时候在改变其颜色即

[10]...>> 可。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)Line1.Visible = False Line2.Visible = False Line3.Visible = False Line4.Visible = False Line5.Visible = False Line6.Visible = False Line7.Visible = False Line8.Visible = False End Sub

鼠标按下的时候设置线条的颜色如下:

Private Sub Label3_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)Line1.BorderColor = &H808080 Line2.BorderColor = &H808080 Line3.BorderColor = &HE0E0E0 Line4.BorderColor = &HE0E0E0 End Sub

鼠标移动到标签的时候设置线条的颜色如下: Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)Line1.BorderColor = &HE0E0E0 Line2.BorderColor = &HE0E0E0 Line3.BorderColor = &H808080 Line4.BorderColor = &H808080 Line1.Visible = True Line2.Visible = True Line3.Visible = True Line4.Visible = True End Sub(2)用户类型判断

在数据库中建了一人yonghu表。在添加管理人员时有两种默认级别。管理员、普通用户。管理员拥有对数据库操作的一切权限。普通用户只有普通的查看,数据转换等。没有删除等操作功能。前用户成功登录后,会在主窗体的状态栏中显示出当前用户及其用户类型。主要代码如下:

设置当前控件连接的数据库 Dim provider As String Dim datasource As String provider = “provider=Microsoft.jet.oledb.4.0” datasource = “data source=” & App.Path & “DB.mdb” With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & “;” & datasource.CommandType = adCmdTable.RecordSource = “yonghu”.Refresh.Recordset.MoveFirst End With 对用户进行判断

If Text1.Text = “" Then MsgBox ”请输入用户名!“, 48, ”提示“ Exit Sub End If Adodc1.Recordset.Find ”用户=''“ & Text1.Text & ”''“ If Adodc1.Recordset.EOF = False And Text2.Text = Trim(Adodc1.Recordset.Fields(”pass“))Then main.Text1.Text = Adodc1.Recordset.Fields(”级别“)main.Text2.Text = Adodc1.Recordset.Fields(”用户“)main.Show Unload Me Else Text1.Text = ”“ Text2.Text = ”“ MsgBox ”登录不成功,请重新登录!“, 48, ”提示“ End If 4.2 程序主界面

程序主界面为本软件的显示的核心部分。一切主要操作及显示都通过这里完成。整个界面主要由五部分组成。菜单部分、工具栏、左侧操作栏、右侧显示栏以及状态栏。①界面效果图如下:

图4.2程序主界面

菜单栏的详见附录内容,这里就不提了。左侧操作栏和右侧显示栏会在下面的内容中做介绍,现在只简单介绍一下工具栏和状态栏,以及主窗体的各个事件。

工具栏主要是由coolbar制作而成。由它制做的工具栏的显示效果会更有立体感一些。这里只列出了几个常用的按钮。其中的添加按钮是用来对公寓住宿人员进行添加,修改也是对所住宿人员进行修改,想要进行修改时必须显示所有记录时才可以进行。在这里值得一提的是删除DataGrid的操作,由于不知道它的当前数据源是哪个,所以在删除前要确定它的数据源,也就是它所链接的adodc1的数据源,或者是其它ado控件对它的数据源进行重新绑定后的数据库表,也有可能是经过一个查询后得到的记录。②它的实现方法如下所示: Dim o As Adodc Set o = DataGrid1.datasource

o.Recordset.Delete

o.Recordset.Update 这里主要是用到了ado对像的方法。用这个方法得到数据源。

下面是整个工具栏运行时代码: Select Case Button.Index Case 1 sel.Show 1 Case 3 add.Show 1 Case 5 On Error GoTo next2 Dim s As Adodc Set s = DataGrid1.datasource If s.RecordSource = ”users“ Then edit.Show 1 End If next2: Case 7 On Error Resume Next Dim o As Adodc Set o = DataGrid1.datasource

o.Recordset.Delete

o.Recordset.Update Case 9 back.Show 1 Case 11 With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”users“ ''.Refresh End With Set DataGrid1.datasource = Adodc1 DataGrid1.Refresh Call dx Case 13 Unload Me End Select 状态栏分四个部分。第一个为固定显示当前所用软件名称及作者。其中第二个和第三部分为动态显示的,它会显示出每次用户登录名称及其管理模式。由上图可以看出,lf为本软件管理员。第四部分为日期与时间的显示。其中第三部分的代码实现如下: main.Text1.Text = Adodc1.Recordset.Fields(”级别“)main.Text2.Text = Adodc1.Recordset.Fields(”用户“)StatusBar1.Panels(2).Text = ”当前用户:“ & Text2.Text StatusBar1.Panels(3).Text = ”用户模式:“ & Text1.Text StatusBar1.Panels(4).Text = Date & ”

“ & Time ''设置普通用户模式

If Text1.Text = ”普通用户“ Then yhgl.Visible = False g1.Visible = False jlsc.Visible = False gysz.Visible = False Toolbar1.Buttons(5).Visible = False Toolbar1.Buttons(6).Visible = False Toolbar1.Buttons(7).Visible = False Toolbar1.Buttons(8).Visible = False End If 主窗体在程序运行中会遇到不断改变其大小,最小化,最大化,以及用鼠标来改变,这里需要在窗体的Resize事件中添加代码,让程序中用到的各个控件随时可以适应窗体改变后的大小,在这里改变的控件主要有DataGrid、TreeView系列及Frame控件、StatusBar。下面就是设置它们大小的程序代码:

DataGrid1.Width = main.WidthStatusBar1.Height750 SSTab1.Height = main.HeightCoolBar1.HeightStatusBar1.Height1200 Frame2.Height = main.HeightCoolBar1.HeightStatusBar1.Height1200 TreeView1.Height=main.HeightCoolBar1.HeightStatusBar1.Height1500 TreeView3.Height=main.HeightCoolBar1.Heightz)/ 4 StatusBar1.Panels(1).Width = u + x StatusBar1.Panels(2).Width = v + x StatusBar1.Panels(3).Width = w + x StatusBar1.Panels(4).Width = m + x 这个软件的主要部分都在这里运行、查看,所以在主窗体的load事件里要把所用的到的东西都要加载进来,例如所在程序运行时所用到的表,左侧treeview部分树形显示的初始化。在这里几乎用到了所有的表,如下所示: provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”users“ ''.Refresh End With

With Adodc2.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”gongyu“.Refresh End With

With Adodc3.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”class“.Refresh End With

With Adodc4.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”weisheng“.Refresh End With

With Adodc5.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource End With

With Adodc6.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”dengji“.Refresh End With

With Adodc7.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”qinshi“.Refresh End With

With Adodc9.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”zichan“.Refresh End With treeview部分树形显示的初始化在这里已经做了几个过程,调用即可。4.3系统设置 4.3.1用户管理 ①界面效果图

[10]...>>

② 界面制作与实现方法

这个界面总体来说各个控件比较简单,但是作为一个添加删除管理员的操作,它已经连接到了数据库,与数据库的yonghu表相联。各个控件也与数据库中表的字段绑定。在窗体初始化的时候要判断当前数据库表中是否有记录,如果没有记录那么有些按钮将会被设置成为失效状态,否则会出现错误。设置代码如下: Dim provider As String Dim datasource As String provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”yonghu“.Refresh End With Option1.Enabled = False Option2.Enabled = False If Adodc1.Recordset.RecordCount = 0 Then Command2.Enabled = False Command3.Enabled = False Command5.Enabled = False Command6.Enabled = False End If Text2.Text = Text3.Text 上一条与下一条的功能一目了然,它们可以对当前表进行上一条记录或下一条记录依次查看。当找到记录后,可以对其进行相对的删除、修改等操作。上一条记录与下一条的记录在查看时有一个判断。当表中记录移到最前面(BOF)或最后面(EOF)时,会把上一条或下一条其中的一个按钮的enable属性设置为true。即不可以前查看或向后查看。上一条与下一条主要代码如下:

Adodc1.Recordset.MovePrevious ''移动记录 Command6.Enabled = True If Adodc1.Recordset.BOF Then

Adodc1.Recordset.MoveFirst

Command5.Enabled = False End If Adodc1.Recordset.MoveNext ''移动记录 Command5.Enabled = True If Adodc1.Recordset.EOF Then

Adodc1.Recordset.MoveLast

Command6.Enabled = False End If 添加用户可以添加使用该管理软件的用户。添加的时候可以选择所添加人物的级别。软件默认为两个级别:管理员、普通用户。管理员拥有对此软件管理操作等一切的权力。普通用户,只有普通的查看、查询、备份、添加等权力。没有对记录删除等权力。在添加用户时你可以选择一个且必须选择一个。然后输入此用户的用户名和密码即可!添加用户主要代码:

If Command1.Caption = ”添加“ Then Command2.Enabled = False Command5.Enabled = False Command6.Enabled = False Command1.Caption = ”确定“ Command3.Caption = ”取消“ Adodc1.Recordset.AddNew Option1.Enabled = True Option2.Enabled = True Text1.Enabled = True Text2.Enabled = True Text3.Enabled = True Text2.Text = ”“ ElseIf Text1.Text = ”“ Then MsgBox ”用户名不能为空!“, 48, ”提示“ ElseIf Text2.Text = ”“ Then MsgBox ”密码不能为空!“, 48, ”提示“ ElseIf Text2.Text <> Text3.Text Then MsgBox ”密码两次需一致!“, 48, ”提示“ ElseIf Text4.Text = ”“ Then MsgBox ”请选择所建用户类型!“, 48, ”提示“ Else Command2.Enabled = True Command3.Enabled = True Command5.Enabled = True Command6.Enabled = True Command3.Caption = ”编辑“ Command1.Caption = ”添加“ Adodc1.Recordset.Update Text1.Enabled = False Text2.Enabled = False Text3.Enabled = False Text4.Enabled = False Option1.Value = False Option2.Value = False Option1.Enabled = False Option2.Enabled = False End If 删除操作可以把当前记录删除掉。一经删除即不可以在恢复。所以在操作前要想好。删除操作部分代码:

If Adodc1.Recordset.RecordCount = 1 Then Command2.Enabled = False End If If(MsgBox(”你真的想删除当前记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveFirst Adodc1.Refresh End If 编辑操作可以对当前所选择的用户进行编辑,可以修改其用户名与密码。当当前用户感觉自己用户名称或密码有泄露时,可以进行修改。修改记录即更新表中的某一条记录。编辑操作主要代码如下: Command2.Enabled = False Text1.Enabled = True Text2.Enabled = True Text3.Enabled = True Text4.Enabled = True Option1.Enabled = True Option2.Enabled = True Command1.Caption = ”确定“ ElseIf Command3.Caption = ”取消“ Then Command3.Caption = ”编辑“ Command1.Caption = ”添加“ Command2.Enabled = True Command5.Enabled = True Command6.Enabled = True Text2.Text = Text3.Text Text1.Enabled = False Text2.Enabled = False Text3.Enabled = False Text4.Enabled = False Option1.Value = False Option2.Value = False Option1.Enabled = False Option2.Enabled = False End If 4.3.2 公寓设置

公寓设置可以说是本程序中一关键部分。因为所有的设置都在此进行。包括公寓添加、修改、删除。寝室的添加、修改、删除以及班级的添加、修改和删除操作。只有正确的对这些设置进行添加修改,才能输入正确的记录。这里主要涉及到的问题是datagrid的显示,以及treeview及时形成新的结构。还有一些就是对表记录的复杂操作。在点击sstab各版的时候,要在这时重新生成寝室设置中的树型结构,Select Case PreviousTab

Case 0

Call startree1

Case 1

Combo1.Clear

Dim I As Integer

I = 1

If Adodc1.Recordset.RecordCount <> 0 Then

Adodc1.Recordset.MoveFirst

Do While I < Adodc1.Recordset.RecordCount

Combo1.AddItem(Adodc1.Recordset.Fields(”公寓名称“))

Adodc1.Recordset.MoveNext

I = I + 1

Loop

End If

Call startree1

Case 2

Call startree1 End Select End Sub(1)公寓设置

① 公寓设置效果图

图4.4公寓设置

② 界面制作与实现方法

在这个界面中主要用到了一个Sstab控件与一个显示表中内容的Datagrid控件。以及起到美观作用的Frame控件。

在右下角的文本框中可以输入想要添加的公寓名称。然后点击添加即可完成添加操作。Datagrid中会立即刷新显示更新内容。要修改某条记录时,要先对所要修改的记录进行选择,确认选择后,点击下面的修改按钮,会在下面的文本中显示出所要修改公寓的名称,此时即可输入要修改的名字。然后点击更新就会完成此操作。Datagrid也会即时更新其内容。删除操作更为简单,选择想要删除的公寓名称,点击删除,确认后完成此操作。但是删除后不会影响其它表中的数据。其它表的有关此公寓的信息还会存在。在进行所有操作前,先要确定数据库已连接。

在添加前要判断所写公寓名称是否正确,即是否输入名称,该记录不能为空,不为空则对数据库表进行查找,判断当前输入记录是否已在表中存在,如果已存在,则会给出提示,不存在,添加成功。

Adodc1.Recordset.Find ”公寓名称=''“ & Text2.Text & ”''“ If Adodc1.Recordset.EOF = False Then MsgBox ”此公寓已存在“, , ”提示“ Adodc1.Recordset.MoveFirst Exit Sub End If Text3.Text = ”“ If Text2.Text = ”“ Then MsgBox ”输入所要添加公寓的名称“, , ”提示“ Exit Sub End If 添加:

Adodc1.Recordset.AddNew Adodc1.Recordset.Fields(”公寓名称“)= Text2.Text Adodc1.Recordset.Update Adodc1.RecordSource = ”gongyu“ Text2.Text = ”“ Set DataGrid2.datasource = Adodc1 DataGrid2.Refresh

修改公寓名称:

If Text3.Text = ”“ Then MsgBox ”选择要修改的公寓“, , ”提示“ Exit Sub End If If Command12.Caption = ”修改“ Then Text2.Text = Text3.Text Label6.Caption = ”输入想要修改的公寓名称“ Command12.Caption = ”更新“ Command3.Enabled = False Command7.Enabled = False ElseIf Command12.Caption = ”更新“ Then Command3.Enabled = True Command7.Enabled = True Label6.Caption = ”输入想要添加的公寓名称“ Adodc1.Recordset.Fields(”公寓名称“)= Text2.Text Adodc1.Recordset.Update Adodc2.Recordset.ActiveConnection.Execute ”update qinshi set 公寓名称=''“ & Text2.Text & ”'' where 公寓名称=''“ & Trim(Text3.Text)& ”''“ Adodc2.Recordset.Update Command12.Caption = ”修改“ End If Set DataGrid2.datasource = Adodc1 DataGrid2.Refresh Adodc5.Recordset.Update Set main.DataGrid1.datasource = Adodc5 main.DataGrid1.Refresh

删除公寓名称

If Text3.Text = ”“ Then MsgBox ”选择所要删除公寓的名称“, , ”提示“ Exit Sub End If If(MsgBox(”你真的想删除公寓名称为

“ & Text3.Text & ” 的记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then

Adodc1.Recordset.Delete

Adodc1.Recordset.Update End If Text3.Text = ”“ Set DataGrid2.datasource = Adodc1 DataGrid2.Refresh(2)寝室设置

①寝室设置效果图

图4.5寝室设置

②界面制作与实现方法 此界面实现相对比公寓设置来说相对复杂一些。用到的控件主要是Sstab与Treeview。但是在程序方面比较复杂。

在添加一个寝室前先要选择所要添加寝室所在的公寓。这个公寓可以点击下面的树中的节点,也可以在列表框中选择。树中的节点在点击后会把父节点显示在选择公寓后面的列表框中,而选中的节点会出现在寝室名称里。你也可以自己进行添写,确认公寓后即可添加完成了。添加后会把Treeview重新刷新一下。以显示更新后的记录。添加源码: Adodc1.Refresh Adodc1.Recordset.Find ”公寓名称=''“ & Combo1.Text & ”''“ If Adodc1.Recordset.EOF = True Then MsgBox ”此公寓不存在“, , ”提示“ Adodc1.Recordset.MoveFirst Exit Sub End If If Combo1.Text = ”“ Or Text1.Text = ”“ Then MsgBox ”请输入所要添加的寝室及其所属公寓“, , ”提示“ Exit Sub End If With Adodc2.Recordset.AddNew.Recordset.Fields(0).Value = Combo1.Text.Recordset.Fields(1).Value = Text1.Text.Recordset.Update End With Combo1.Text = ”“ Text1.Text = ”“ Call startree1 修改操作可以把当前选中的寝室进行名称修改与其所属公寓进行修改。当要对名称进行修改时,先要选择所要修改的寝室名,选择后会在寝室名称里显示出来,把当前寝室名称改成要修改的寝室名称,然后点击修改即完成名称修改操作。当要对当前寝室的所属公寓进行修改时,需要先选择所要修改的寝室,然后在上面的公寓名称后填写所要修改的寝室名称。点击修改后完成此操作。但是这种操作不是常见。修改源码: Adodc1.Refresh Adodc1.Recordset.Find ”公寓名称=''“ & Combo1.Text & ”''“ If Adodc1.Recordset.EOF = True Then MsgBox ”此公寓不存在“, , ”提示“ Adodc1.Recordset.MoveFirst Exit Sub End If

Dim sql As String On Error Resume Next If Combo1.Text = ”“ Or Text1.Text = ”“ Then MsgBox ”请在下面选择所要修改的寝室“, , ”提示“ Exit Sub End If ''sql = ”select * form qinshi where 公寓名称=''“ & Trim(Combo1.Text)& ”'' and 寝室=''“ & Trim(Text1.Text)& ”''“

Adodc2.Recordset.ActiveConnection.Execute ”update qinshi set 寝室=''“ & Text1.Text & ”'',公寓名称=''“ & Trim(Combo1.Text)& ”''where 寝室=''“ & Trim(Text6.Text)& ”''and 公寓名称=''“ & Trim(Text7.Text)& ”''“ Adodc2.Recordset.Update Combo1.Text = ”“ Text1.Text = ”“ Call startree1 删除操作可以删除掉当前树型显示中的任何一个子节点,也就是这个树型节点中的寝室名称,注意的是,删除后这个记录只在qinshi表中删除,其相关记录不会被删除掉的,如果想删除,还需要人工操作。实现的方法主要是对qinshi表操作,先对其进行查询,查询当前想要被删除的表是否存在,如果不存在,则给出提示,如果存在这条记录,则在表中把它删除掉,删除后调用生成树过程,把当前寝室设置中的树型结构重新生成,更新记录。实现的部分代码如下所示:

If Combo1.Text = ”“ Or Text1.Text = ”“ Or Combo1.Text = ”公寓管理系统“ Then MsgBox ”选择所要删除的寝室“, , ”提示“ Exit Sub End If If(MsgBox(”你真的想删除

“ & Combo1.Text & ” “ & ”寝室为“ & Text1.Text & ” 的记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc2.Refresh

[10]...>>

Adodc2.Recordset.ActiveConnection.Execute ”delete from qinshi where 公寓名称=''“ & Trim(Combo1.Text)& ”'' and 寝室=''“ & Trim(Text1.Text)& ”''“ Adodc2.Recordset.Update End If Combo1.Text = ”“ Text1.Text = ”“ Call startree1 在treeview点击的时候,上面的文本框中会显示相应的记录,这主要是对treeview进行了设置,代码如下:

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)On Error Resume Next Text1.Text = TreeView1.SelectedItem.Text Combo1.Text = TreeView1.SelectedItem.Parent Text6.Text = TreeView1.SelectedItem.Text Text7.Text = TreeView1.SelectedItem.Parent End Sub(3)班级设置

①班级设置效果图

图4.6班级设置

②界面制作与实现方法

此界面制作与公寓设置基本一致。在这个界面中主要用到了一个Sstab控件与一个显示表中内容的Datagrid控件。以及起到美观作用的Frame控件。

在右下角的文本框中可以输入想要添加的班级名称。然后点击添加即可完成添加操作。Datagrid中会立即刷新显示更新内容。要修改某条记录时,要先对所要修改的记录进行选择,确认选择后,点击下面的修改按钮,会在下面的文本中显示出所要修改班级的名称,此时即可输入要修改的名字。然后点击更新就会完成此操作。Datagrid也会即时更新其内容。删除操作更为简单,选择想要删除的班级名称,点击删除,确认后完成此操作。添加班级源码:

Adodc3.Recordset.Find ”class=''“ & Text4.Text & ”''“ If Adodc3.Recordset.EOF = False Then MsgBox ”此班级已存在“, , ”提示“ Adodc3.Recordset.MoveFirst Exit Sub End If Text5.Text = ”“ If Text4.Text = ”“ Then MsgBox ”输入所要添加班级的名称“, , ”提示“ Exit Sub End If Adodc3.Recordset.AddNew Adodc3.Recordset.Fields(”class“)= Text4.Text Adodc3.Recordset.Update Adodc3.RecordSource = ”class“ Text4.Text = ”“ Set DataGrid3.datasource = Adodc3 DataGrid3.Refresh 修改班级源码:

If Command10.Caption = ”修改“ Then Text4.Text = Text5.Text Label6.Caption = ”输入想要修改的班级名称“ Command10.Caption = ”更新“ Command6.Enabled = False Command9.Enabled = False ElseIf Command10.Caption = ”更新“ Then Command9.Enabled = True Command6.Enabled = True Label6.Caption = ”输入想要添加的班级名称“ Adodc3.Recordset.Fields(”class“)= Text4.Text Adodc3.Recordset.Update Command10.Caption = ”修改“ End If 删除班级源码:

If Text5.Text = ”“ Then MsgBox ”选择所要删除班级的名称“, , ”提示“ Exit Sub End If If(MsgBox(”你真的想删除班级名称 为

“ & Text5.Text & ” 的记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then

Adodc3.Recordset.Delete

Adodc3.Recordset.Update End If Text5.Text = ”“ Set DataGrid3.datasource = Adodc3

DataGrid3.Refresh End Sub 4.3.3数据备份:

数据备份是一个数据库软件必不可少的一部分,利用它可以把当前数据库表进行全面的备份,以备以后使用。因为在操作中可能会导致数据遭到破坏,或者是系统的原因使数据库损坏,或者是一些其它的人为原因,这样你可以用此功能把数据恢复到最后一次备份的状态,使损失做到最少,经常备份,操作起来更有安全感。①数据备份效果图

图4.7数据备份效果图 ② 功能实现

界面制作相对程序来说比较简单,用到的是coolbar控件,点击按钮可以选择备份路径。然后点击数据备份即可。窗体初始化部分代码如下: Dim cnn1 As ADODB.Connection Dim rstschema As ADODB.Recordset Dim strcnn As String Set cnn1 = New ADODB.Connection strcnn = ”provider=Microsoft.jet.oledb.4.0;“ & ”data source=“ & App.Path & ”db.mdb“ cnn1.Open strcnn Set rstschema = cnn1.OpenSchema(adSchemaTables)Do Until rstschema.EOF temp = rstschema!Table_Name If Left(temp, 1)<> ”M“ Then End If rstschema.MoveNext Loop cnn1.Close On Error GoTo err PathName = App.Path & ”db.MDB“ dbasize = FileLen(PathName)err: Exit Sub 数据备份部分在本程序中用到了一个模块,在模块中有一个方法,dobackup。点击备份按钮后开始备份,代码如下: If txtDestination <> ”“ Then DoBackup PathName, txtDestination MsgBox ”备份成功!“, , ”提示“ ElseIf txtDestination = ”“ Then MsgBox ”You must specify a distination for the backup“, vbCritical 其中DoBackup为模块中已定义的方法,在这里进行调用。Dobackup实现方法代码如下所示: Dim lFileOp As Long Dim lresult As Long Dim lFlags

As Long Dim SHFileOp As SHFILEOPSTRUCT Dim strSourceDir As String Dim strDestinationDir As String Screen.MousePointer = vbHourglass BackupFolderName = strDestinationPath MkDir BackupFolderName & ”Backup“ & Format(Date, ”yyyy.mm.dd“)& vbNullChar

.fFlags = lFlags End With lresult = SHFileOperation(SHFileOp)Screen.MousePointer = vbDefault frmBackupDba.lblStatus = ”Backup Complete“ 在备份分前先要选择一个备份路径,点击…那个按钮开始进行选择,实现方法如下: Dim strTemp As String strTemp = fBrowseForFolder(Me.hwnd, ”Select backup path“)If strTemp <> ”“ Then

txtDestination = strTemp End If 数据恢复界面同上,它的功能主要是在当前数据库遭到破坏后,可以利用它来进行数据恢复,在数据恢复前要选择所要恢复的数据库路径,如下: Dim strTemp As String strTemp = fBrowseForFolder(Me.hwnd, ”Restore From“)If strTemp <> ”“ Then

txtSource = strTemp

dbasize2 = FileLen(txtSource & ”db.MDB“)

lblSelectedDba = ”Selected Backup Database is : “ & Format((dbasize2 / 1024)/ 1024, ”standard“)& ”MB.“

cmdRestore.Enabled = True End If Erro:

Select Case err.Number

Case 53 ''File Not Found

lblSelectedDba = ”No Backup at this location“

Toolbar2.Enabled = False

End Select 它主要是查看数据库是否存在,如果所恢复的数据不存在,则会提示错误。数据恢复也用到了一个方法,在模块中也已经定义了该方法DoRestore。数据恢复代码如下: If MsgBox(”Restoring database from location “ & txtSource & ” will replace existing database files.Do you want to Contunue“, vbYesNo)= vbYes Then DoRestore txtSource.Text, App.Path If NoDba = True Then MsgBox ”Database Restored Click Ok to Exit Program“ frmRestoreDba.Hide Unload frmRestoreDba End If Else lblStatus.Caption = ”Database Restore Canceled“ End If 其中DoRestore实现的功能源码如下所示:

DEFSOURCE = ”PROVIDER=Microsoft.jet.oledb.4.0;Persist Security Info=False;Data Source=“ DBName = ”db.MDB;Jet OLEDB:Database Password=matrix-se;“ Set Db = New ADODB.Connection

Db.Open DEFSOURCE & App.Path & DBName Dim lFileOp As Long Dim lresult As Long Dim lFlags

As Long Dim SHFileOp As SHFILEOPSTRUCT Dim strSourceDir As String Dim strDestinationDir As String Db.Close Screen.MousePointer = vbHourglass BackupFolderName = strDestinationPath lFileOp = FO_COPY lFlags = lFlags And Not FOF_SILENT lFlags = lFlags Or FOF_NOCONFIRMATION lFlags = lFlags Or FOF_NOCONFIRMMKDIR lFlags = lFlags Or FOF_FILESONLY With SHFileOp

.wFunc = lFileOp

.pFrom = strSourcePath & ”db.MDB“ & vbNullChar

.pTo = strDestinationPath & vbNullChar

.fFlags = lFlags End With lresult = SHFileOperation(SHFileOp)Set Db = New ADODB.Connection Db.Open DEFSOURCE & App.Path & DBName Screen.MousePointer = vbDefault frmRestoreDba.lblStatus = ”Restore Complete“ 说明:本程序中此部分内容参考了网上的同类型代码,对其进行修改后得到此成型作品,从功能上来讲,它已经实现了它所要完成的工作,经过测试已经没有问题,但是实现的源代码,也只有部分掌握。这实属本人精力与能力有限所置。4.3.4 数据转换

这个功能可以把当前列表框中的任何一个表转换成excel形式,转换后你可以看到表中的内容,也可以对表进行操作,保存,修改,打印等。①界面效果图

图4.8数据转换效果图 ②实现方法

在这里用到了一个显示gif图片的控件。选择左面list中的一个表后,点击导出后即可完成,进度条中显示当前转换进度程度。

首先要在list中加载各表名。以便进行选择转换。添加表名部分在load进行加载,其中的导出与取消按钮是由coolbar制作而成。Form的load事件处理内容如下:

TMaxAni1.FileName = App.Path & ”iconfind.gif“ TMaxAni1.ShowGif Dim cnn1 As ADODB.Connection Dim rstschema As ADODB.Recordset Dim strcnn As String Set cnn1 = New ADODB.Connection strcnn = ”provider=Microsoft.jet.oledb.4.0;“ & ”data source=“ & App.Path & ”db.mdb“ cnn1.Open strcnn Set rstschema = cnn1.OpenSchema(adSchemaTables)Do Until rstschema.EOF temp = rstschema!Table_Name If Left(temp, 1)<> ”M“ Then List2.AddItem temp End If rstschema.MoveNext Loop cnn1.Close List2.ListIndex = 0 On Error GoTo err PathName = App.Path & ”db.MDB“ dbasize = FileLen(PathName)数据转换成excel用到了一个部件,在引用中用到了Microsoft Excel9.0 Object library。转换代码如下:

Select Case Button.Index Case 1 Dim provider As String Dim datasource As String provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = List2.Text.Refresh End With ProgressBar1.Max = Adodc1.Recordset.RecordCount ProgressBar1.Min = 0 ''开始转换

Dim Irow, Icol As Integer

Dim Irowcount, Icolcount As Integer

Dim Fieldlen()

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject(”Excel.Application“)

Set xlBook = xlApp.Workbooks.add

Set xlSheet = xlBook.Worksheets(1)With Adodc1.Recordset

.MoveLast

If.RecordCount < 1 Then

MsgBox(”Error!“)

Exit Sub

End If

Irowcount =.RecordCount

Icolcount =.Fields.Count

ReDim Fieldlen(Icolcount)

.MoveFirst

For Irow = 1 To Irowcount + 1

For Icol = 1 To Icolcount

Select Case Irow

Case 1

xlSheet.Cells(Irow, Icol).Value =.Fields(Icol1))= True Then

Fieldlen(Icol)= LenB(.Fields(Icol1))

End If

xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)

xlSheet.Cells(Irow, Icol).Value =.Fields(Icol1))

If Fieldlen(Icol)< Fieldlen1 Then

xlSheet.Columns(Icol).ColumnWidth = Fieldlen1

Fieldlen(Icol)= Fieldlen1

Else

xlSheet.Columns(Icol).ColumnWidth = Fieldlen(Icol)

End If

xlSheet.Cells(Irow, Icol).Value =.Fields(Icol1)).Font.Name = ”黑体“

.Range(.Cells(1, 1),.Cells(1, Icol1)).Borders.LineStyle = xlContinuous

End With

xlApp.Visible = True

'' xlBook.Save

''xlBook.Close

Set xlApp = Nothing

Adodc1.Recordset.ActiveConnection = Nothing End With Toolbar4.Buttons(1).Enabled = False Case 2 Unload Me End Select

[10]...>>

4.4公寓管理 4.4.1学生请假

学生请假与违规在一个公寓管理中是最常见的问题了,所以在此软件中加上了这两项功能。用它们可以随时记录请假记录。①学生请假记录图片显示

图4.9学生请假效果图 ② 界面制作与实现

此界面主要是对学生请假记录做一个添加。利用它可以把学生的基本的请假资料保存起来。其中的日期是系统当前的日期,它是不可以进行更改的,然后在其它文本框中输入其它详细资料即可以。这里的添加操作用的是Adodc控件,所有的文本框在初始的时候没有同Adodc绑定,而是在代码中与数据库中表的字段进行的绑定,然后进行添加操作。这样做在使用的时候有很大的方便之处。第一是窗体在初始化时不会显示任何记录,不用设置文本框为空等一系列的操作。第二是当进行记录输入时,发现问题不用输入时,不按添加按钮记录就不会进行添加。注意的是,在添加前要确定所有的文本框都要进行详细填写,否则会提示输入详细信息。添加主要代码如下:

If Text1.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Or Text4.Text = ”“ Or Text5.Text = ”“ Or Text6.Text = ”“ Or Text7.Text = ”“ Or Text8.Text = ”“ Or Text9.Text = ”“ Then MsgBox ”请输入详细信息!“, , ”系统提示“ Else With Adodc1.Recordset.AddNew.Recordset.Fields(0).Value = Text1.Text.Recordset.Fields(1).Value = Text2.Text.Recordset.Fields(2).Value = Text3.Text.Recordset.Fields(3).Value = Text4.Text.Recordset.Fields(4).Value = Text5.Text.Recordset.Fields(5).Value = Text6.Text.Recordset.Fields(6).Value = Text7.Text.Recordset.Fields(7).Value = Text8.Text.Recordset.Fields(8).Value = Text9.Text.Recordset.Update End With Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh End If 4.4.2学生违规

①学生违规记录图片显示

图4.10学生违规效果图

此界面与上面的请假记录差不多。它主要是对学生的违规记录做一个添加。其中的日期也是系统当前的日期,它是不可以进行更改的,然后在其它文本框中输入其它详细资料即可以这里的违规操作用的也是Adodc控件,所有的文本框在初始的时候也没有同Adodc绑定,它也是在代码中与数据库中表的字段进行的绑定,然后进行添加操作。其它操作同上面基本是一致的,对于违规在主界面的左侧并没有快速显示操作,只可以用记录查看里面的违规查看进行选择查看。在这里所添写的记录也要全面一些,主要是为了以后查找更为方便,如果不全,系统会提示的!②违规部分代码如下:

在load事件里对数据库链接的处理,以及日期文本框的设置,代码如下: provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”qingjia“.Refresh End With Text1.Text = Date Text1.Enabled = False 确定无误后,进行添加,代码如下:

If Text1.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Or Text4.Text = ”“ Or Text5.Text = ”“ Or Text6.Text = ”“ Or Text7.Text = ”“ Or Text8.Text = ”“ Or Text9.Text = ”“ Then MsgBox ”请输入详细信息!“, , ”系统提示“ Else With Adodc1.Recordset.AddNew.Recordset.Fields(0).Value = Text1.Text.Recordset.Fields(1).Value = Text2.Text.Recordset.Fields(2).Value = Text3.Text.Recordset.Fields(3).Value = Text4.Text.Recordset.Fields(4).Value = Text5.Text.Recordset.Fields(5).Value = Text6.Text.Recordset.Fields(6).Value = Text7.Text.Recordset.Fields(7).Value = Text8.Text.Recordset.Fields(8).Value = Text9.Text.Recordset.Update End With Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh 4.5卫生检查

公寓卫生可以说是一个公寓管理中最常见到的问题了。公寓卫生每天要清扫,寝室卫生每天要检查,但是如果这些都用纸来进行填写,一定会十分麻烦,且保存也不是十分方便,在一些评比中也会忙的很遭。所以在这个软件中编写了此功能。4.5.1 公寓卫生添加效果图

图4.11公寓卫生添加效果图 ①在这个界面中主要用到了文本框以及起到美观作用的frame控件。日期已经设置成只读属性,检查记录的日期是不能随便改写的。公寓名称可以在下拉列表框中进行选择,如果在下拉列表框中没有发现,可以人工输入,但是要确定公寓名称的正确性。寝室名称需要自己输入。这里的卫生标准一共有五项可以填写,在每一项里已经基本设置了所不全标准的记录,你可以在下拉列表框中进行选择即可,但是如果没有你想输入的记录的话,你也可以自己输入。输入完成后,在减分后面的文本框中输入一共要对此寝室减掉的分数,单击得分后面的文本框会自动算出应该得到的分数。然后跟据得分的分数,你要选择该寝室的卫生等级,卫生等级为必选值且为固定值,正确的选择此项可以在主界面的左侧中快速对卫生等级进行查看。②公寓选择栏中代码的实现: Combo3.Clear Dim I As Integer I = 1 If Adodc1.Recordset.RecordCount <> 0 Then Do While I < Adodc1.Recordset.RecordCount

Combo3.AddItem(Adodc1.Recordset.Fields(”公寓名称“))

Adodc1.Recordset.MoveNext

I = I + 1 Loop End If 卫生选择栏中的代码实现基本同上,它也是一个表中的字段值!Dim J As Integer J = 1 If Adodc4.Recordset.RecordCount <> 0 Then Do While J < Adodc4.Recordset.RecordCount

Combo2.AddItem(Adodc4.Recordset.Fields(”等级“))

Adodc4.Recordset.MoveNext

J = J + 1 Loop End If Combo2.Text = ”优秀“ 不合标准的卫生记录填写情况如下: Combo4.AddItem(”门窗不干净“)Combo4.AddItem(”地面不干净“)Combo4.AddItem(”阳台不干净“)Combo4.AddItem(”床铺不整齐“)Combo4.AddItem(”不叠被“)Combo4.AddItem(”桌面不整齐“)Combo4.AddItem(”书柜摆放不整齐“)由于此窗体中涉及到公寓与寝室,在填写时要确定其名称的正确,所以在添加记录前要对它们进行检查,如发现不存在的记录,则显示提示。检查记录时用的是adodc中的find命令。类似于用户登录时的判断,同样记录的输入也要详细。代码如下: Adodc1.Refresh Adodc1.Recordset.Find ”公寓名称=''“ & Combo3.Text & ”''“ If Adodc1.Recordset.EOF = True Then MsgBox ”查无此公寓“, , ”提示“ Adodc1.Recordset.MoveFirst Exit Sub End If Adodc3.Refresh Adodc3.Recordset.Find ”寝室=''“ & Text5.Text & ”''“ If Adodc3.Recordset.EOF = True Then MsgBox ”查无此寝室“, , ”提示“ Adodc3.Recordset.MoveFirst Exit Sub End If If Combo3.Text = ”“ Or Combo2.Text = ”“ Or Text5.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Then MsgBox ”请输入详细信息!“, , ”系统提示“ Else 确认一切无误后,开始对所填写记录进行添加并显示: With Adodc2.Recordset.AddNew.Recordset.Fields(0).Value = Combo3.Text.Recordset.Fields(1).Value = Text5.Text.Recordset.Fields(2).Value = Combo4.Text.Recordset.Fields(3).Value = Combo5.Text.Recordset.Fields(4).Value = Combo6.Text.Recordset.Fields(5).Value = Combo7.Text.Recordset.Fields(6).Value = Combo8.Text.Recordset.Fields(7).Value = Text2.Text.Recordset.Fields(8).Value = Text3.Text.Recordset.Fields(9).Value = Combo2.Text.Recordset.Fields(10).Value = Text4.Text.Recordset.Fields(11).Value = Text1.Text.Recordset.Update End With Set main.DataGrid1.datasource = Adodc2 main.DataGrid1.Refresh 4.6 公寓资产

公寓资产可以及时对公寓里进出财务进行统计,以免遗忘,造成不必要的损失或不必要的麻烦,它的实现方法基本同上面的卫生记录的添加,相对比来说比上面的简单一些。不足的是目前只做出了入库管理,对于出库记录还没有实现。4.6.1公寓资产添加设置效果图

[10]...>>

图4.12公寓资产添加效果图 4.6.2 界面制作与实现方法 日期的设置同上面一样,只读属性。公寓名称与寝室名称要人工输入,没有选择,这是因为考虑到它不会像卫生记录那样每天要添加一次,每次要添加很多,所以为了减少系统进程,它没有使用combo,没有在窗体中进行加载。窗体中的数量与单价在填写之后会自动把总价格计算出来,类似于上图中的得分一样。部分代码如下: If Text5.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Then MsgBox ”请输入详细信息!“, , ”提示“ Else With Adodc1.Recordset.AddNew.Recordset.Fields(0).Value = Text1.Text.Recordset.Fields(1).Value = Text8.Text.Recordset.Fields(2).Value = Text2.Text.Recordset.Fields(3).Value = Text3.Text.Recordset.Fields(4).Value = Text4.Text.Recordset.Fields(5).Value = Text5.Text.Recordset.Fields(6).Value = Text6.Text.Recordset.Fields(7).Value = Text7.Text.Recordset.Update End With Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh Text2.Text = ”“ Text3.Text = ”“ Text4.Text = ”“ Text5.Text = ”“ Text6.Text = ”“ Text7.Text = ”“ End If 4.7记录查看

记录查看可以让你对已录入的记录进行各种符合条件的查找,显示符合条件的记录。这里主要包括四个方面的查看:卫生查看、请假查看、违规查看、资产查看。下面分别介绍。4.7.1 卫生查看 ①界面效果图

图4.13卫生查看效果图 ②界面制作与实现方法

这是一个比较简单的窗体操作。看起来精简、小巧。它主要的功能是对已经录入的卫生记录进行符合条件的查询。在查询类别中选择可以选择全部查看以及按日期查看。查看全部即显示所有记录,选择按日期查看后在下面的列表框中选择所要查看的日期,点击确定后即可以看到该日期的记录。

在进行查询前,要对所操作的表进行绑定,代码如下: Dim s As String provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”weigui“.Refresh End With 日期后面的下拉列表框中可以显示出所有已经录入记录的日期,它是通过对当前表进行分类查询后得到的结果,然后将其添加在combo中,实现代码如下: s = ”select distinct 日期 from weisheng“ With Adodc2.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = s.Refresh End With

For I = 1 To Adodc2.Recordset.RecordCount Combo1.AddItem(Adodc2.Recordset.Fields(”日期“))Adodc2.Recordset.MoveNext Next 查看全部,即把当前表中的记录全部赋给当前用来显示的表格,按日期查看,则是在表中先进行查询,然后对结果进行重绑定,在赋值。它们的判断主要是通过单选框的选取来完成的,实现方法如下: s = Combo1.Text If Option1.Value = True Then Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh ElseIf Option2.Value = True Then sql = ”select * from weisheng where 日期=''“ & Trim(s)& ”''“ With Adodc3.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = sql.Refresh End With Set main.DataGrid1.datasource = Adodc3 main.DataGrid1.Refresh End If Unload Me 4.7.2其它记录查看 在记录查看中还有其它三项查看方式,分别是请假、违规、资产三项记录查看。它们的实现方法与窗体与上面的卫生查看基本相同。①请假查看

图4.14请假查看效果图

用它可以对当前所有记录以及有效日期内的记录进行查看。代码如下:

Dim sql As String Dim s As String s = Combo1.Text If Option1.Value = True Then Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh ElseIf Option2.Value = True Then sql = ”select * from qingjia where 日期=''“ & Trim(s)& ”''“ With Adodc3.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = sql.Refresh End With Set main.DataGrid1.datasource = Adodc3 main.DataGrid1.Refresh End If Unload Me 在窗体的load中要设置已经添加的日期,需要对表进行条件查询,代码如下: s = ”select distinct 日期 from qingjia“ With Adodc2.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = s.Refresh End With For I = 1 To Adodc2.Recordset.RecordCount Combo1.AddItem(Adodc2.Recordset.Fields(”日期“))Adodc2.Recordset.MoveNext Next ②违规查看

图4.15违规查看效果图

目前此类功能还不是十分理想,有些查看方式会在以后的程序中进行升级。在Load事件设置了窗体运行时所有需要的东西。代码如下:

Option1.Value = True Dim s As String provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”weigui“.Refresh End With s = ”select distinct 日期 from weigui“ With Adodc2.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = s.Refresh End With For I = 1 To Adodc2.Recordset.RecordCount Combo1.AddItem(Adodc2.Recordset.Fields(”日期“))Adodc2.Recordset.MoveNext Next 查看部分的源代码如下: Dim sql As String Dim s As String s = Combo1.Text If Option1.Value = True Then Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh ElseIf Option2.Value = True Then sql = ”select * from weigui where 日期=''“ & Trim(s)& ”''“ With Adodc3.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = sql.Refresh End With Set main.DataGrid1.datasource = Adodc3 main.DataGrid1.Refresh End If Unload Me ③资产查看

图4.16资产查看效果图

在Load事件设置了窗体运行时所有需要的东西。代码如下:

On Error Resume Next Option1.Value = True Dim s As String provider = ”provider=Microsoft.jet.oledb.4.0“ datasource = ”data source=“ & App.Path & ”DB.mdb“ With Adodc1.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdTable.RecordSource = ”zichan“.Refresh End With s = ”select distinct 日期 from zichan“ With Adodc3.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = s.Refresh End With For I = 1 To Adodc3.Recordset.RecordCount Combo1.AddItem(Adodc3.Recordset.Fields(”日期“))Adodc3.Recordset.MoveNext Next 查看部分代码如下所示: On Error Resume Next Dim sql As String Dim s As String s = Combo1.Text If Option1.Value = True Then Set main.DataGrid1.datasource = Adodc1 main.DataGrid1.Refresh ElseIf Option2.Value = True Then sql = ”select * from zichan where 日期=''“ & Trim(s)& ”''“ With Adodc2.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = sql.Refresh End With Set main.DataGrid1.datasource = Adodc2 main.DataGrid1.Refresh End If Call dx1 Unload Me 4.8记录删除

删除是一个数据库软件中最基本的操作之一。在本软件的工具栏中也有一个删除按钮,其功能也是将所找到的记录删除,但是它每次只能删除一条记录,且此删除记录的前提是在右侧的显示中容易找出,即记录不多的情况下使用。如果一旦数据记录很多,一条条查找比较不方便时,即可以使用此窗体进行删除。这里的删除也有四个窗体,分别为卫生删除、请假删除、违规删除、资产删除。下面分别介绍。4.8.1 卫生删除 ①效果图

图4.17卫生删除效果图

②界面制作与实现方法

这个界面总体来说各个控件比较简单,但是作为一个删除操作,它已经连接到了数据库,与数据库的表相联。且有三种删除记录方式可以选择。默认为单条删除,选择此项后需要在日期中选择所删除记录的添加日期,以及所在的公寓与寝室,当这三条全部符合要求后,在表中进行查找,找到后确认删除。选择批量删除后,在下面只有一个日期可以选择,这样将会把所选日期内的所有记录都将删除掉,所以称其为批量删除。全部即是把当前表清空,全部删除掉,建议使用此操作前对当前数据库进行备份处理,否则数据将不会恢复。首先要进行数据库连接,如上面例子所示,这里就不在介绍,接下来要对本窗体中的日期进行加载,如下所示: s = ”select distinct 日期 from weisheng“ With Adodc2.Mode = adModeReadWrite.ConnectionString = provider & ”;“ & datasource.CommandType = adCmdText.RecordSource = s.Refresh End With For I = 1 To Adodc2.Recordset.RecordCount Combo1.AddItem(Adodc2.Recordset.Fields(”日期“))Combo2.AddItem(Adodc2.Recordset.Fields(”日期“))Adodc2.Recordset.MoveNext Next Option1.Value = True Frame3.Visible = True Frame5.Visible = False Frame6.Visible = False 在单条删除前要确定所有条件符合要求,单条删除操作的代码主要部分如下:

If(MsgBox(”你真的想删除日期为

“ & Combo1.Text & ”

公寓为

“ & Text1.Text & ”

寝室为

“ & Text2.Text & ” 的记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Refresh Adodc1.Recordset.ActiveConnection.Execute ”delete from weisheng where 日期=''“ &

Trim(s)& ”''and 公寓=''“ & Trim(Text1.Text)& ”''and 寝室=''“ & Trim(Text2.Text)& ”''“

'', , adExecuteNoRecords Adodc1.Recordset.Update Combo1.Text = ”“ Text1.Text = ”“ Text2.Text = ”“ MsgBox ”删除成功“, , ”系统提示“ End If Unload Me 当选择某一日期后进行批量删除代码如下:

If(MsgBox(”你真的想删除日期为

“ & Combo2.Text & ” 的记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Refresh Adodc1.Recordset.ActiveConnection.Execute ”delete from weisheng where 日期=''“ & Trim(Combo2.Text)& ”''“ Combo2.Text = ”“ MsgBox ”删除成功“, , ”系统提示“ End If Unload Me 清空数据表代码为:

If(MsgBox(”你真的想删除所有的记录吗?一旦删除即不可恢复“, vbOKCancel, ”系统提示“))= vbOK Then For I = 1 To Adodc1.Recordset.RecordCount Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext Next I End If MsgBox ”删除成功“, , ”系统提示“ Unload Me 4.8.2请假记录 ①效果图

[10]...>>

图4.18请假记录删除效果图 ②界面制作与实现方法

这个窗体与上面不同的是多了一个姓名条件,其它的都基本一致。由于在一个公寓中会有很多人要得名,但是在某一公寓某一寝室中只会有一个人,这也是一个公寓分配住宿人员时的基本标准,因为这样也便于公寓本身的管理。此删除窗体只有单条删除与上面不同,单条删除部分代码如下:

If(MsgBox(”你真的想删除日期为

“ & Combo1.Text & ”

公寓为

“ & Text1.Text & ”

寝室为

“ & Text2.Text & ”

姓名为

“ & Text3.Text & ” 的请假记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Refresh Adodc1.Recordset.ActiveConnection.Execute ”delete from qingjia where 日期=''“ & Trim(s)& ”''and 公寓=''“ & Trim(Text1.Text)& ”''and 寝室=''“ & Trim(Text2.Text)& ”''and 姓名=''“ & Trim(Text3.Text)& ”''“

'', , adExecuteNoRecords Adodc1.Recordset.Update Combo1.Text = ”“ Text1.Text = ”“ Text2.Text = ”“ MsgBox ”删除成功“, , ”系统提示“ End If 4.8.3 违规删除 ①效果图

图4.19违规记录删除效果图 ②界面制作与实现方法

违规删除操作与请假删除操作基本一致,不同之处只是在于后台对不同的表进行处理,前台界面大体相同。其实现方法与上现的也差不太多,这里就不在叙述。单条删除记录: Dim sql As String Dim s As String Dim panduan As Boolean If Combo1.Text = ”“ And Text1.Text = ”“ And Text2.Text = ”“ Then MsgBox ”请输入删除条件!“, , ”提示“ Exit Sub End If s = Combo1.Text If(MsgBox(”你真的想删除日期为

“ & Combo1.Text & ”

公寓为

“ & Text1.Text & ”

寝室为

“ & Text2.Text & ”

姓名为

“ & Text3.Text & ” 的违规记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Refresh Adodc1.Recordset.ActiveConnection.Execute ”delete from weigui where 日期=''“ & Trim(s)& ”''and 公寓=''“ & Trim(Text1.Text)& ”''and 寝室=''“ & Trim(Text2.Text)& ”'' and 姓名=''“ & Trim(Text3.Text)& ”''“

'', , adExecuteNoRecords Adodc1.Recordset.Update Combo1.Text = ”“ Text1.Text = ”“ Text2.Text = ”“ MsgBox ”删除成功“, , ”系统提示“ End If Unload Me 成批删除记录:

If(MsgBox(”你真的想删除日期为

“ & Combo2.Text & ” 的记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Refresh Adodc1.Recordset.ActiveConnection.Execute ”delete from weigui where 日期=''“ & Trim(Combo2.Text)& ”''“ Combo2.Text = ”“ MsgBox ”删除成功“, , ”系统提示“ End If Unload Me 删除所有记录:

If(MsgBox(”你真的想删除所有的记录吗?一旦删除即不可恢复“, vbOKCancel, ”系统提示“))= vbOK Then For I = 1 To Adodc1.Recordset.RecordCount Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext Next I End If MsgBox ”删除成功“, , ”系统提示“ Unload Me 4.8.4 资产删除 ①效果图

图4.20资产删除效果图 ② 界面制作与实现方法

与卫生记录删除不同的是寝室改为了名称。值得注意的是,此处公寓与名称都要人工输入,所以在输入的时候要注意不要有多余字符,否则会出错删除不掉的情况。单条删除部分源码如下:

If(MsgBox(”你真的想删除日期为

“ & Combo1.Text & ”

公寓为

“ & Text1.Text & ”

名称为

“ & Text2.Text & ” 的资产记录吗?“, vbOKCancel, ”系统提示“))= vbOK Then Adodc1.Refresh Adodc1.Recordset.ActiveConnection.Execute ”delete from zichan where 日期=''“ & Trim(s)& ”''and 公寓=''“ & Trim(Text1.Text)& ”''and 名称=''“ & Trim(Text2.Text)& ”''“

'', , adExecuteNoRecords Adodc1.Recordset.Update Combo1.Text = ”“ Text1.Text = ”“ Text2.Text = ”“ MsgBox ”删除成功“, , ”系统提示“ End If 4.9值班记录

值班记录这项可以说是此软件的一个新增功能。它的界面小巧,并且它可以让值班人员记录前天发生的一些事情,字数在1000字左右。可以说是一个小型的日记本。4.9.1 值班记录 ①值班记录效果图

图4.21值班记录效果图 ② 实现思想与功能

此窗体的功能以及其源代码是经过修改之后而形成的,源文件是一个电子记事本,发现后经过修改后做出一个日记本。

在上面的日期后面的文本框中,你可以输入如窗口标题后面所示的日期格式后,点击查看,即可以查看到所选日期的详细记录。这是一种查询方法,当然你也可以用右面简单的上一条与下一条进行快速查看,但是它只能查看当日日期起开始的记录,如果与你所想要查看的日期相差很远,那么你就需要使用第一种方法了。这个日记本还支持修改与删除功能。当你想编辑或删除某一日期的时候时,你需要用查看方法找到该记录,然后对当前记录使用编辑或删除即可完成操作。删除后,记录即不可恢复,且此日记目前还没有备份功能,慎重操作。

如果你今天值班,还没有写值班记录,那么你可以点击增加按钮,开始写当日的值班记录,说明的是,每天只可以写一次记录。当你写完今天记录后,在点击增加时会提示你今日已写完。但是你可以对今日记录进行编辑修改。

本程序源码较为复杂,主要都是对文件进行操作,并没有把记录添加到数据库中,所以不支持备份操作,且本窗体中的操作程序还用到了一个模块。部分代码如下: 查看上一条记录:

If giCurrentRecord > 1 Then

giCurrentRecord = giCurrentRecord1

Form_Load

End If 4.9.2 增加记录 ①增加记录效果图

图4.22增加记录效果图 ② 实现思想与程序源码

日期后显示当前日期,但是可以修改。每篇记录的字数要求在1000字以内。支持对当前字符输入的统计,确定完成本日记录后,点击保存即可。部分代码如下:

Dim bSaved As Boolean, bCF If txtDate = ”“ Or txtMemo = ”“ Then Exit Sub '' 如果记录未填,则退出 If riji.Tag = ”addnew“ Then

If giRecordCount >= 1 Then

''新增时,检查记录是否重复

gsSql = frminput.txtDate

bCF = FindData(gsSql)

If bCF Then

MsgBox ”今天你已经写过日记了!“, vbExclamation + vbOKOnly, ”每日一记“

txtMemo.SetFocus

Exit Sub

End If

End If

giRecordCount = giRecordCount + 1

bSaved = WriteData()ElseIf riji.Tag = ”modify“ Then ''

bSaved = ModifyData()End If If bSaved = True Then

AddNext = MsgBox(”保存完毕!“, vbExclamation + vbOKOnly, ”每日一记“)End If Unload Me 由于此段代码中用到了一个模块,在模块中定义了很多过程,各过程实现功能及代码如下所示:

读取数据:

Public Sub ReadData(curRecord As Integer)''读取数据 On Error Resume Next Dim strcaption$

riji.txtDate = goDiarys(curRecord).fldDate

riji.txtMemo = goDiarys(curRecord).fldMemo

strcaption = ”每日一记

[“ & Date & ”] “ & Time & ” WeekdayName(Weekday(Date))& “ 记录:” & giCurrentRecord & “/” & giRecordCount

riji.Caption = strcaption End Sub 查询数据:

Public Function FindData(sql As String)As Boolean ''查询数据 On Error Resume Next

Dim I%

For I = 1 To giRecordCount

If goDiarys(I).fldDate = sql Then

giCurrentRecord = I

FindData = True

Exit For

End If

Next

ReadData giCurrentRecord End Function 新增数据:

Public Function WriteData()As Boolean ''新增数据 On Error Resume Next

Dim iFreefile%, I%

iFreefile = FreeFile()

Open gsPath & “DATA.DAT” For Random As #iFreefile Len = en(goDiary)

ReDim Preserve goDiarys(giRecordCount)

goDiarys(giRecordCount).fldDate = frminput.txtDate

goDiarys(giRecordCount).fldMemo = frminput.txtMemo

goDiary = goDiarys(giRecordCount)

Put #iFreefile, giRecordCount, goDiary

giCurrentRecord = giRecordCount

ReadData(giCurrentRecord)

Close #iFreefile

WriteData = True

“ & End Function 修改数据:

Public Function ModifyData()As Boolean ''修改数据 On Error Resume Next

Dim iFreefile%, I%

iFreefile = FreeFile()

Open gsPath & ”DATA.DAT“ For Random As #iFreefile Len =len(goDiary)

goDiarys(giCurrentRecord).fldDate = frminput.txtDate

goDiarys(giCurrentRecord).fldMemo = frminput.txtMemo

goDiary = goDiarys(giCurrentRecord)

Put #iFreefile, giCurrentRecord, goDiary

ReadData(giCurrentRecord)

Close #iFreefile

ModifyData = True End Function 删除数据:

Public Sub DeleteData()''删除数据 On Error Resume Next

Dim iFreefile%, I%, J%

I = 1: J = 1

iFreefile = FreeFile()

Open gsPath & ”temp.dat“ For Random As #iFreefile Len = Len(goDiary)

goDiarys(giCurrentRecord).fldMemo = ”IWantToKillIt*“ & goDiarys(giCurrentRecord).fldMemo ''加删除标记

For I = 1 To giRecordCount

''无删除标记的记录保存到临时文件,TEMP.DAT

If Left(goDiarys(I).fldMemo, 14)<> ”IWantToKillIt*“ Then

goDiary = goDiarys(I)

Put #iFreefile, J, goDiary

''在此必须有I,J两个变量,因为使用二进制保存文件,J = J + 1

''从1开始到后面,中间如有间隔就会出现乱码

End If

Next

Close #iFreefile

Kill gsPath & ”data.dat“

Name gsPath & ”temp.dat“ As gsPath & ”data.dat“

riji.txtDate = ”“

riji.txtMemo = ”“ End Sub 说明:由于本人能力有限,对文件部分还不算是很了解,这个功能的实现主要是借用了网上的一个电子记事本。本人只是对其做了一些修改,做成了这个每日一记,但个人认为此功能还算是可以。4.10 Help制作 Help文档的制作也标志着本软件基本完成。制作help文档需要一个专业制作软件,本人使用的是破解版的QuickCHM,此软件无论在功能上还在是操作上用起来都是很方便。QuickCHM软件的界面及其使用如下:

[10]...>>

图4.23 QuickCHM软件的界面 它属于一个傻瓜型的制作软件,利用它可以快速的制作出各种你所需要的帮助文档。但是如果想制作出如下图所示的文档,那么需要使用制作网页的软件把内容先做成html形式,然后在用此软件进行加载,最后生成chm文档。在制作前要制作出相差的网页形式,本人使用Dreamweaver。用它先做出要用到的相差页面,大约一共为十个。然后在用QuickCHM把所有的网页添加进去,然后对QuickCHM进行各项设置,最后点击编译即可生成help文档,后缀为.Chm。在本管理软件中可以按F1或点击帮助菜单下的帮助主题即可显示该帮助文档,调用的过程也很简单,两条语句即可以实现。代码如下:

在主窗体的load事件中添加下面语句: App.HelpFile = App.Path & ”help.chm“ 在帮助主题的click事件中添加下面语句: SendKeys ”{F1}" 上面这两条语句即可以实现调用帮助文档的功能。

第五章 系统测试

编写出的各功能模块需要进行测试,对于模块化应用程序,软件开发的最后一部分便是不断的测试程序最终编译成可执行的.exe文件,该阶段主要对系统的正确性及完整性等方面进行测试。主要进行:功能确认测试、运行测试、健壮性测试、安全性测试以及查错方面的测试等,系统测试的测试人员由测试组成员(或质量保证人员)或测试组成员与用户共同测试,在整个系统开发完成,即将交付用户使用前进行。在这一阶段,对整个系统进行测试,系统测试结束后我们应该打软件打包,使其脱离VB的环境下也能正常运行。打包应将所有程序需要的文件加载进去,如数据库(DB.MDB),每日一记和帮助的文件都要进行加载。在调试程序过程中,由于某些内在的错误影响程序的运行,在采用上述调试方法对程序进行调试后,程序运行情况良好,达到了预期的设计目标,基本上满足了用户的需要。

总结

到目前为止,学生公寓管理软件基本开发完毕,软件界面美观,运行时间短,执行功能强,其功能基本符合用户需求。能够完成对学生公寓中学生基本资料的存储和查询,并提供数据转换、数据备份等系统维护功能,可以使用查找、修改、添加和删除对学生公寓管理软件的操作等。

由于本人知识有限,又是刚初学软件,时间比较仓促,又缺乏经验,必定有不足和不周之处,希望各位老师给予指导,本人将继续完善修改,使此系统能更好地发挥性能。

参考文献

Visual Basic 程序设计

王栋

清华大学出版社 Visual Basic 高级编程宋伟

吴建国

清华大学出版社 Visual Basic 6.0 入门与提高 戴红 陈哲 清华大学出版社 Visual Basic 6.0应用指南

何斌 王运坚

冯峰 刘醒

人民邮电出版社

Visual Basic 高级编程技术 陈 明

杨劲松

北京希望电子出版社

Visual Basic实用教程

陈弘原

中国水利水电出版社

数据库系统概论

萨师煊、王珊 高等教育出版社

软件系统开发技术

潘锦平施小姚 西安电子科技大学出版

<<

[11]

学生公寓管理系统
TOP