python写的简单的选课系统,遇到一堆问题

写了一个简单的选课系统的代码,问题一堆,遇到pickle反序列化不能完全导出的问题,大神还烦解答下吧

#!/bin/bash/evn python
#* coding:utf-8 *
#Autior Dahai
import pickle

‘’‘定义三个函数,创建班级,创建课程和创建老师’’’

def creat_class():

classes_creat_name = input("请输入班级的姓名:")
with open("classes_creat.txt",'ab') as f:
    f.write(pickle.dumps(classes_creat_name))

def creat_course():
course_creat_name = input(“请输入课程名称:”)
with open(“course_creat.txt”,‘ab’) as f:
f.write(pickle.dumps(course_creat_name))

def creat_teachers():

teachers_creat_name = input("请输入老师姓名:")
teachers_creat_passwd=input("请输入密码---->>>")
teachers_creat_info={teachers_creat_name:teachers_creat_passwd}

with open("teachers_creat.txt",'ab') as f:
    f.write(pickle.dumps(teachers_creat_info))

‘’‘现有班级情况’’’
classes_python=[‘python精品班14期’,‘python冲刺班14期’,‘python基础班14期’]
classes_linux=[‘linux精品班14期’,‘linux冲刺班14期’,‘linux基础班14期’]
classes_go=[‘go精品班14期’,‘go冲刺班14期’,‘go基础班14期’]
‘’‘初始化班级’’’
def initialize_class():
with open(“course_creat.txt”,‘wb’) as f:
f.write(pickle.dumps(classes_python))
f.write(pickle.dumps(classes_linux))
f.write(pickle.dumps(classes_go))

‘’‘定义初始化函数,初始化后课程回归到刚开始状态’’’
def initialize():
with open(“classes_creat.txt”,‘wb’)as f:
f.write(pickle.dumps(classes_python))
f.write(pickle.dumps(classes_linux))
f.write(pickle.dumps(classes_go))

print("系统初始化已完成")

‘’‘定义学校’’’
class School(object):
def init(self,name,addr):
self.name=name
self.addr=addr
course_name=[]
classes_name=[]
teachers_name=[]

def tell(self):
    print('''
    -------info of %s--------
    school name:%s
    school address:%s
    school teaching:IT'''%(self.name,self.name,self.addr))

school1=School(‘老男孩教育’,‘北京天安门’)
school2=School(‘老男孩教育’,‘上海南京路’)
‘’‘定义班级’’’
class Clesses(School):
def index(self,name,addr,course_name,teachers_name):
super(Clesses, self).index(course_name,teachers_name)
def tell(self):
print(’’’
-------info of %s--------
classes name:%s
classes course:%s
classes teacher:%s
classes address:%s’’’ % (self.name, self.name, self.course_name,self.teachers_name,self.addr))

‘’‘定义课程’’’
class Course(object):
def init(self,name,period,cost,addr):
self.name=name
self.period=period
self.cost=cost
self.addr=addr

def tell(self):
    print('''
                   -------info of %s--------
                   course name:%s
                   course period:%s
                   classes cost:%s
                   classes address:%s''' % (self.name, self.name, self.period, self.cost,self.addr))

python=Course(‘python14期’,‘8个月’,12000,‘北京’)
linux=Course(‘linux13期’,‘6个月’,10000,‘北京’)
go=Course(‘go8期’,‘5个月’,9000,‘上海’)

‘’‘定义学生注册函数’’’
def enroll():
print(’--------欢迎进入学员注册界面--------’)
name = input(“请输入你的姓名”)
age = input(“请输入你的年龄”)
sex = input(“请输入你的性别”)
passwd = input(“请输入你的密码”)
date1=[name,age,sex,passwd]
with open(“学员信息.txt”, ‘ab’) as f:
f.write(pickle.dumps(date1))

‘’‘定义学生这个类:可以选择课程和班级’’’
class Student(object):
def init(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
self.course = []
self.classes=[]

def tell(self):
    print('''
                          -------info of %s--------
                          student name:%s
                          student age:%s
                          student sex:%s
                          student course:%s
                          student classes:%s''' % (self.name, self.name, self.age, self.sex, self.course,self.classes))



def choice_course(self):             #进入学生选课函数
    print(school1.tell(), school2.tell())
    student_school_choice = input("请选择学校名")
    print("1-->")
    python.tell()
    print("2-->")
    linux.tell()
    print("3-->")
    go.tell()
    choice_name=input("请选择课程,输入对应编号")
    money=int(input('请输入金额'))
    if money == 12000:
        with open("classes_creat.txt", 'rb') as f:
            date = pickle.loads(f.readline())
            print(date)
        choice_classes = input("请选择班级")

        with open("学员课表.txt", 'ab') as f:
            f.write(pickle.dumps(choice_classes))
            f.write(pickle.dumps('\npython课程\n'))

    elif money == 10000:

        with open("classes_creat.txt", 'rb') as f:
            date = pickle.loads(f.readline())
            print(date)
        choice_classes = input("请选择班级")
        self.course.append('linux')
        self.classes = [choice_classes]

        with open("学员课表.txt", 'ab') as f:
            f.write(pickle.dumps(choice_classes))
            f.write(pickle.dumps(self.course))


    elif money == 9000:
        with open("classes_creat.txt", 'rb') as f:
            date = pickle.loads(f.readline())
            print(date)
        choice_classes = input("请选择班级")
        self.course.append('go')
        self.classes = [choice_classes]

        with open("学员课表.txt", 'ab') as f:
            f.write(pickle.dumps(choice_classes))
            f.write(pickle.dumps(self.course))

    with open("学员信息.txt", 'ab') as f:
        f.write(pickle.dumps(student_school_choice))
    print("恭喜您报名成功")

initialize()

st1=Student(‘zhansan’,25,‘man’)

st1.choice_course()

‘’‘主程序入口’’’
view={1:“管理员入口”,
2:“老师入口”,
3:“学生入口”}

print("-----------欢迎进入老男孩课程系统-----------")
while True:
print(“系统窗口如下:”)
print(view)

import_in=int(input("请选择系统窗口编号:----->>>"))
if import_in==1:
    admin=input("请输入管理员账号---->>>")
    passwd=input("请输入管理员密码---->>>")
    if passwd=='abc123':
        view_admin={1:"创建班级",
                    2:"创建老师",
                    3:"创建课程",
                    4:"查看学员信息",
                    5:"初始化班级"}


        print("欢迎进入管理界面")
        print(view_admin)
        admin_choice=int(input("------请选择操作编号---->>>>"))
        if admin_choice==1:
            creat_class()
        elif admin_choice==2:
            creat_teachers()
        elif admin_choice==3:
            creat_course()
        elif admin_choice==4:
            with open("学员信息.txt",'rb') as f:                                  ###后面补充学员信息情况
                date2=pickle.loads(f.read())
            print(date2)
        elif admin_choice==5:
            ok=input("此操作有风险,是否确认操作y/n:---->")
            if ok=="y":
                initialize()
                initialize_class()       ###初始化函数

            else:
                print("谢谢使用")
                pass
                                              #写程序时再加入主变量
elif import_in==2:
    with open("teachers_creat.txt", 'rb') as f:
        date=pickle.loads(f.readline())
        teacher_admin=input("请输入账号---->>")
        teacher_passwd=input("请输入密码---->>")
        if teacher_passwd==date[teacher_admin]:


            view_teacher={1:"查看班级信息",
                          2:"查看班级学员列表",
                          3:"修改密码"}
            print("---------欢迎进入教师入口--------")
            print(view_teacher)
            teacher_choice=int(input("请选择操作编号----->>>"))
            if teacher_choice==1:
                with open("course_creat.txt",'rb')as f:
                    info_ok=[]
                    for info in pickle.loads(f.read()):
                        info_ok.append(info)

                    print(info_ok)


            elif teacher_choice==2:
                pass                          ##创建完学员信息后补全

            elif teacher_choice==3:
                pass
elif import_in==3:
    enroll()
    with open("学员信息.txt", 'rb') as f:
        stu1_info=pickle.loads(f.readline())
    student1=Student(stu1_info[0],stu1_info[1],stu1_info[2])
    student1.choice_course()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学生选课系统是一个基本的数据库管理系统,它可以帮助学生和教师更好地管理和查询课程信息。在Python中,使用函数可以很简单地实现学生选课系统。 首先,需要定义一些关键字,例如:课程名称、课程编号、授课教师、学生姓名、学号等。此外,还需要定义一些函数用于实现查询、添加、删除和修改等操作。比如: 1、查询课程信息:需要定义一个查询函数,根据课程名称或者课程编号来查询课程的基本信息,包括授课教师、学生人数、课时等。 2、添加课程信息:需要定义一个添加函数,根据输入的关键字信息添加课程,包括课程名称、课程编号、授课教师、学生人数、课时等。 3、删除课程信息:需要定义一个删除函数,根据输入的关键字信息来删除课程记录,包括课程名称、课程编号、授课教师、学生人数、课时等。 4、修改课程信息:需要定义一个修改函数,根据输入的关键字信息来修改课程记录,包括课程名称、课程编号、授课教师、学生人数、课时等。 对于每个函数,需要定义一个逻辑框架,确定参数的类型、输入和输出。同时,需要考虑代码的可读性、复杂度和可扩展性,保证代码的质量和效率。 总之,Python函数学生选课系统可以使得开发者更简单高效地实现基础数据管理系统,从而节约开发时间和成本,提高代码质量。 ### 回答2: Python是一种常用的编程语言,在编学生选课系统时可以利用Python提供的丰富函数库,编出简洁高效的代码。 首先,我们可以创建一个专门用于存储学生信息的列表,每个学生都可以用一个字典来存储他们的姓名、学号、已选课程等信息。 然后,我们可以编选课函数,该函数需要接收学生信息以及课程信息作为参数,将选课信息存储到学生信息列表中。 选课过程中还需要进行课程容量的判断,判断课程是否已满员,如果课程已满或者学生重复选同一门课程则需要给出相应的提示。 另外,我们还可以编一个查询选课情况的函数,该函数可以接收学生信息作为参数,输出该学生所选课程的详细信息。 最后,我们可以使用Python提供的GUI库,例如Tkinter来实现图形化界面,让用户可以使用UI操作来进行选课、查询操作等。 总的来说,使用Python学生选课系统相较于其他编程语言更加简单、高效且易于维护。借助Python的丰富函数库和图形化界面库,帮助学生更加方便快捷的进行选课。 ### 回答3: Python函数是一种封装了特定功能的代码块,通过调用函数可以实现相应的操作。在编一个学生选课系统时,可以使用Python函数来实现整个系统的功能。 首先,可以编一个函数用来展示可选课程的信息,包括课程编号、名称、授课教师和剩余名额等信息。在该函数中需要使用Python的输出函数来展示出这些信息,以方便学生选择课程。 其次,可以编一个函数用来选择课程,当学生选择一门课程时,该函数将检查该课程是否还有剩余名额。如果有,将该学生添加到课程名单中,同时减少该课程的剩余名额;如果没有,提示学生选择其他课程。 最后,可以编一个函数用来展示已选课程的信息,包括学生姓名、学号和所选的课程信息等。在该函数中需要指定特定的输出格式,便于学生和教师查看已选课程的情况。 整个学生选课系统是通过这三个函数来实现的,每个函数都有特定的功能,通过相互配合来完成整个系统的任务。同时,由于Python函数可以被重复调用,所以该系统可以用来处理多个学生的选课需求。这种基于函数的设计模式在编大型软件时尤其重要,可以帮助程序员将复杂的问题分解成更小的部分,并更好地组织代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值