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 = sid
        self.name = name
        self.age = age
        self.sex = sex

    def update(self, _name, _age, _sex):
        self.name = _name
        self.age = _age
        self.sex = _sex

    def __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 name
            else:
                print(f"输入不合法,请重新输入,名字范围为2-10")

    def get_student_age(self):
        while True:
            age = int(input("输入学生的年纪"))
            if 10 <= age <= 40:
                return age
            else:
                print(f"输入不合法,请重新输入,年龄范围为10-40")

    def get_student_sex(self):
        while True:
            sex = input("输入学生性别")
            if sex not in ["男", "女"]:
                print("输入不合法,请重新输入男/女")
            else:
                return sex

    def get_student_sid(self):
        return 101 if not self.students else self.students[-1].sid + 1

    def get_student_id(self):
        sid = int(input('输入学生id'))
        for s in self.students:
            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_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":
                pass
            else:
                break

    def 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)
                break
        else:
            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":
                    pass
                else:
                    break

    def 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 option

    def run(self):
        while True:
            self.show_main_menu()
            option = self.get_main_option()
            if option == "0":
                print("退出学生管理系统")
                break
            elif 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 json

class Student:
    def __init__(self, sid, name, age, sex):
        self.sid = sid
        self.name = name
        self.age = age
        self.sex = sex

    def __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 name
            else:
                print(f"输入不合法,请重新输入,名字范围为2-10")

    def get_student_age(self):
        while True:
            age = int(input("输入学生的年纪"))
            if 10 <= age <= 40:
                return age
            else:
                print(f"输入不合法,请重新输入,年龄范围为10-40")

    def get_student_sex(self):
        while True:
            sex = input("输入学生性别")
            if sex not in ["男", "女"]:
                print("输入不合法,请重新输入男/女")
            else:
                return sex

    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_age = self.get_student_age()
            student_sex = self.get_student_sex()
            sid = 101 if not self.students else self.students[-1].sid + 1
            s = 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":
                pass
            else:
                break

    def show_all_student(self):
        if self.students:
            for s in self.students:
                print(s)
        else:
            print("不好意思,现在还没有插入学生信息")

    def get_ava_age(self):
        total = 0
        for s in self.students:
            total += s.age
        print(total / len(self.students))

    def get_count_sex(self):
        result = {}
        for s in self.students:
            if s.sex not in result:
                result[s.sex] = 1
            else:
                result[s.sex] += 1

        for 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 option

    def run(self):
        while True:
            self.show_main_menu()
            option = self.get_main_option()
            if option == "0":
                break
            elif 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()

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值