当前位置: 首页 > 新闻资讯  > 宿舍管理系统

员工宿舍管理系统与App的开发实战

本文介绍如何用Python和Django搭建一个员工宿舍管理系统,并开发一个简单的App,用于管理宿舍信息和用户交互。

嘿,大家好!今天咱们来聊聊“员工宿舍管理系统”和“App”的开发。这事儿听着挺普通的,但其实里面有很多技术细节,尤其是如果你是刚入门的程序员,可能会觉得有点挑战性。不过别担心,我这就用最通俗的方式,把整个过程讲清楚,还带点代码,让你能跟着动手试试。

先说说背景吧。很多公司都有员工宿舍,这些宿舍的分配、入住、退宿、费用这些事情,如果全靠人工管理,那肯定容易出错,而且效率也低。所以,现在很多公司都开始用系统来管理这些事情了。而App嘛,就是让员工能随时随地查看自己的宿舍信息,比如谁住哪间房,水电费多少,还有报修功能之类的。听起来是不是挺实用的?

那我们怎么开始做这个系统呢?首先,得选个合适的开发语言和框架。我这里用的是Python,因为它简单易学,社区资源也多。然后,后端用Django,这是一个非常流行的Python Web框架,特别适合做这种管理系统。前端的话,可以用React或者Vue,不过为了简单一点,我先用HTML+CSS+JavaScript做个基础页面,后面再扩展成App。

好了,先从后端开始。Django的安装很简单,你只需要在终端输入:

pip install django

安装完之后,创建一个项目:

django-admin startproject dorm_system

然后进入项目目录,创建一个应用:

python manage.py startapp dorm

接下来,我们要在`settings.py`里把`dorm`加到`INSTALLED_APPS`中,这样Django才知道这个应用存在。

现在,我们需要定义数据库模型。员工宿舍管理系统的核心数据包括:员工信息、宿舍信息、入住记录等。所以我们需要创建几个模型。

在`models.py`里,写这样的代码:

员工宿舍

from django.db import models
class Employee(models.Model):
name = models.CharField(max_length=100)
department = models.CharField(max_length=100)
phone = models.CharField(max_length=20)
def __str__(self):
return self.name
class Dormitory(models.Model):
room_number = models.CharField(max_length=20)
capacity = models.IntegerField()
price_per_month = models.DecimalField(max_digits=10, decimal_places=2)
def __str__(self):
return f"Room {self.room_number}"
class Assignment(models.Model):
employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
dormitory = models.ForeignKey(Dormitory, on_delete=models.CASCADE)
assigned_date = models.DateField(auto_now_add=True)
def __str__(self):
return f"{self.employee} - {self.dormitory}"

这三个模型分别表示员工、宿舍和分配记录。这样,我们就有了基本的数据结构。

接下来,需要运行迁移命令,把模型同步到数据库:

python manage.py makemigrations
python manage.py migrate

然后,我们可以创建一个超级用户,用来登录后台管理界面:

python manage.py createsuperuser

登录后,就能看到Django的admin界面,可以添加员工、宿舍和分配记录了。

不过,光有后台管理还不够,我们需要一个前端界面,让员工能访问这些信息。这时候,我们可以用Django的模板系统来创建页面。

在`templates`文件夹下新建一个`index.html`,内容如下:




员工宿舍管理系统


欢迎使用员工宿舍管理系统
员工列表
宿舍列表
分配记录


然后,在`views.py`中添加对应的视图函数:

from django.shortcuts import render
from .models import Employee, Dormitory, Assignment
def index(request):
return render(request, 'index.html')
def employees(request):
employees = Employee.objects.all()
return render(request, 'employees.html', {'employees': employees})
def dormitories(request):
dorms = Dormitory.objects.all()
return render(request, 'dormitories.html', {'dorms': dorms})
def assignments(request):
assigns = Assignment.objects.all()
return render(request, 'assignments.html', {'assigns': assigns})

再在`urls.py`中配置路由:

from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('employees/', views.employees, name='employees'),
path('dormitories/', views.dormitories, name='dormitories'),
path('assignments/', views.assignments, name='assignments'),
]

然后,再创建`employees.html`、`dormitories.html`、`assignments.html`这几个页面,显示对应的数据。这部分就交给你们自己写了,比较简单。

到这里,我们的后端系统已经搭好了,可以管理员工、宿舍和分配记录了。接下来,我们来做一个简单的App,让员工能通过手机访问这些信息。

App的话,我们可以用React Native来开发,因为它支持跨平台,写一次代码,可以同时运行在iOS和Android上。不过,如果你是新手,也可以用Flutter或者原生开发。这里我以React Native为例。

首先,安装React Native环境。你需要先安装Node.js和npm,然后安装React Native CLI:

npm install -g react-native-cli

然后创建一个新项目:

npx react-native init DormApp

进入项目目录,启动模拟器:

cd DormApp
npx react-native run-android

或者 `npx react-native run-ios`(如果你用Mac)。

接下来,我们需要在App中请求后端API。假设我们的Django后端已经部署在本地或者服务器上,可以通过HTTP接口获取数据。

在App中,我们可以用`fetch`来调用API。例如,获取所有员工的列表:

fetch('http://localhost:8000/api/employees')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));

但是,Django默认不提供REST API,所以我们要用Django REST framework来生成API接口。

安装Django REST framework:

pip install djangorestframework

然后在`settings.py`中添加:

INSTALLED_APPS += ['rest_framework']

接着,创建序列化器:

在`serializers.py`中:

from rest_framework import serializers
from .models import Employee, Dormitory, Assignment
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
class DormitorySerializer(serializers.ModelSerializer):
class Meta:
model = Dormitory
fields = '__all__'
class AssignmentSerializer(serializers.ModelSerializer):
class Meta:
model = Assignment
fields = '__all__'

然后创建视图:

在`views.py`中:

from rest_framework import viewsets
from .models import Employee, Dormitory, Assignment
from .serializers import EmployeeSerializer, DormitorySerializer, AssignmentSerializer
class EmployeeViewSet(viewsets.ModelViewSet):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
class DormitoryViewSet(viewsets.ModelViewSet):
queryset = Dormitory.objects.all()
serializer_class = DormitorySerializer
class AssignmentViewSet(viewsets.ModelViewSet):
queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer

最后,在`urls.py`中配置路由:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import EmployeeViewSet, DormitoryViewSet, AssignmentViewSet
router = DefaultRouter()
router.register(r'employees', EmployeeViewSet)
router.register(r'dormitories', DormitoryViewSet)
router.register(r'assignments', AssignmentViewSet)
urlpatterns = [
path('', include(router.urls)),
]

这样,我们的后端就提供了REST API,App就可以通过这些接口获取数据了。

现在回到App部分,我们可以创建一个页面来展示员工列表。比如在`App.js`中:

import React, { useEffect, useState } from 'react';
import { View, Text, FlatList } from 'react-native';
const App = () => {
const [employees, setEmployees] = useState([]);
useEffect(() => {
fetch('http://localhost:8000/api/employees')
.then(response => response.json())
.then(data => setEmployees(data))
.catch(error => console.error(error));
}, []);
return (

员工列表
 item.id.toString()}
renderItem={({ item }) => (

{item.name}
{item.department}

)}
/>

);
};
export default App;

这样,App就能显示员工的信息了。当然,这只是个简单的例子,实际开发中还需要考虑错误处理、加载状态、UI优化等等。

总结一下,我们做了什么?我们用Django搭建了一个员工宿舍管理系统,用Django REST framework提供了API接口,又用React Native开发了一个App,让员工可以随时查看宿舍信息。整个过程涉及前后端的配合,也涉及到一些常见的技术点,比如模型设计、REST API、前端页面开发、移动App开发等。

如果你对这些技术还不太熟悉,建议多看一些教程,或者参考官方文档。Django和React Native的文档都非常详细,非常适合学习。

最后,我想说,虽然这个系统看起来简单,但它的背后其实有很多技术支撑。如果你有兴趣,还可以继续扩展它,比如加入支付功能、通知系统、地图定位、智能门禁等。这样,你的系统就会变得更强大,也能满足更多实际需求。

好了,今天的分享就到这里。希望这篇文章能帮到你,如果有问题,欢迎留言交流!

相关资讯

    暂无相关的数据...