zoukankan      html  css  js  c++  java
  • 选课系统开发


    '''
    选课系统开发 系统登录需要有两类用户:学生、管理员,针对不用用户提供不同功能:
    学生用户 :对于学生用户来说,登陆之后有三个功能
    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()




  • 相关阅读:
    FND_CONCURRENT.SET_COMPLETION_STATUS(服务器端函数)
    Oracle 11i与12R在功能上有什么区别
    查看oracle数据库最近执行了哪些sql语句
    How to Change the First Accounting Open Period
    AR Adjustment
    Oracle 临时表
    (转)不用安装oracle客户端,PL/SQL也能远程访问数据库
    ERP 是否支持同个账户,同一时间,只能有一个连接?
    多组织访问控制(MOAC)
    【精华ASP代码收集】
  • 原文地址:https://www.cnblogs.com/bpbl/p/10208817.html
Copyright © 2011-2022 走看看