嘿,大家好!今天咱们来聊聊“员工宿舍管理系统”和“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的文档都非常详细,非常适合学习。
最后,我想说,虽然这个系统看起来简单,但它的背后其实有很多技术支撑。如果你有兴趣,还可以继续扩展它,比如加入支付功能、通知系统、地图定位、智能门禁等。这样,你的系统就会变得更强大,也能满足更多实际需求。
好了,今天的分享就到这里。希望这篇文章能帮到你,如果有问题,欢迎留言交流!
