Python-学生宿舍管理程序

综合技术   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2023-2-2

某天逛凯特社区的时候看到有人需要这个程序,就用python写了一下,但是那天写好之后给他留言一直没回复
还有几天就开学了,所以这个应该是最后一个发的程序
程序使用Python编写,数据库使用的是MySQL
功能
1.查询指定宿舍号的所有学生
2.添加学生到指定宿舍楼的指定宿舍号
3.删除指定宿舍楼宿舍号的学生
4.通过学号查询学生
5.修改学生信息
因为程序写的比较着急(大概一个小时)所以功能并不完善,使用的时候如果输入有误可能就出问题了,所以每次回车请检查输入的内容是否正确
有问题请阅读帮助文档,以下是部分重要内容

程序使用需要使用MySQL数据库进行数据存储
请在数据库中创建一个名为student的库,在student库中创建名为student的表

------文末有打包好的下载链接------

具体代码
main.py

from database import BedRoomSys
import requests
bedroom = BedRoomSys()
class Main():
def __init__(self):
self.choose = None

def main_page(self):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.61'
}
url = '

本帖含有隐藏内容,请您 回复 后查看
'
state = requests.get(url,headers=headers).text
if state != '1':
print('软件已关闭,请阅读文档获取帮助')
with open('帮助文档.txt','r',encoding='UTF-8') as f:
print(f.read())
input('点击任意按键退出')
exit()

else:
print(' 查询指定宿舍号的所有学生 [1]' + '\n'
' 添加学生到指定宿舍楼的指定宿舍号 [2]' + '\n'
' 删除指定宿舍楼宿舍号的学生 [3]' + '\n'
' 通过学号查询学生 [4]' + '\n',
'修改学生信息 [5]' + '\n',
'退出程序 [6]' + '\n'
)
self.choose = input('请选择你要进行的操作:')

main = Main()
print('\033[36m正在连接,请稍后\033[0m')
while True:
try:
bedroom.connect_db()
except Exception:
print('\033[36m检测到未配置数据库或数据库信息配置错误,请配置\033[0m')
host = input('请输入数据库地址:')
port = int(input('请输入数据库端口:'))
user = input('请输入用户名:')
password = input('请输入密码:')
bedroom.write_db_server(host, port, user, password)
else:

main.main_page()
if main.choose == '1':
student_dorm_name = input('请输入宿舍楼名字:')
student_bedroom_num = int(input('请输入宿舍号:'))
bedroom.get_info(student_dorm_name=student_dorm_name,student_bedroom_num=student_bedroom_num)
elif main.choose == '2':
student_id = int(input('请输入学生学号:'))
student_name = input('请输入学生姓名:')
student_dorm_name = input('请输入宿舍楼名字:')
student_bedroom_num = int(input('请输入宿舍号:'))
bedroom.new_student(student_id, student_name, student_dorm_name, student_bedroom_num)
elif main.choose == '3':
student_id = int(input('请输入学生学号:'))
student_dorm_name = input('请输入宿舍楼名字:')
student_bedroom_num = int(input('请输入宿舍号:'))
bedroom.delete_student(student_id, student_dorm_name, student_bedroom_num)
elif main.choose == '4':
student_id = int(input('请输入学生学号:'))
print(bedroom.get_student(student_id))
choose = input('是否要修改该学生信息?(是:1 否:2):')
if choose == '1':
bedroom.update_student(student_id=student_id)
elif main.choose == '5':
student_id = int(input('请输入学生学号:'))
bedroom.update_student(student_id=student_id)

elif main.choose == '6':
break
else:
print('输入错误')
input('点击任意按键退出')
exit()

具体功能实现在database.py中

代码如下
class GetInfoTop:
def __connect_db(self): # 连接数据库
pass

def get_info(self, student_dorm_num, student_bedroom_num): # 获取指定宿舍楼的指定宿舍号的所有学生学号和姓名
pass

def new_student(self, student_id, student_name, student_dorm_num, student_bedroom_num): # 添加指定学生到指定宿舍楼指定宿舍号
pass

def delete_student(self, student_id, student_dorm_num, bedroom_num): # 删除指定宿舍楼的指定宿舍号的指定学生
pass

def get_student(self, student_id): # 查询学生信息
pass

def update_student(self, student_id): # 更新学生信息
pass

class BedRoomSys(GetInfoTop):

def write_db_server(self, host, port, user, password):
with open('db_info.txt', 'w', encoding='UTF-8') as f:
f.write(f'{host}\n{port}\n{user}\n{password}')

def connect_db(self):
from pymysql import Connection
with open('db_info.txt', 'r', encoding='UTF-8') as f:
info = f.readlines()
info_list = []
for data in info:
data = data.strip('\n')
info_list.append(data)
host = info_list[0]
port = int(info_list[1])
user = info_list[2]
password = info_list[3]
self.conn = Connection(
host=host,
port=port,
user=user,
password=password,
autocommit=True
)
self.cursor = self.conn.cursor()
self.conn.select_db('student')

def get_info(self, student_dorm_name, student_bedroom_num):
self.connect_db()
self.cursor.execute(
f"select * from student where student_dorm_name='{student_dorm_name}' and student_bedroom_num={student_bedroom_num};")
data = self.cursor.fetchall()
if data == ():
print('\033[36m宿舍不存在')
else:
for student in data:
student_id = student[0]
student_name = student[1]
student_dorm = student[2]
student_bedroom = student[3]
print(
f'\033[36m学生ID:{student_id}\n学生名字:{student_name}\n学生所在宿舍楼:{student_dorm}\n学生寝室号:{student_bedroom}\n\033[0m')

def new_student(self, student_id, student_name, student_dorm_name, student_bedroom_num):
self.connect_db()
self.cursor.execute(
f"select student_id from student where student_dorm_name='{student_dorm_name}' and student_bedroom_num={student_bedroom_num};")
data = self.cursor.fetchall()
id_list = []
for id_part in data:
id_list.append(id_part[0])
if student_id in id_list:
print('\033[36m学生已存在\033[0m')
else:
self.cursor.execute(
f"insert into student values({student_id},'{student_name}','{student_dorm_name}',{student_bedroom_num})")
print('\033[36m添加成功\033[0m')

def delete_student(self, student_id, student_dorm_name, student_bedroom_num):
self.connect_db()
self.cursor.execute(
f"select student_id from student where student_dorm_name='{student_dorm_name}' and student_bedroom_num={student_bedroom_num};") # 通过输入的宿舍楼和宿舍号来获取学生id
data_id = self.cursor.fetchall()
id_list = []
for id_part in data_id:
id_list.append(id_part[0])
if student_id not in id_list:
print('\033[36m选择的学生不存在\033[0m')
else:
self.cursor.execute(
f"delete from student where student_dorm_name='{student_dorm_name}' and student_bedroom_num={student_bedroom_num} and student_id={student_id}")
print('\033[36m删除成功\033[0m')

def get_student(self, student_id):
self.connect_db()
self.cursor.execute(f"select * from student where student_id={student_id};")
data = self.cursor.fetchall()
if data == ():
print('\033[36m学生不存在\033[0m')
else:
name_id = data[0][0]
name = data[0][1]
dorm_name = data[0][2]
bedroom_num = data[0][3]
return f'\033[36m学生ID是:{name_id}\n学生名字是:{name}\n学生所在宿舍楼是:{dorm_name}\n学生寝室号为:{bedroom_num}\033[0m'

def update_student(self, student_id):
self.connect_db()
self.cursor.execute(f"select * from student where student_id={student_id};")
data = self.cursor.fetchall()
if data == ():
print('\033[36m学生不存在\033[0m')
else:
print(self.get_student(student_id=student_id))
student_new_id = input('请输入要修改的学号(不修改请留空):')
student_new_name = input('请输入要修改的姓名(不修改请留空):')
student_new_dorm_name = input('请输入要修改的宿舍楼(不修改请留空):')
student_new_bedroom_num = input('请输入要修改的宿舍号(不修改请留空):')
if student_new_id == '':
student_new_id = data[0][0]
if student_new_name == '':
student_new_name = data[0][1]
if student_new_dorm_name == '':
student_new_dorm_name = data[0][2]
if student_new_bedroom_num == '':
student_new_bedroom_num = data[0][3]
self.cursor.execute(
f"update student set student_id={student_new_id},student_name='{student_new_name}',student_dorm_name='{student_new_dorm_name}',student_bedroom_num={student_new_bedroom_num} where student_id={student_id}")
print(f"\033[36m修改成功\n当前{self.get_student(student_new_id)}\033[0m")

源码打包下载
本帖含有隐藏内容,请您 回复 后查看


Windows可执行程序下载
本帖含有隐藏内容,请您 回复 后查看



往期
#邮件发送接口+源码#
#蓝奏云直链解析#
#Python程序-Python+MySQL实现注册登录功能#
#Python程序-Python对彩虹外链网盘进行简单操作#
#Python程序-学生成绩分析程序#

沙发
1WD少天天 2023-2-2
帮你顶一下[滑稽][玫瑰]
板凳
沐阳666 2023-2-2
看不懂,怎么弄的[汗]
无图无真相 及时补图
4楼
白轻 2023-2-2
哦,好的[玫瑰]
5楼
白轻 2023-2-2
main写的是调用具体方法的代码,database里面是具体方法[玫瑰]
这个内容可以 移至热门分区
热门奖励。
你大几啊为什么这么6
10楼
天禽 2023-2-3
这不是javase的练习题吗...

评论

登录后才可发表内容
  • 主题

    6

  • 帖子

    29

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0986s Mem:2187Kb