本文所有基础知识可通过此链接进行训练点我开练
本次为三个月学校学习的课程作业,仅用到Python入门知识,简旦易懂。
涉及到的主要有:列表,字典,函数定义调用,循环结构等入门知识
可满足大部分学校此课的基本要求,但添加的功能较少,可在此基础上进行二创,欢迎借鉴!
话不多说,上代码!
一、宿舍管理系统
message = []
room_number = []
room_name = []
# 欢迎界面
def welcome():
print('欢迎使用XXXX大学学生宿舍管理系统')
# 目录
def catalogue():
print('1.添加学生住宿信息')
print('2.修改学生住宿信息')
print('3.删除学生信息')
print('4.浏览学生信息')
print('5.查找住宿情况')
print('6.退出系统')
# 1.添加信息功能
def add(name, classes, phone, building, room, berth):
student = {'name': name, 'classes': classes, 'phone': phone, 'building': building, 'room': room, 'berth': berth}
message.append(student)
print('添加信息成功')
# 2.修改信息功能
def alter(name, new_classes, new_phone, new_building, new_room, new_berth):
for student in message:
if student['name'] == name:
student['classes'] = new_classes
student['phone'] = new_phone
student['building'] = new_building
student['room'] = new_room
student['berth'] = new_berth
print('修改信息成功')
break
# 3.删除信息功能
def delete(name):
for student in message:
if student['name'] == name:
message.remove(student)
break
# 4.浏览学生信息
def details():
print('name\t\tclasses\t\tphone\t\tbuilding\t\troom\t\tberth')
for student in message:
print("%-10s\t\t%-10s\t\t%-10s\t\t%-10s\t\t%-10s\t\t%-10s" % \
(student['name'], student['classes'], student['phone'], \
student['building'], student['room'], student['berth']))
# 5.查找住宿情况
def seek():
print('*' * 15)
print('a.按学生姓名查询')
print('b.按宿舍号查找')
print('c.返回')
# a.按学生姓名查询学生住宿情况
def names(na):
for student in message:
if student['name'] == na:
print('name\t\tclasses\t\tphone\t\tbuilding\t\troom\t\tberth')
print("%-10s\t\t%-10s\t\t%-10s\t\t%-10s\t\t%-10s\t\t%-10s" % \
(student['name'], student['classes'], student['phone'], \
student['building'], student['room'], student['berth']))
break
else:
print('查无此人')
# b.按宿舍号查找宿舍入住情况
def buildings(roo):
for student in message:
if student['room'] == roo:
print(room_name)
break
else:
print("无")
def ehk():
while True:
welcome()
catalogue()
command = input('请输入你的选择:')
if command == '6':
print('欢迎下次光临')
break
elif command == '1':
print('添加新同学')
name = input('请输入姓名:')
classes = input('请输入班级:')
phone = input('请输入电话号码:')
building = input('请输入楼号:')
room = input('请输入宿舍号:')
berth = input('请输入床位:')
room_number.append(room)
if room not in room_number:
pass
else:
room_name.append(name)
add(name, classes, phone, building, room, berth)
elif command == '2':
print('修改学生信息')
name = input('请输入要修改的学生的姓名:')
classes = input('请输入新的的班级:')
phone = input('请输入新的电话号码:')
building = input('请输入新的楼号:')
room = input('请输入新的房间号:')
berth = input('请输入新的床位:')
alter(name, classes, phone, building, room, berth)
elif command == '3':
print('删除学生信息')
name = input('请输入要删除的学生的姓名:')
delete(name)
elif command == '4':
print('浏览学生信息')
details()
elif command == '5':
print('查找住宿情况')
seek()
com = input('请输入选项:')
if com == 'a':
print('按学生姓名查询')
na = input('请输入学生姓名:')
names(na)
elif com == 'b':
print('按宿舍号查找')
roo = input('请输入宿舍号:')
buildings(roo)
elif com == 'c':
continue
else:
pass
else:
pass
# 定义列表,用来记录用户名和密码:
users = ['张三', '李四']
passwd = ['zhangsan', 'lisi']
while True:
count = 0
if count < 3:
user = input("用户名:")
mima = input("密码:")
count += 1
if user in users:
index = users.index(user)
pass_wd = passwd[index]
if mima == pass_wd:
print("%s登录成功" % user)
ehk()
break
else:
print("%s登录失败" % user)
else:
print("%s用户不存在" % user)
else:
print("已经超过三次机会")
break
此系统仍有很多不足,如制表未对齐,功能少,不可存储多次班级宿舍信息进行归类等,有精力将进行修改完善。对此系统有任何疑问也可私聊询问。
另附课程小论文,在资源中可以免费下载
二、学生信息管理系统
24/5/27更新:最近有学妹找我,遇见了同一个老师,所以给做了一个学生信息管理系统,这次的版本相较于之前的加了tk的GUI界面,因为本人现在主要是C++方向的学习,Python很久没有写了,所以关于上一篇的bug很多没有改,也不再回答评论中的提问,毕竟过去一两年的代码又有多少人还记得,再者每个人的错误都不一样,更多的可能是环境的问题,这次给大家新的管理系统,同样这次的代码不会回答bug,像这样很基础的管理系统,问GPT同样可以解决,除非你加V我可能会回复你的问题
关于论文,我已经放在资源了,自取,积分是平台自动设置的,有时间我会给改回去
import tkinter as tk
from idlelib import window
from tkinter import messagebox, simpledialog
student_list = []
def menu():
print("----------学生管理系统-----------")
print("-----------功能菜单-------------")
print('学生管理系统 V1.0')
print('1.录入学生信息')
print('2.删除学生信息')
print('3.修改学生信息')
print('4.查找学生信息')
print('5.统计学生总人数')
print('6.排序')
print('7.显示所有学生信息')
print('8.退出系统')
cmd = input('请输入您的选择:')
print('-' * 30)
return cmd
def add_student():
def add_student_info():
name = name_entry.get()
classes = classes_entry.get()
student_id = student_id_entry.get()
scores = scores_entry.get()
# 添加学生信息到 student_list
student_list.append({"name": name, "classes": classes, "id": student_id, "scores": scores})
messagebox.showinfo("展示结果", "添加成功")
# 清空输入框
name_entry.delete(0, tk.END)
classes_entry.delete(0, tk.END)
student_id_entry.delete(0, tk.END)
scores_entry.delete(0, tk.END)
global student_list
add_window = tk.Toplevel()
add_window.title("录入学生信息")
add_window.geometry("400x200")
tk.Label(add_window, text="姓名:").grid(row=0, column=0)
name_entry = tk.Entry(add_window)
name_entry.grid(row=0, column=1)
tk.Label(add_window, text="班级:").grid(row=1, column=0)
classes_entry = tk.Entry(add_window)
classes_entry.grid(row=1, column=1)
tk.Label(add_window, text="学号:").grid(row=2, column=0)
student_id_entry = tk.Entry(add_window)
student_id_entry.grid(row=2, column=1)
tk.Label(add_window, text="成绩:").grid(row=3, column=0)
scores_entry = tk.Entry(add_window)
scores_entry.grid(row=3, column=1)
tk.Button(add_window, text="确定", command=add_student_info).grid(row=4, column=1)
add_window.mainloop()
def delete_student():
def delete_student_info():
nonlocal name
name = name_entry.get()
for i, student in enumerate(student_list):
if student['name'] == name:
del student_list[i]
messagebox.showinfo("展示结果", "删除成功")
break
else:
messagebox.showinfo("展示结果", "学生不存在")
name = None
name_entry = None
delete_window = tk.Toplevel()
delete_window.title("删除学生信息")
delete_window.geometry("300x150")
tk.Label(delete_window, text="请输入学生姓名:").pack()
name_entry = tk.Entry(delete_window)
name_entry.pack()
tk.Button(delete_window, text="确定", command=delete_student_info).pack()
delete_window.mainloop()
def query_student():
def update_student_info():
nonlocal name
name = name_entry.get()
for student in student_list:
if student['name'] == name:
student['name'] = new_name.get()
student['classes'] = new_classes.get()
student['id'] = new_id.get()
student['scores'] = new_scores.get()
messagebox.showinfo("展示结果", "修改成功")
return
messagebox.showinfo("展示结果", "学生不存在")
name = None
update_window = tk.Toplevel()
update_window.title("修改学生信息")
update_window.geometry("400x300")
tk.Label(update_window, text="姓名:").grid(row=0, column=0)
name_entry = tk.Entry(update_window)
name_entry.grid(row=0, column=1)
tk.Label(update_window, text="新姓名:").grid(row=1, column=0)
new_name = tk.Entry(update_window)
new_name.grid(row=1, column=1)
tk.Label(update_window, text="新班级:").grid(row=2, column=0)
new_classes = tk.Entry(update_window)
new_classes.grid(row=2, column=1)
tk.Label(update_window, text="新学号:").grid(row=3, column=0)
new_id = tk.Entry(update_window)
new_id.grid(row=3, column=1)
tk.Label(update_window, text="新成绩:").grid(row=4, column=0)
new_scores = tk.Entry(update_window)
new_scores.grid(row=4, column=1)
tk.Button(update_window, text="确定", command=update_student_info).grid(row=5, column=1)
update_window.mainloop()
def find_student():
mode = simpledialog.askstring("查询方式", "请输入查询方式(1.姓名 2.学号):", parent=window)
if mode == '1':
name = simpledialog.askstring("输入姓名", "请输入学生姓名:", parent=window)
for student in student_list:
if student['name'] == name:
messagebox.showinfo("查询结果",
f"姓名: {student['name']}\n班级: {student['classes']}\n学号: {student['id']}\n成绩: {student['scores']}")
return
messagebox.showinfo("查询结果", "未找到该学生")
elif mode == '2':
student_id = simpledialog.askstring("输入学号", "请输入学生学号:", parent=window)
for student in student_list:
if student['id'] == student_id:
messagebox.showinfo("查询结果",
f"姓名: {student['name']}\n班级: {student['classes']}\n学号: {student['id']}\n成绩: {student['scores']}")
return
messagebox.showinfo("查询结果", "未找到该学生")
else:
messagebox.showinfo("查询结果", "无效的查询方式")
def sort_students():
# 假设按成绩排序
student_list.sort(key=lambda x: float(x['scores']), reverse=True)
sorted_students = {student['id']: student for student in student_list}
messagebox.showinfo("操作完成", "学生信息已按成绩排序")
# 可以选择在这里显示排序后的学生信息
for student_id, student_info in sorted_students.items():
print(f"学号: {student_id}, 姓名: {student_info['name']}, 成绩: {student_info['scores']}")
# def display_all_students(student_list):
# for student in student_list:
# print(f"姓名: {student['name']}, 班级: {student['classes']}, 学号: {student['id']}, 成绩: {student['scores']}")
def display_all_students(student_list):
students_info = "\n".join(
f"姓名: {student['name']}, 班级: {student['classes']}, 学号: {student['id']}, 成绩: {student['scores']}"
for student in student_list
)
messagebox.showinfo("所有学生信息", students_info)
def count_students():
total_students = len(student_list)
messagebox.showinfo("学生总人数", f"目前系统中共有 {total_students} 名学生")
def exit_system():
window.quit()
def main():
# 创建按钮并添加到主窗口
buttons = {
"1.录入学生信息": add_student,
"2.删除学生信息": delete_student,
"3.修改学生信息": query_student,
"4.查找学生信息": find_student,
"5.统计学生总人数": count_students,
"6.排序学生信息": sort_students,
"7.显示所有学生信息": lambda: display_all_students(student_list),
"8.退出系统": exit_system
}
for text, command in buttons.items():
if text == "8.退出系统":
# 为退出系统按钮设置一个确认对话框
def command_with_confirmation():
response = simpledialog.askyesno("确认退出", "你确定要退出系统吗?")
if response:
window.quit()
btn = tk.Button(window, text=text, command=command_with_confirmation)
else:
btn = tk.Button(window, text=text, command=command)
btn.pack()
# 主窗口初始化
window = tk.Tk()
window.title('学生管理系统')
window.geometry("800x600")
# 创建按钮并添加到主窗口
b1 = tk.Button(window, text="1.录入学生信息", command=add_student)
b1.pack()
b2 = tk.Button(window, text="2.删除学生信息", command=delete_student)
b2.pack()
b3 = tk.Button(window, text="3.修改学生信息", command=query_student)
b3.pack()
b4 = tk.Button(window, text="4.查找学生信息", command=find_student)
b4.pack()
b5 = tk.Button(window, text="5.统计学生总人数", command=count_students)
b5.pack()
b6 = tk.Button(window, text="6.排序学生信息", command=sort_students)
b6.pack()
b7 = tk.Button(window, text="7.显示所有学生信息", command=lambda: display_all_students(student_list))
b7.pack()
b8 = tk.Button(window, text="8.退出系统", command=exit_system)
b8.pack()
# 启动事件循环
window.mainloop()
# 确保程序在被调用时执行主函数
if __name__ == "__main__":
main()
本文介绍了使用Python实现的宿舍管理系统和学生信息管理系统,包括列表、字典、函数和循环等基础知识的应用,以及基本的增删改查功能。还展示了如何通过Tkinter实现GUI界面,提升用户体验。
(课程作业附课程小论文)&spm=1001.2101.3001.5002&articleId=125113573&d=1&t=3&u=cebf44a6bc5b410d917548301a1b2b49)
2149

被折叠的 条评论
为什么被折叠?



