您的位置:首页 > 教育 > 培训 > python:管理系统小游戏

python:管理系统小游戏

2024/10/5 17:16:51 来源:https://blog.csdn.net/2201_75782271/article/details/140736231  浏览:    关键词:python:管理系统小游戏

1.编写学生管理系统,实现增删改查:


输入数字1,添加学生信息(编号, 名字,年纪,性别)
第一个学生id为101 后续学生自动加1
输入数字2,查看所有学生信息
输入数字3,查看指定学生信息
输入学生id,显示对应学生信息
输入数字4,修改学生信息
输入学生id,输入学生新名字,新年纪,新性别
输入数字5,删除指定学生
输入学生id,删除指定学生
输入数字0,退出系统

# 1.编写学生管理系统,实现增删改查
# 输入数字1,添加学生信息(编号, 名字,年纪,性别)
# 第一个学生id为101 后续学生自动加1
# 输入数字2,查看所有学生信息
# 输入数字3,查看指定学生信息
# 输入学生id,显示对应学生信息
# 输入数字4,修改学生信息
# 输入学生id,输入学生新名字,新年纪,新性别
# 输入数字5,删除指定学生
# 输入学生id,删除指定学生
# 输入数字0,退出系统class Student:def __init__(self, sid, name, age, sex):self.sid = sidself.name = nameself.age = ageself.sex = sexdef update(self, _name, _age, _sex):self.name = _nameself.age = _ageself.sex = _sexdef __str__(self):return f"id:{self.sid}\tname:{self.name}\tage:{self.age}\tsex:{self.sex}"class StudentManage:def __init__(self):self.students = []def get_student_name(self):while True:name = input("输入学生姓名")if 2 <= len(name) <= 10:return nameelse:print(f"输入不合法,请重新输入,名字范围为2-10")def get_student_age(self):while True:age = int(input("输入学生的年纪"))if 10 <= age <= 40:return ageelse:print(f"输入不合法,请重新输入,年龄范围为10-40")def get_student_sex(self):while True:sex = input("输入学生性别")if sex not in ["男", "女"]:print("输入不合法,请重新输入男/女")else:return sexdef get_student_sid(self):return 101 if not self.students else self.students[-1].sid + 1def get_student_id(self):sid = int(input('输入学生id'))for s in self.students:if s.sid == sid:return sidelse:print('没有找到该id的学生')def get_user_sub_option(self):while True:sub_option = input("请问您是否继续,继续(Y), 返回(N)")if sub_option not in ["Y", "y", "N", "n"]:print("输入不合法,只能输入y/n")else:return sub_optiondef add_student(self):while True:student_name = self.get_student_name()student_age = self.get_student_age()student_sex = self.get_student_sex()sid = self.get_student_sid()s = Student(sid, student_name, student_age, student_sex)self.students.append(s)print(f"学生信息添加成功,现有学生{len(self.students)}")sub_option = self.get_user_sub_option()if sub_option == "Y" or sub_option == "y":passelse:breakdef show_all_student(self):if self.students:for s in self.students:print(s)else:print("不好意思,现在还没有插入学生信息")def show_appoint_student(self):sid = int(input("输入要查看的指定学生的id"))for s in self.students:if s.sid == sid:print(s)breakelse:print(f"id为{sid}的学生不存在")def update_student(self):sid = self.get_student_id()for s in self.students:if s.sid == sid:name = self.get_student_name()age = self.get_student_age()sex = self.get_student_sex()s.update(name, age, sex)print(f"学生信息修改成功,现有学生{len(self.students)}")sub_option = self.get_user_sub_option()if sub_option == "Y" or sub_option == "y":passelse:breakdef remove_student(self):sid = self.get_student_id()for s in self.students:if s.sid == sid:self.students.remove(s)else:print(f"id 为 {sid} 的学生不存在,请检查输入是否正确")class SystemManage:def __init__(self):self.sm = StudentManage()def show_main_menu(self):menu = """输入数字1,添加学生信息(编号, 名字,年纪,性别)
第一个学生id为101 后续学生自动加1
输入数字2,查看所有学生信息
输入数字3,查看指定学生信息
输入学生id,显示对应学生信息
输入数字4,修改学生信息
输入学生id,输入学生新名字,新年纪,新性别
输入数字5,删除指定学生
输入学生id,删除指定学生
输入数字0,退出系统"""print(menu)def get_main_option(self):while True:option = input("输入数字,选择对应的选项")if option not in [str(i) for i in range(5)]:print("输入不合法,请选择正确的选项")else:return optiondef run(self):while True:self.show_main_menu()option = self.get_main_option()if option == "0":print("退出学生管理系统")breakelif option == "1":self.sm.add_student()elif option == "2":self.sm.show_all_student()elif option == "3":self.sm.show_appoint_student()elif option == "4":self.sm.update_student()elif option == "5":self.sm.remove_student()if __name__ == '__main__':system_manage = SystemManage()system_manage.run()

2.使用面向对象编写 学生管理,持久化存储



输入数字1,添加学生信息(id名字,年纪,性别)
第一个学生id为101 后续学生自动加1
输入数字2,查看所有学生信息
输入数字3,统计学生平均年纪
输入数字4,统计学生性别比例
输入数字0,退出系统

import jsonclass Student:def __init__(self, sid, name, age, sex):self.sid = sidself.name = nameself.age = ageself.sex = sexdef __str__(self):return f"id:{self.sid}\tname:{self.name}\tage:{self.age}\tsex:{self.sex}"class StudentManage:def __init__(self):self.students = self.load_students()def load_students(self):try:with open('students.json', 'r') as f:data = f.read()if data:return json.loads(data)else:return []except FileNotFoundError:return []def save_students(self):with open('students.json', 'w') as f:json.dump(self.students, f)def get_student_name(self):while True:name = input("输入学生姓名")if 2 <= len(name) <= 10:return nameelse:print(f"输入不合法,请重新输入,名字范围为2-10")def get_student_age(self):while True:age = int(input("输入学生的年纪"))if 10 <= age <= 40:return ageelse:print(f"输入不合法,请重新输入,年龄范围为10-40")def get_student_sex(self):while True:sex = input("输入学生性别")if sex not in ["男", "女"]:print("输入不合法,请重新输入男/女")else:return sexdef get_user_sub_option(self):while True:sub_option = input("请问您是否继续,继续(Y), 返回(N)")if sub_option not in ["Y", "y", "N", "n"]:print("输入不合法,只能输入y/n")else:return sub_optiondef add_student(self):while True:student_name = self.get_student_name()student_age = self.get_student_age()student_sex = self.get_student_sex()sid = 101 if not self.students else self.students[-1].sid + 1s = Student(sid, student_name, student_age, student_sex)self.students.append(s)print(f"加入成功,现有学生{len(self.students)}")self.save_students()  # 每次添加学生后保存数据sub_option = self.get_user_sub_option()if sub_option == "Y" or sub_option == "y":passelse:breakdef show_all_student(self):if self.students:for s in self.students:print(s)else:print("不好意思,现在还没有插入学生信息")def get_ava_age(self):total = 0for s in self.students:total += s.ageprint(total / len(self.students))def get_count_sex(self):result = {}for s in self.students:if s.sex not in result:result[s.sex] = 1else:result[s.sex] += 1for k, v in result.items():print(f"性别:{k} 人数:{v} 占比{round(v / len(self.students), 2) * 100}%")class SystemManage:def __init__(self):self.sm = StudentManage()def show_main_menu(self):menu = """输入数字1,添加学生信息(id名字,年纪,性别)第一个学生id为101 后续学生自动加1输入数字2,查看所有学生信息输入数字3,统计学生平均年纪输入数字4,统计学生性别比例输入数字0,退出系统"""print(menu)def get_main_option(self):while True:option = input("输入数字,选择对应的选项")if option not in [str(i) for i in range(5)]:print("输入不合法,请选择正确的选项")else:return optiondef run(self):while True:self.show_main_menu()option = self.get_main_option()if option == "0":breakelif option == "1":self.sm.add_student()elif option == "2":self.sm.show_all_student()elif option == "3":self.sm.get_ava_age()elif option == "4":self.sm.get_count_sex()if __name__ == '__main__':systemmanage = SystemManage()systemmanage.run()

3.使用面向对象编写图书管理


类:学生(学号,姓名,邮箱,手机号)
类:图书(图书编号, 书名, 作者, 出版日期, 当前状态(是否可接))
类:借阅(记录id, 学生,图书,借阅日期,归还日期(未归还则为空))
类:管理类
图书列表、学生列表、借阅列表
添加学生,移除学生
添加图书,移除图书
借书,还书
展示所有借阅记录

# 3.使用面向对象编写图书管理
# 类:学生(学号,姓名,邮箱,手机号)
# 类:图书(图书编号, 书名, 作者, 出版日期, 当前状态(是否可接))
# 类:借阅(记录id, 学生,图书,借阅日期,归还日期(未归还则为空))
# 类:管理类
# 图书列表、学生列表、借阅列表
# 添加学生,移除学生
# 添加图书,移除图书
# 借书,还书
# 展示所有借阅记录a#
# # 学生类
# class Student:
#     def __init__(self, sid, name, email, phone):
#         self.sid = sid
#         self.name = name
#         self.email = email
#         self.phone = phone
#
#     def __str__(self):
#         return f"学号:{self.sid}, 姓名: {self.name}, 邮箱: {self.email}, 手机号: {self.phone}"
#
#
# class StudentManage:
#     def __init__(self):
#         self.student = []
#
#     def get_student_name(self):
#         while True:
#             name = input("输入学生姓名")
#             if 2 <= len(name) <= 10:
#                 return name
#             else:
#                 print(f"输入不合法,请重新输入,名字范围为2-10")
#
#     def get_student_email(self):
#         while True:
#             email = str(input("输入学生的邮箱"))
#             if 1 <= len(email) <= 10:
#                 return email
#             else:
#                 print(f"输入不合法,请重新输入,邮箱范围为10-40")
#
#     def get_student_phone(self):
#         while True:
#             phone = str(input("输入学生的手机号"))
#             if 1 <= len(phone) <= 10:
#                 return phone
#             else:
#                 print(f"输入不合法,请重新输入,手机号范围为1-10")
#
#     def get_student_sid(self):
#         return 101 if not self.student else self.student[-1].sid + 1
#
#     def get_student_id(self):
#         sid = int(input('输入学生id'))
#         for s in self.student:
#             if s.sid == sid:
#                 return sid
#         else:
#             print('没有找到该id的学生')
#
#     def get_user_sub_option(self):
#         while True:
#             sub_option = input("请问您是否继续,继续(Y), 返回(N)")
#             if sub_option not in ["Y", "y", "N", "n"]:
#                 print("输入不合法,只能输入y/n")
#             else:
#                 return sub_option
#
#     def add_student(self):
#         while True:
#             student_name = self.get_student_name()
#             student_email = self.get_student_email()
#             student_phone = self.get_student_phone()
#             sid = self.get_student_sid()
#             s = Student(sid, student_name, student_email, student_phone)
#             self.student.append(s)
#             print(f"学生 {student_name} 添加成功,学号为 {sid}")
#             sub_option = self.get_user_sub_option()
#             if sub_option == "Y" or sub_option == "y":
#                 pass
#             else:
#                 break
#
#     def remove_student(self):
#         sid = self.get_student_id()
#         for s in self.student:
#             if s.sid == sid:
#                 self.student.remove(s)
#                 print(f"学号为 {sid} 的学生删除成功。")
#             else:
#                 print(f"id 为 {sid} 的学生不存在,请检查输入是否正确")
#
#
# # 图书类  图书(图书编号, 书名, 作者, 出版日期, 当前状态(是否可借))
# class Book:
#     def __init__(self, bid, title, writer, pubdate, state):
#         self.bid = bid
#         self.title = title
#         self.writer = writer
#         self.pubdate = pubdate
#         self.state = state
#
#     def __str__(self):
#         status = "可借" if self.state else "不可借"
#         return f"图书编号: {self.bid}, 书名: {self.title}, 作者: {self.writer}, 出版日期: {self.pubdate}, 状态: {status}"
#
#
# class BookManage:
#     def __init__(self):
#         self.book = []
#
#     def get_book_title(self):
#         while True:
#             title = input("输入图书的书名")
#             if 1 <= len(title) <= 10:
#                 return title
#             else:
#                 print(f"输入不合法,请重新输入,书名范围为1-10")
#
#     def get_book_writer(self):
#         while True:
#             writer = input("输入图书的作者")
#             if 1 <= len(writer) <= 10:
#                 return writer
#             else:
#                 print(f"输入不合法,请重新输入,作者范围为1-10")
#
#     def get_book_pubdate(self):
#         while True:
#             pubdate = input("输入图书的出版日期")
#             if 1 <= len(pubdate) <= 10:
#                 return pubdate
#             else:
#                 print(f"输入不合法,请重新输入,出版日期范围为1-10")
#
#     def get_book_bid(self):
#         return 1001 if not self.book else self.book[-1].sid + 1
#
#     def get_book_id(self):
#         bid = int(input('输入图书编号'))
#         for b in self.book:
#             if b.bid == bid:
#                 return bid
#         else:
#             print('没有找到该id的图书')
#
#     def get_user_sub_option(self):
#         while True:
#             sub_option = input("请问您是否继续,继续(Y), 返回(N)")
#             if sub_option not in ["Y", "y", "N", "n"]:
#                 print("输入不合法,只能输入y/n")
#             else:
#                 return sub_option
#
#     def add_book(self):
#         while True:
#             book_title = self.get_book_title()
#             book_writer = self.get_book_writer()
#             book_pubdate = self.get_book_pubdate()
#             bid = self.get_book_bid()
#             b = Book(bid, book_writer, book_title, book_pubdate, state="True")
#             self.book.append(b)
#             print(f"图书 {book_title} 添加成功,编号为 {bid}")
#             sub_option = self.get_user_sub_option()
#             if sub_option == "Y" or sub_option == "y":
#                 pass
#             else:
#                 break
#
#     def remove_book(self):
#         bid = self.get_book_id()
#         for b in self.book:
#             if b.bid == bid:
#                 self.book.remove(b)
#                 print(f"编号为 {bid} 的图书删除成功。")
#             else:
#                 print(f"id 为 {bid} 的图书不存在,请检查输入是否正确")
#
#
# # 借阅类 借阅(记录id, 学生,图书,借阅日期,归还日期(未归还则为空))
# class Borrow:
#     def __init__(self, record_id, student_sid, book_bid, borrow_date, return_date=None):
#         self.record_id = record_id
#         self.student_sid = student_sid
#         self.book_bid = book_bid
#         self.borrow_date = borrow_date
#         self.return_date = return_date
#
#     def __str__(self):
#         return f"记录ID:{self.record_id},学生:{self.student_sid},图书:{self.book_bid},借阅日期:{self.borrow_date},归还日期:{self.return_date}"
#
#
# class BorrowManage:
#     def __init__(self):
#         self.sm = StudentManage()
#         self.bkm = BookManage()
#         self.borrow = []
#
#     def get_book_bm_jid(self):
#         return 11 if not self.borrow else self.borrow[-1].jid + 1
#
#     def get_student_j_id(self):
#         sid = int(input('输入要借书学生的id'))
#         for s in self.sm.student:
#             if sid == s.sid:
#                 return sid
#         else:
#             print('没有找到该id的学生')
#
#     def get_book_j_id(self):
#         bid = int(input('输入要借的书的id'))
#         for b in self.bkm.book:
#             if bid == b.bid:
#                 return bid
#         else:
#             print('没有找到该id的图书')
#
#     def borrow_book(self):
#         student_sid = self.get_student_j_id()
#         book_bid = self.get_book_j_id()
#         borrow_date = input("输入借阅日期")
#         record_id = self.get_book_bm_jid()
#         borrow_record = Borrow(record_id, student_sid, book_bid, borrow_date)
#         self.borrow.append(borrow_record)
#         print(f"id为{student_sid}的学生借阅了编号为{book_bid}的图书")
#
#     def return_book(self):
#         record_id = int(input("输入记录ID:"))
#         for borrow_record in self.borrow:
#             if borrow_record.record_id == record_id:
#                 return_date = input("输入归还日期:")
#                 borrow_record.return_date = return_date
#                 print(f"学号为{borrow_record.student_sid}学生归还了编号为{borrow_record.book_bid}图书")
#
#     def display_borrowed_books(self):
#         if not self.borrow:
#             print("当前没有借阅记录")
#         else:
#             print("所有借阅记录:")
#             for borrow_record in self.borrow:
#                 print(borrow_record)
#
#
# class Manage:
#     def __init__(self):
#         self.brm = BorrowManage()
#
#     def show_menu(self):
#         menu = """1. 添加学生
#         2. 删除学生
#         3. 添加图书
#         4. 删除图书
#         5. 借书
#         6. 还书
#         7. 展示所有借阅记录
#         0. 退出"""
#         print(menu)
#
#     def get_main_option(self):
#         while True:
#             option = input("输入数字,选择对应的选项")
#             if option not in [str(i) for i in range(8)]:
#                 print("输入不合法,请选择正确的选项")
#             else:
#                 return option
#
#     def run(self):
#         while True:
#             self.show_menu()
#             option = self.get_main_option()
#             if option == "0":
#                 break
#             elif option == "1":
#                 self.brm.sm.add_student()
#             elif option == "2":
#                 self.brm.sm.remove_student()
#             elif option == "3":
#                 self.brm.bkm.add_book()
#             elif option == "4":
#                 self.brm.bkm.remove_book()
#             elif option == "5":
#                 self.brm.borrow_book()
#             elif option == "6":
#                 self.brm.return_book()
#             elif option == "7":
#                 self.brm.display_borrowed_books()
#
#
# if __name__ == '__main__':
#     manage = Manage()
#     manage.run()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com