zoukankan      html  css  js  c++  java
  • python第四次周末大作业

    '''
    选课系统开发 系统登录需要有两类用户:学生、管理员,针对不用用户提供不同功能:
    学生用户 :对于学生用户来说,登陆之后有三个功能
    1、查看所有课程
    2、选择课程
    3、查看所选课程
    4、删除已选课程
    管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作。
    1、创建课程
    2、创建学生学生账号
    3、查看所有课程
    4、查看所有学生
    5、查看所有学生的选课情况
    '''
    import os
    
    
    
    class Student:
        def __init__(self, login_name, login_pwd, sname, cour_lst=None):
            self.login_name = login_name
            self.login_pwd = login_pwd
            self.sname = sname
            self.cour_lst = [] if cour_lst==None else cour_lst
    
        @staticmethod
        def display_all_student():
            f = open("stu", mode="r", encoding="utf-8")
            i = 1
            for line in f:
                d = eval(line.strip())
                print(i, d['sname'], d['login_name'])
                i += 1
            f.close()
    
    
    
        def xuanke(self): # self是当前登录的学生
            while 1:
                # 显示所有课程
                Course.display_all_course()
                num = int(input("请输入你要选择的课程:")) # 3
                f = open("cour", mode="r", encoding="utf-8")
                for i in range(num):
                    line = f.readline()
    
                if line.strip() in self.cour_lst: # 选过这个课
                    print("你已经选过当前这门课了")
    
                else: # 没选过这个课
                    self.cour_lst.append(line.strip())
                    self.write_to_file() # 把学生信息同步到文件中
                    print("选课成功")
    
                f.close()
    
                y = input("是否继续选课(Y/N)")
                if y.upper() != "Y":
                    return
    
        def shanchu(self):
    
            for i in range(len(self.cour_lst)):
                print(i+1, self.cour_lst[i])
            num = int(input("请输入你要删除的课程"))
            self.cour_lst.pop(num-1)
            self.write_to_file()
            print("删除成功!!!")
    
    
        def write_to_file(self):
            with open("stu", mode="r", encoding="utf-8") as f1, 
                open("stu_副本", mode="w", encoding="utf-8") as f2:
    
                for line in f1:
                    d = eval(line.strip())
                    if d['login_name'] == self.login_name and d['login_pwd'] == self.login_pwd:
                        f2.write(str(self.__dict__) + "
    ")
                    else:
                        f2.write(line)
            os.remove("stu")
            os.rename("stu_副本", "stu")
    
    class Course:
        def __init__(self, cname):
            self.cname = cname
    
        @staticmethod #
        def display_all_course():
            f = open("cour", mode="r", encoding="utf-8")
            i = 1
            for line in f:
                print(i, line.strip())
                i += 1
            f.close()
    
    # 让整个程序跑起来
    class Client:
        def __init__(self):
            self.stu = None # 记录登录的学生状态
    
        def admin_client(self): # 管理员
    
            while 1:
                menu = ("创建学生", "创建课程", "查看所有课程", "查看所有学生", "查看所有学生的选课情况", "退出")
                for i in range(len(menu)):
                    print(i+1, menu[i])
    
                num = input("请输入你要执行的菜单:")
                if num == "1":
                    sname = input("请输入学生的姓名:")
                    login_name = input("请输入学生的登录名:")
                    login_pwd = input("请输入学生的登录密码:")
                    stu = Student(login_name, login_pwd, sname)
                    # 把学生对象中的内容写入到文件中
                    f = open("stu", mode="a", encoding="utf-8")
                    f.write(str(stu.__dict__)+"
    ")
                    f.flush()
                    f.close()
    
    
                elif num == "2":
                    cname = input("请输入你的课程名称:")
                    f = open("cour", mode="a", encoding="utf-8")
                    f.write(cname+"
    ")
                    f.flush()
                    f.close()
    
                elif num == "3":
                    Course.display_all_course()  # 查看所有课程
                elif num == "4":
                    Student.display_all_student() # 查看所有学生
    
                elif num == "5":
                    f = open("stu", mode="r", encoding="utf-8")
                    for line in f:
                        d = eval(line.strip())
                        print(d['sname'], d["cour_lst"])
                    f.close()
    
                elif num == "6":
                    print("=========管理员退出==============")
                    return # exit()
                else:
                    print("输入有误. 请重新选择菜单")
    
        def stu_client(self):
    
            while self.stu == None: # 用学生的登录状态来判断程序的走向
    
                uname = input("请输入学生用户名:")
                upwd = input("请输入学生的密码:")
                f = open("stu", mode="r", encoding="utf-8")
                for line in f:
                    # {'login_name': 'baby', 'login_pwd': '123456', 'sname': '宝宝', 'cour_lst': []}
                    d = eval(line.strip())
                    if d['login_name'] == uname and d['login_pwd'] == upwd:
                        print("登录成功!")
                        # 灵魂
                        self.stu = Student(d['login_name'], d['login_pwd'], d['sname'], d['cour_lst'])
                        break
                else:
                    print("登录失败")
                f.close()
    
            while 1:
                menu = ("查看所有课程", "选课", "查看已选的课程", "删除已选课程", "退出")
                for i in range(len(menu)):
                    print(i+1, menu[i])
    
                num = input("请输入你要执行的菜单:")
                if num == "1":
                    Course.display_all_course()
                elif num == "2":
                    self.stu.xuanke() # 实例方法
                elif num == "3":
                    for c in self.stu.cour_lst:
                        print(c)
                elif num == "4":
                    self.stu.shanchu()
                elif num =='5':
                    print("退出!!!!!")
                    ###################################
                    self.stu = None # 课上忘了写
                    ###################################
                    return
    
        def run(self):
            while 1:
                print("=========欢迎进入学生选课系统=============")
                print("=========1. 管理员=======================")
                print("=========2. 学生=========================")
                num = input("请问, 你是管理员(1)还是学生(2):")
                if num == "1":
                    self.admin_client()
                elif num == "2":
                    self.stu_client()
                else:
                    print("您输入的内容有误. 请重新输入")
    
    c = Client()
    c.run()
    不怕大牛比自己牛,就怕大牛比自己更努力
  • 相关阅读:
    XML Serializable Generic Dictionary
    MSBuild Community Tasks Project
    Firebird 数据库资源
    Atlas Samples & Suse Linux 10.1
    IBATISNETNET 1.3 开发指南系列文章
    线程安全的Generic Dictionary
    商务智能:SQL2005给我们的机会
    准备写一个Ibatisnet开发指南
    取到当前正在执行的script元素
    IE10 CSS hack
  • 原文地址:https://www.cnblogs.com/zaizai1573/p/10182081.html
Copyright © 2011-2022 走看看