django宿舍管理系统-毕业设计源码47993

目  录

摘要

1 绪论

1.1 研究背景与研究意义

1.2国内外研究现状

1.3本文研究内容

1.4论文结构与章节安排

2 相关开发技术介绍

2.1 Python编程语言

2.2 Django框架

2.3 MySQL数据库

3 宿舍管理系统需求分析与设计

3.1 可行性分析

3.1.1 技术可行性分析

3.1.2 经济可行性分析

3.1.3 操作可行性分析

3.2 系统需求分析

3.2.1 功能性分析

3.2.2 非功能性分析

3.3  系统流程分析

3.3.1数据增加流程

3.3.2 数据修改流程

3.3.3 数据删除流程

3.4  宿舍管理系统设计

3.4.1 系统功能模块设计

3.4.2 数据库概念结构设计

3.4.3 数据库逻辑结构设计

4 宿舍管理系统的技术实现

4.1 Python编程语言在系统中的应用

4.2 数据库访问层的实现

4.3 用户登录模块的实现

4.4用户资料修改模块的实现

4.5系统用户管理模块的实现

4.6 宿舍信息管理模块的实现

4.7 通知公告管理模块的实现

5系统测试

5.1 测试目的

5.2 测试用例

5.2.1用户登录功能测试

5.2.2创建数据测试 

5.2.3修改数据测试 

5.2.4查询数据测试 

5.3 测试结果

结论

参考文献

致  谢

摘要

当今校园内的学生宿舍,其数据量大,各种信息管理内容复杂,查询和管理学生信息和校园内的宿舍信息等工作由人工完成将是很累的,不仅浪费了许多人力物力资源,而且还很容易出现差错,有一个软件对学生宿舍管理不仅节省了人力物力,而且对各种信息的把握和操作也更加方便。本论文主要论述了如何基于Django开发一个宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述宿舍管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。

宿舍管理系统的主要使用者分为管理员和学生用户,实现功能包括后台管理员:系统用户、通知公告管理、宿舍信息管理、退宿信息管理、报修信息管理、费用信息管理;学生用户:通知公告管理、宿舍信息管理、退宿信息管理、报修信息管理、费用信息管理等功能。由于本网站的功能模块设计比较全面,所以使得整个宿舍管理系统信息管理的过程得以实现。

本宿舍管理系统是以Django这一框架为基础,采用Python的编程语言,使用了MySQL这一数据库进行开发的,可以实现本宿舍管理系统管理的信息化,可以方便管理员进行更加方便快捷的管理。

关键词:Python;Django;宿舍管理系统;MySQL

Abstract

The student dormitories on campus today have a large amount of data and complex information management content. It would be tiring to manually query and manage student information and dormitory information on campus. This not only wastes a lot of human and material resources, but also makes it easy to make mistakes. Having a software for managing student dormitories not only saves manpower and material resources, but also makes it more convenient to grasp and operate various information. This paper mainly discusses how to develop a dormitory management system based on Django. The system will strictly follow the software development process for each stage of work, and the object-oriented programming concept will be used for project development. In the introduction, the author will discuss the current background of the dormitory management system and the purpose of system development. Subsequent chapters will strictly follow the software development process to analyze and design the system at each stage.

The main users of the dormitory management system are divided into administrators and student users, and the implemented functions include backend administrators: system users, notification and announcement management, dormitory information management, check-out information management, repair information management, and expense information management; Student users: functions such as notification announcement management, dormitory information management, check-out information management, repair information management, and expense information management. Due to the comprehensive design of the functional modules on this website, the entire process of information management in the dormitory management system can be realized.

This dormitory management system is based on the Django framework, using Python programming language and MySQL database for development. It can achieve information management of this dormitory management system and facilitate administrators to manage more conveniently and quickly.

Keywords:Python; Django; Dormitory management system; MySQL

1 绪论

1.1 研究背景与研究意义

随着高校学生人数的不断增加以及宿舍楼层的扩建,宿舍管理面临着越来越大的压力。传统的宿舍管理方式面临着许多问题,如人工管理、信息不透明、效率低下等问题。因此,建立一种高效、智能化的宿舍管理系统,对于提高宿舍管理的效率和品质,提高学生生活质量,具有十分重要的意义。

宿舍管理系统可以实现宿舍管理全过程的信息化[1],包括学生入住申请、宿舍分配、卫生检查、设施维修、费用缴纳等环节,能够实现对学生宿舍情况的全面监控管理,并及时反馈信息。通过系统中智能识别和分析数据,可以更加准确地预测和解决宿舍管理过程中的问题,如卫生、设施维修等,提高宿舍管理的效率和质量,为学生提供更加安全、舒适的校园生活环境。同时,对学校相关管理部门的工作也将带来便利和高效。

因此,建立一套高效、智能化的宿舍管理系统具有非常重要的研究意义[2]。

1.2国内外研究现状

宿舍管理系统是指利用信息技术来管理大学或其他机构的宿舍设施和居住在其中的学生或员工的行为、活动和数据的系统[3]。它能够提高宿舍管理效率,提升居住环境质量,保障住宿学生或员工的安全和福利。目前随着信息化技术的发展和普及,宿舍管理系统在国内外的研究与应用逐渐增加。

在中国,许多大学和高等学府都提出了宿舍管理系统的需求,并开始尝试引入信息化技术来改进宿舍管理。一些研究性文章和论文开始关注宿舍管理系统的设计、应用和效果评估。许多大学和科研机构都在进行有关宿舍管理系统的实践探索和研究工作,积极探索如何利用智能化和物联网技术[4]来提升宿舍管理效率、加强安全保障、改善居住环境等方面的应用。

在国外,宿舍管理系统的研究相对更加成熟和广泛。许多高校和宿舍管理机构已经开始采用各种信息化技术来管理宿舍,实现宿舍出入管理、设备监控、学生挂靠管理、安全预警等功能。一些研究性机构也在进行宿舍管理系统的研究,探讨如何通过数据挖掘、人工智能等技术[5]来优化宿舍管理系统的效率和服务质量。

总体来看,宿舍管理系统的研究已经成为国内外高校和科研机构关注的焦点之一,未来随着信息技术的不断进步和宿舍管理需求的增长,宿舍管理系统的研究与应用将有更广阔的发展空间[6]。

1.3本文研究内容

本研究旨在设计并开发一套智能化的宿舍管理系统,实现对大学宿舍的全面管理,从而提高宿舍管理的效率和质量。

(1)系统架构设计:设计系统的整体架构,包括前端界面、后台数据库、中间业务逻辑等模块的搭建和关联。

(2)功能模块设计:确定系统的具体功能模块,包括用户管理、通知公告管理、宿舍信息管理、退宿信息管理、报修信息管理、费用信息管理等功能。

(3)技术选型:选择合适的技术工具,包括数据库、前端框架、后台语言等,以确保系统的稳定性和扩展性。

(4)系统测试:进行系统的功能测试、性能测试、兼容性测试等,保证系统的稳定运行和用户体验。

1.4论文结构与章节安排

论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分测试记录,论文主要架构如下:

第一章:绪论。主要介绍了选题的背景意义、国内外研究现状以及本文的主要研究内容和章节安排。

第二章:相关技术介绍。主要对本系统使用的相关技术和开发环境进行介绍。

第三章:系统需求分析和总体设计。主要从系统的用户、功能等方面进行需求分析;同时对系统框架、系统功能模块、数据库进行功能设计。

第四章:系统实现。主要介绍了系统框架搭建、系统界面的实现。

第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试。

第六章:结论。

 2 相关开发技术介绍

2.1 Python编程语言 

Python是一种高级编程语言[7],以其简洁、易读和易于学习的特点而受到广泛欢迎。作为一门通用编程语言,Python在各个领域都有广泛的应用,包括Web开发、数据分析、人工智能、科学计算等。Python的设计理念注重代码的可读性和简洁性,使得开发者可以更加专注于问题的解决而不必过多关注语法细节。同时,Python拥有丰富的标准库和活跃的社区,这为开发者提供了大量的工具和资源。Python还支持面向对象编程、函数式编程以及模块化开发,使得代码的组织和复用变得更加便捷[8]。此外,Python还具备良好的跨平台性,可以在多种操作系统上运行。总之,Python的简洁性、可读性和强大的生态系统使其成为众多开发者的首选编程语言。

2.2 Django框架

Django是高水准的Python编程语言驱动的一个开源模型·视图·控制器风格的Web应用程序框架,它起源于开源社区[9]。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性[10]。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架[11]。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式[12]。

2.3 MySQL数据库

MySQL是一种广泛使用的开源关系型数据库管理系统[13]。它具有高性能、可靠性和可扩展性等优点,被广泛应用于Web应用程序和大型企业级系统中。MySQL的核心特性包括关系型数据库管理系统的基本概念、数据模型和类型、SQL语言支持、事务处理和并发控制,以及安全性和权限管理。其架构由连接管理器、查询解析器和优化器、存储引擎、日志系统和恢复机制等组件构成。MySQL在实际应用中的优势体现在高性能、可伸缩性、可靠性、灵活性和易用性等方面[14]。然而,MySQL也面临着一些局限性和挑战,如大规模数据处理的限制、复杂查询和性能优化、高并发和负载均衡,以及安全性和数据保护等方面。为了最大化MySQL的性能和效益,最佳实践和性能优化建议涉及数据库设计和规范化、索引设计和查询优化、缓存和分区技术,以及负载测试和容量规划等方面。总之,通过深入研究MySQL的描述,我们可以更好地理解其工作原理和适用场景,并为数据库开发人员和管理员提供有价值的参考[15]。

针对本文中设计的基于Django的宿舍管理系统在实际的实现过程中,最终选择MySQL数据库的主要原因在于在系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的MySQL来对宿舍管理系统后台数据进行存储操作。

数据库管理系统的总体结构图如下图所示。

图2-1 数据库组成结构

3 宿舍管理系统需求分析与设计

系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。

3.1 可行性分析

系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。

3.1.1 技术可行性分析

宿舍管理系统设计与实现是一个基于Web的信息管理平台,我们在实现这个系统所采用的技术方案是基于Python语言,Django框架,MySQL数据库,在大学的学习中这两门课程都已经学过,而且自己也用这些技术开发过小的项目,在平时的课程设计以及作业也经常用到Python和MySQL,在技术上实现自己的自主开发是可行的。

3.1.2 经济可行性分析

在开发宿舍管理系统并不需要投入太多,开发工具、服务器、数据库等,都可以通过网络搜索、下载、安装,只需要一台普通的计算机就可以完成操作,而且在系统功能规划上通过走访调查目前用户对宿舍管理系统的需求,了解它们对系统具体实现的功能需求,然后进行设计开发,不存在任何开销,因此系统的开发在经济方面是可行的

3.1.3 操作可行性分析

操作方面主要考虑的是用户在使用以及管理人员在管理的时候,是否简单可行,没有任何计算机基础的用户能否使用,开发的宿舍管理系统在设计的时候秉承简单易学的理念,在用户进入系统后都会有固定的导航按钮,只要认字就可以操作完成,而且管理员在管理方面也只需简单的增删改查即可完成,因此在操作上也是可行的

3.2 系统需求分析

3.2.1 功能性分析

宿舍管理系统的主要功能模块分为学生用户模块和管理员模块这两大部分。

学生用户通过管理员添加的账号密码登录系统,进入系统后可以对个人信息和登录密码进行修改管理。学生用户可以通过“宿舍信息管理”模块查看管理员分配的宿舍信息,可以在此页面查看到楼栋名称、宿舍名称、学生用户、学生姓名、学生性别、学生学号、学生电话、学生床位、宿舍介绍等详细信息,可以在“宿舍信息管理”列表页面进行退宿申请和报修申请。并且可以对宿舍的费用信息进行查询和支付;也可以查看到管理员推送的通知公告信息。

图3-1就是学生用户角色的用例展示。

图3-1 宿舍管理系统学生用户角色用例图

管理员进入系统后主要实现对学生用户的账户信息添加管理;可以添加、查询、重置和删除系统的通知公告信息。管理员主要对学生的宿舍信息进行添加和管理,并且可以对与之相关的退宿申请、报修申请和费用信息进行添加设置;同时可以审核处理学生用户的退宿信息和报修信息,对费用信息进行管理。

图3-2就是管理员角色的用例展示。

图3-2 宿舍管理系统管理员角色用例图

3.2.2 非功能性分析

宿舍管理系统的非功能性需求比如宿舍管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:

2-1宿舍管理系统非功能需求表

安全性

主要指宿舍管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指宿舍管理系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响宿舍管理系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着宿舍管理系统的页面展示内容进行操作,就可以了。

可维护性

宿舍管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

3.3  系统流程分析

业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。

3.3.1数据增加流程

用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图2-3显示的就是在增加数据时的流程。

图3-3 数据增加流程图

3.3.2 数据修改流程

数据修改时的流程和上面介绍的数据增加时的流程差不多,如图3-4所示。

图3-4  数据修改流程图

3.3.3 数据删除流程

如果系统里面存在一些没有用的数据的话相关的管理人员还可以对这些数据进行删除,图3-5就是数据删除时的流程图。

图3-5 数据删除流程图

3.4  宿舍管理系统设计

3.4.1 系统功能模块设计

系统功能模块的设计就是把系统具体要实现哪些功能,功能如何划分做一个系统的架构,以模块图的方式展示出来,方便我们进行功能得罗列以及涉及。在系统的功能方面,项目分成了管理员+用户两个模块,每个模块登录进去对应相应的功能,其总体设计模块图如图3-6所示。

图3-6 宿舍管理系统功能模块图

3.4.2 数据库概念结构设计

下面是整个宿舍管理系统中主要的数据库表总E-R实体关系图。

图3-2 宿舍管理系统总E-R关系图

3.4.3 数据库逻辑结构设计

通过上一小节中宿舍管理系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表check_out_information (退宿信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

check_out_information_id

int

10

0

N

Y

退宿信息ID

2

building_name

varchar

64

0

Y

N

楼栋名称

3

dormitory_name

varchar

64

0

Y

N

宿舍名称

4

student_users

int

10

0

Y

N

0

学生用户

5

student_name

varchar

64

0

Y

N

学生姓名

6

student_gender

varchar

64

0

Y

N

学生性别

7

student_id

varchar

64

0

Y

N

学生学号

8

student_phone_number

varchar

64

0

Y

N

学生电话

9

student_beds

varchar

64

0

Y

N

学生床位

10

reason_for_check_out

text

65535

0

Y

N

退宿原因

11

examine_state

varchar

16

0

N

N

未审核

审核状态

12

examine_reply

varchar

16

0

Y

N

审核回复

13

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

14

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表cost_information (费用信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cost_information_id

int

10

0

N

Y

费用信息ID

2

building_name

varchar

64

0

Y

N

楼栋名称

3

dormitory_name

varchar

64

0

Y

N

宿舍名称

4

student_users

int

10

0

Y

N

0

学生用户

5

student_name

varchar

64

0

Y

N

学生姓名

6

student_id

varchar

64

0

Y

N

学生学号

7

student_phone_number

varchar

64

0

Y

N

学生电话

8

student_beds

varchar

64

0

Y

N

学生床位

9

cost_name

varchar

64

0

Y

N

费用名称

10

cost_amount

int

10

0

Y

N

0

费用金额

11

fee_details

text

65535

0

Y

N

费用详情

12

pay_state

varchar

16

0

N

N

未支付

支付状态

13

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表dormitory_information (宿舍信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

dormitory_information_id

int

10

0

N

Y

宿舍信息ID

2

building_name

varchar

64

0

Y

N

楼栋名称

3

dormitory_name

varchar

64

0

Y

N

宿舍名称

4

student_users

int

10

0

Y

N

0

学生用户

5

student_name

varchar

64

0

Y

N

学生姓名

6

student_gender

varchar

64

0

Y

N

学生性别

7

student_id

varchar

64

0

Y

N

学生学号

8

student_phone_number

varchar

64

0

Y

N

学生电话

9

student_beds

varchar

64

0

Y

N

学生床位

10

dormitory_introduction

text

65535

0

Y

N

宿舍介绍

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表notification_announcement (通知公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notification_announcement_id

int

10

0

N

Y

通知公告ID

2

announcement_number

varchar

64

0

Y

N

公告编号

3

announcement_title

varchar

64

0

Y

N

公告标题

4

announcement_date

date

10

0

Y

N

公告日期

5

announcement_image

varchar

255

0

Y

N

公告图片

6

announcement_content

text

65535

0

Y

N

公告内容

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表repair_information (报修信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

repair_information_id

int

10

0

N

Y

报修信息ID

2

building_name

varchar

64

0

Y

N

楼栋名称

3

dormitory_name

varchar

64

0

Y

N

宿舍名称

4

student_users

int

10

0

Y

N

0

学生用户

5

student_name

varchar

64

0

Y

N

学生姓名

6

student_phone_number

varchar

64

0

Y

N

学生电话

7

repair_date

date

10

0

Y

N

报修日期

8

repair_content

text

65535

0

Y

N

报修内容

9

processing_progress

varchar

64

0

Y

N

处理进度

10

progress_description

text

65535

0

Y

N

进度描述

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表student_users (学生用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

student_users_id

int

10

0

N

Y

学生用户ID

2

student_name

varchar

64

0

Y

N

学生姓名

3

student_gender

varchar

64

0

Y

N

学生性别

4

student_phone_number

varchar

16

0

Y

N

学生电话

5

student_id

varchar

64

0

N

N

学生学号

6

examine_state

varchar

16

0

N

N

已通过

审核状态

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

4 宿舍管理系统的技术实现

宿舍管理系统的详细设计与实现主要是根据前面的宿舍管理系统的需求分析和宿舍管理系统的总体设计来设计页面并实现业务逻辑。主要从宿舍管理系统技术实现和界面实现这两部分进行介绍。

4.1 Python编程语言在系统中的应用

Python作为一种高效、易学、功能强大的编程语言,被广泛应用于系统开发中。在本宿舍管理系统中,Python应用于以下方面:

(1)后台逻辑处理:利用Python编写后台逻辑代码,实现对学生用户信息、通知公告信息、宿舍信息、退宿信息、报修信息、费用信息等数据的处理和管理;

(2)数据库交互:Python与数据库的交互性强,可以利用Python连接数据库,进行数据的增删改查操作;

(3)用户界面设计:Python的GUI库可以实现系统的用户界面设计,为用户提供友好的交互体验;

(4)数据安全保障:通过Python编写数据加密算法,确保系统数据的安全性。

4.2 数据库访问层的实现

从B/S架构的原理可知,宿舍管理系统的各个模块都需要对数据库中的数据进行操作,包括查询、写入、更新和删除等。因此,在开发各功能模块之前,我们首先需要创建一个名为"conn.Django"的文件,该文件主要用于与数据库建立连接。在程序中需要对数据进行操作时,可以通过调用语句"<?Django reqiure_once('conn.Django');?>"来引入该连接文件,从而实现对数据的操作。

4.3 用户登录模块的实现

主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入用户的功能模块,主要有用户基本信息修改,以及通知公告管理、宿舍信息管理、退宿信息管理、报修信息管理、费用信息管理和退出功能。退出功能是清除全局变量username的值,并跳回到首页。

登录流程图如下图所示。

图4-1登录流程图

图4-2用户登录界面图

用户登录关键代码如下:

 def Login(self, ctx):

        print("===================登录=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账户不存在",

            }

        }

        body = ctx.body

        password = md5hash(body["password"]) or ""

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if obj:

            user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})

            if user_group and user_group['source_table'] != '':

                user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']},                                                                       {"like": False})

                if user_obj['examine_state'] == '未通过':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未通过审核",

                        }

                    }

                    return ret

                if user_obj['examine_state'] == '未审核':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未审核",

                        }

                    }

                    return ret

            if obj["state"] == 1:

                if obj["password"] == password:

                    timeout = timezone.now()

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    ctx.request.session[token] = obj["user_id"]

                    service_select("access_token").Add(

                        {"token": token, "user_id": obj["user_id"]}

                    )

                    obj["token"] = token

                    ret = {

                        "result": {"obj": obj}

                    }

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "密码错误",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "用户账户不可用,请联系管理员",

                    }

                }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

4.4用户资料修改模块的实现

用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。用户资料修改界面如下所示。

图4-3用户资料修改界面图

资料修改关键代码如下:

 def Set(self, ctx):

error = self.Set_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("set_before", ctx, None)

if error["code"]:

return {"error": error}

query = ctx.query

if 'page' in query.keys():

del ctx.query['page']

if 'size' in query.keys():

del ctx.query['size']

if 'orderby' in query.keys():

del ctx.query['orderby']

result = self.service.Set(ctx.query, ctx.body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Set_after(ctx, result)

if res:

result = res

res = self.Events("set_after", ctx, result)

if res:

result = res

return {"result": result}

4.5系统用户管理模块的实现

管理员对系统用户的管理,包括管理员用户管理,注册用户管理、登录密码

修改,在 yhzhgl.aspx.cs 实现管理员用户的管理,包括录入、删除、修改,修改密码通过 SESSION 获取用户名,然后输入新密码,提交到 mod.aspx.cs 中,使用 sql 命令更新密码添加用户后,用户也可以使用账号和密码登录系统。

   用户管理界面如下图所示。

图4-4系统用户管理界面图

添加用户信息关键代码如下:

def Add(self, ctx):

body = ctx.body

unique = self.config.get("unique")

obj = None

if unique:

qy = {}

for i in range(len(unique)):

key = unique[i]

qy[key] = body.get(key)

obj = self.service.Get_obj(qy)

if not obj:

error = self.Add_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("add_before", ctx, None)

if error["code"]:

return {"error": error}

result = self.service.Add(body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Add_after(ctx, result)

if res:

result = res

res = self.Events("add_after", ctx, result)

if res:

result = res

return {"result": result}

else:

return {"error": {"code": 10000, "message": "已存在"}}

4.6 宿舍信息管理模块的实现

此页面的关键是编写宿舍信息,包括楼栋名称、宿舍名称、学生用户、学生姓名、学生性别、学生学号、学生电话、学生床位、宿舍介绍等。单击提交按钮以完成信息的添加。如果未写入完整的宿舍信息,例如,如果未写入楼栋名称,系统将给出相应的错误提示,并且无法成功输入。数据以概念的形式以onsubmit =“return checkForm()”的形式写入以进行检查,checkForm()函数是一种用于写入数据的不同类型的校对方法,是不是为空也是经过form表单中的οnsubmit=”return checkForm()来检查。

管理员点击左侧菜单“宿舍信息管理”,页面跳转到宿舍信息管理外观,调用后台查询所有宿舍信息。并将信息密封到数据集合List,绑定到请求对象,然后页面跳转到相应的python页面,显示出宿舍信息,单击删除按钮完成宿舍信息的删除。

宿舍信息管理流程图如下图所示。

图4-5宿舍信息管理流程图

宿舍信息界面如下图所示。

图4-6宿舍信息管理界面

宿舍信息管理关键代码如下:

def Get_list(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

if "page" in query:

config_plus["page"] = query.pop("page")

if "size" in query:

config_plus["size"] = query.pop("size")

if "orderby" in query:

config_plus["orderby"] = query.pop("orderby")

if "like" in query:

config_plus["like"] = query.pop("like")

if "groupby" in query:

config_plus["groupby"] = query.pop("groupby")

count = self.service.Count(query)

lst = []

if self.service.error:

return {"error": self.service.error}

elif count:

lst = self.service.Get_list(query,

obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

self.interact_list(ctx, lst)

return {"result": {"list": lst, "count": count}}

4.7 通知公告管理模块的实现

根据需求,需要对通知公告进行添加、删除或修改详情信息。删除或修改通知公告时,系统根据通知公告的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询通知公告状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。

添加通知公告时,会给出数据填写的页面,该页面根据填写好的通知公告编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。

通知公告管理流程图如下图所示。

图4-7通知公告管理流程图

通知公告管理界面如下图所示。

图4-8通知公告管理界面

5系统测试

5.1 测试目的

在这个产品被投入使用前,首先需要进行试用,这是重要的环节。考虑到某个部分的开发没有缺陷情况下,把各种模块拼接,也有一定概率就存在矛盾。这就好比每个人都很独特,但聚在一起就显得杂乱无章,需要保证有默契的配合。对于测试,要看它的各项内容是否契合的原则。若与最初定下的标准有一定程度上的出入,那么就需要做出一些调整,让最终的大方向朝着目标前进。

测试是为了发现在开发的程序中所存在的问题,测试这一工作是非常艰巨的,而又是非常困难的,这一部分在程序的设计中占有很大比例,可以说一个程序的开发工作量要是占据了百分至六十,那么剩下的百分之四十必然是测试这一部分,甚至更高。

5.2 测试用例

5.2.1用户登录功能测试

5-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

5.2.2创建数据测试 

在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。

创建数据用例如下表所示。

5-2 创建数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行创建数据

测试用例描述

使用者输入要创建的数据

系统入口

浏览器

步骤

预期结果

实际结果

输入完整并且格式正确的数据

提示“创建成功”,并显示所有数据

预期结果

核心位置数据但非必要位置不输入数据

提示“创建成功”,并显示所有数据

预期结果

核心数据位置不输入数据

提示“创建失败”

预期结果

5.2.3修改数据测试 

在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。

修改数据用例如下表所示。

5-3 修改数据测试用例

测试用例编号

YL_06

测试用例名称

系统使用者进行修改数据

测试用例描述

使用者对可修改的数据项进行修改

系统入口

浏览器

步骤

预期结果

实际结果

将现有数据修改成正确的数据

提示“修改成功”,并显示所有数据

预期结果

将现有数据修改成错误的数据

提示“修改失败”

预期结果

5.2.4查询数据测试 

在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。

查询数据用例如下表所示。

5-4 查询数据测试用例

测试用例编号

YL_05

测试用例名称

系统使用者进行查询数据

测试用例描述

全部查询以及输入关键词查询

系统入口

浏览器

步骤

预期结果

实际结果

界面自动查询全部

显示对应所有记录

预期结果

输入已存在且能匹配成功的关键字

显示所查询到的数据

预期结果

输入不存在的关键字

显示数据界面为空

预期结果

5.3 测试结果

在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。

结论

本文描述了宿舍管理系统设计与实现的原理和开发过程,在开发本宿舍管理系统之前,首先通过网上查询现有的宿舍管理系统功能、线下通过问卷调查的方式,了解用户对宿舍管理方面的具体需求,对系统的开发背景以及推荐系统的研究现状进行研究,设计了本宿舍管理系统具体实现的功能;确定好功能后,第二步就是开发工具的选择,在设计本宿舍管理系统的时候,采用了现下比较流程的Python语言,采用Django框架,数据的存储方面采用的是开源的MySQL数据库,接下来就是对系统需求的分析,在文中主要通过对幼宿舍管理系统进行可行性、性能、功能、用例四个方面进行分析,确定了本宿舍管理系统的具体功能,功能确定后就是对系统的设计以及,包括前后台、数据库等方面,最终完成系统的开发,对系统进行测试总结。

在开发本宿舍管理系统的过程中我成长了很多,学习到了很多书本上没有的知识,目前系统虽然已经完成,但是还有许多地方需要改进,比如界面布局方面,代码的编写方面,都可以进一步完善,由于自己专业知识的浅薄,系统做的并不是十分完美,以后我会不断进行学习,对系统进行完善,希望有机会能够投入到学校的使用当中,给同学们提供便利。

参考文献

[1]张凯睿.基于Python的学生宿舍管理系统研究[J].电脑编程技巧与维护,2023(5):90-92,109. DOI:10.3969/j.issn.1006-4052.2023.05.027.

[2]刘华明,钱焕然,毕学慧,等.高校宿舍管理系统的设计与实现[J].通化师范学院学报,2021,42(10):89-93.DOI:10.13877/j.cnki.cn22-1284.2021.10.014.

[3]贾树刚.学生宿舍管理系统的设计与实现[J].辽宁师专学报(自然科学版),2019,21(4):44-46,100.

[4]蔡俊铠,廖晓芳,朱俊宇,等.基于PHP+MySql的宿舍管理系统[J].电脑知识与技术,2020,16(36):60-63,74.

[5]涂华燕.基于MySQL宿舍管理系统数据库设计[J].电脑编程技巧与维护,2021(12):104-106. DOI:10.3969/j.issn.1006-4052.2021.12.038.

[6]冯晓春,陈艳.基于web开发的学生公寓管理系统设计与实现[J].科技创新与应用,2020(31):77-78.

[7]张翠丽,孟小艳,杨抒.基于Django框架的管理系统的设计与开发[J].计算机技术与发展,2019,29(10):63-68. DOI:10.3969/j.issn.1673-629X.2019.10.014.

[8]黄强.基于Web的高职院校学生宿舍管理系统设计与结构分析[J].无线互联科技,2022,19(20):78-80. DOI:10.3969/j.issn.1672-6944.2022.20.025.

[9]黄素青.Python编程语言在大数据分析中的运用策略[J].无线互联科技,2023,20(8):98-100. DOI:10.3969/j.issn.1672-6944.2023.08.030.

[10]李曼.基于数据库技术的高校选修课管理系统设计与实现[J].科技创新导报,2021,18(22):69-70,75. DOI:10.16660/j.cnki.1674-098X.2109-5640-4280.

[11]孙妃,李可心,刘楠等.学生宿舍管理系统的设计与实现[J].江苏科技信息,2021,38(29):40-42+75.

[12]唐瑞明,谭倩芳.高校宿舍信息化管理系统设计[J].电子技术与软件工程,2023,(04):258-262.

[13]杨芬,宋晓燕. MySQL数据库应用的课程教学分析[J].电子技术,2023,52(10):180-181.

[14]Peng Z,Liu T,Mai L. Design and Implementation of Dormitory Management System based on SSM framework[C]//2020 International Conference on Information Science,Parallel and Distributed Systems (ISPDS).  IEEE,2020:321-325.

[15]Yu X,Li X,Wu C,et al. Design and Deployment of Django-based Housing Information Management System[C]//Journal of Physics:Conference Series. IOP Publishing,2023,2425(1):012018.

致  谢

这篇文章的完成经历了多个日日夜夜的努力,终于在今天得以完成。这篇文章的创作过程实为不易,但在老师和同学的辛勤帮助下顺利渡过。让我在设计过程中举步维艰时,非常感谢我的导师不耐其烦的帮助我解决问题,给予了我许多指导意见。也感谢所有为我授业解惑的老师!

另外,本文的完成也参考借鉴了许多国内外在Django和Python技术上的著作,如果没有著作原作的辛勤付出和科研成果,我也很难完成本论文。感谢在本论文中关联到的学者们!也感谢Google等公司,感谢他们强大的搜索引擎,让我的资料查阅省事简单。

感谢之余也还有几句话要说,虽大学学习四年,怎奈何本人才疏学浅,本文的完成已为尽力,但文中不免有些不当和错误之处,诚挚真切的请求各位老师对本文的批评改正,感谢百忙之中费心审阅我论文的老师。

请关注点赞+私信博主,免费领取项目源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值