✨作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目
一、开发环境
- 开发语言:Python
- 数据库:MySQL
- 系统架构:B/S
- 后端:Django
- 前端:Vue
二、系统功能模块
- 角色:用户、护工、管理员
- 功能:
用户:
收费标准、接待信息、房间信息、入住信息管理、请假信息管理、提醒信息、续住信息管理、护理信息管理、退住信息、公告信息;
护工:
收费标准、接待信息管理、房间信息管理、入住信息管理、请假信息管理、提醒信息管理、续住信息管理、护理信息管理、退住信息管理、公告信息;
管理员:
用户管理、护工管理、收费标准管理、接待信息管理、房间类型管理、房间信息管理、入住信息管理、请假信息管理、提醒信息管理、续住信息管理、护理信息管理、退住信息管理、 公告信息管理。
三、系统界面展示
四、部分代码设计
def get_all_old():
return oldperson_info.objects.all()
def insert_oldperson(data):
# 从data中获取要插入的字段值
username = data.get('username')
gender = data.get('gender')
phone = data.get('phone')
id_card = data.get('id_card')
checkin_date = data.get('checkin_date')
checkout_date = data.get('checkout_date')
room_number = data.get('room_number')
guardian_name = data.get('guardian_name')
guardian_relationship = data.get('guardian_relationship')
guardian_phone = data.get('guardian_phone')
# 检查数据库中是否存在相同的id_card记录
existing_employee = employee_info.objects.filter(id_card=id_card).exists()
existing_volunteer = volunteer_info.objects.filter(id_card=id_card).exists()
existing_old = oldperson_info.objects.filter(id_card=id_card).exists()
if existing_old or existing_employee or existing_volunteer:
return False
# 创建并保存模型实例到数据库
old_person = oldperson_info(
username=username,
gender=gender,
phone=phone,
id_card=id_card,
checkin_date=checkin_date,
checkout_date=checkout_date,
imgset_dir=id_card,
room_number=room_number,
guardian_name=guardian_name,
guardian_relationship=guardian_relationship,
guardian_phone=guardian_phone
)
old_person.save()
insert_people_info(id_card, username, "old_people")
return True
def get_all_volunteers():
return volunteer_info.objects.all()
def insert_volunteer(data):
# 从data中获取要插入的字段值
name = data.get('name')
gender = data.get('gender')
phone = data.get('phone')
id_card = data.get('id_card')
checkin_date = data.get('checkin_date')
checkout_date = data.get('checkout_date')
# 检查数据库中是否存在相同的id_card记录
existing_employee = employee_info.objects.filter(id_card=id_card).exists()
existing_volunteer = volunteer_info.objects.filter(id_card=id_card).exists()
existing_old = oldperson_info.objects.filter(id_card=id_card).exists()
if existing_old or existing_employee or existing_volunteer:
return False
# 创建并保存模型实例到数据库
volunteer = volunteer_info(
name=name,
gender=gender,
phone=phone,
id_card=id_card,
checkin_date=checkin_date,
checkout_date=checkout_date,
imgset_dir=id_card,
)
volunteer.save()
insert_people_info(id_card, name, "volunteer")
return True
def get_all_employees():
return employee_info.objects.all()
def insert_employee(data):
# 从data中获取要插入的字段值
name = data.get('name')
gender = data.get('gender')
phone = data.get('phone')
id_card = data.get('id_card')
hire_date = data.get('hire_date')
resign_date = data.get('resign_date')
# 检查数据库中是否存在相同的id_card记录
existing_employee = employee_info.objects.filter(id_card=id_card).exists()
existing_volunteer = volunteer_info.objects.filter(id_card=id_card).exists()
existing_old = oldperson_info.objects.filter(id_card=id_card).exists()
if existing_old or existing_employee or existing_volunteer:
return False
# 创建并保存模型实例到数据库
employee = employee_info(
name=name,
gender=gender,
phone=phone,
id_card=id_card,
hire_date=hire_date,
resign_date=resign_date,
imgset_dir=id_card,
)
employee.save()
insert_people_info(id_card, name, "employee")
return True
def register(data):
username = data.get('username')
password = data.get('password')
existing_sys_user = sys_user.objects.filter(username=username).exists()
if existing_sys_user:
return False
sys_users = sys_user(
username=username,
password=password
)
sys_users.save()
return True
def login(data):
username = data.get('username')
password = data.get('password')
try:
existing_sys_user = sys_user.objects.get(username=username)
if existing_sys_user.password == password:
return True
else:
return False
except sys_user.DoesNotExist:
return False
def event(event_type, oldperson_id, event_date, event_location, payback_dir):
# 创建并保存模型实例到数据库
event = event_info(
event_type=event_type,
oldperson_id=oldperson_id,
event_date=event_date,
event_location=event_location,
payback_dir=payback_dir,
)
event.save()
def get_events():
return event_info.objects.all()
# 人脸信息
def get_people_info():
people_info_queryset = people_info.objects.all()
# 得到ID->姓名的映射字典
id_card_to_name = {}
# 得到ID->职位的映射字典
id_card_to_type = {}
for person in people_info_queryset:
id_card_to_name[person.id_card] = person.name
id_card_to_type[person.id_card] = person.type
return id_card_to_name, id_card_to_type
def insert_people_info(id_card, name, type):
# 创建并保存模型实例到数据库
people = people_info(
id_card=id_card,
name=name,
type=type,
)
people.save()
class VideoStreamView(APIView):
def get(self, request):
def gen_display():
fall_timing = 0 # 计时开始
fall_start_time = 0 # 开始时间
fall_limit_time = 1 # if >= 1 seconds, then he/she falls.
vs = cv2.VideoCapture(0)
# 加载模型
model = load_model(model_path)
# 不断循环
counter = 0
while True:
counter += 1
# grab the current frame
(grabbed, image) = vs.read()
image = cv2.flip(image, 1)
roi = cv2.resize(image, (TARGET_WIDTH, TARGET_HEIGHT))
roi = roi.astype("float") / 255.0
roi = img_to_array(roi)
roi = np.expand_dims(roi, axis=0)
# determine facial expression
(fall, normal) = model.predict(roi, verbose=0)[0]
label = "Fall (%.2f)" % (fall) if fall > normal else "Normal (%.2f)" % normal
# display the label and bounding box rectangle on the output frame
cv2.putText(image, label, (image.shape[1] - 150, 30),
cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)
if fall > normal:
if fall_timing == 0: # just start timing
fall_timing = 1
fall_start_time = time.time()
else: # alredy started timing
fall_end_time = time.time()
difference = fall_end_time - fall_start_time
current_time = time.strftime('%Y-%m-%d %H:%M:%S',
time.localtime(time.time()))
if difference < fall_limit_time:
print('[INFO] %s, 走廊, 摔倒仅出现 %.1f 秒. 忽略.' % (current_time, difference))
else: # strangers appear
event_location = '走廊'
print('[EVENT] %s, 走廊, 有人摔倒!!!' % (current_time))
cv2.imwrite(
os.path.join(output_fall_path, 'snapshot_%s.jpg' % (time.strftime('%Y%m%d_%H%M%S'))),
image)
# 插入数据库
image_dir = 'snapshot_%s.jpg' % (time.strftime('%Y%m%d_%H%M%S'))
event(event_location + "有人摔倒", '-1', current_time, event_location,image_dir)
fall_timing=0
ret, encoded_frame = cv2.imencode('.jpeg', image)
if ret:
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + encoded_frame.tobytes() + b'\r\n')
return StreamingHttpResponse(gen_display(), content_type='multipart/x-mixed-replace; boundary=frame')
Video_streamView = VideoStreamView.as_view()
Gitee — 基于 Git 的代码托管和研发协作平台
五、论文参考
六、系统视频
基于Python的大健康养老公寓管理系统
结语
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我