使用python构建学生-老师-课程选课系统

在这里插入图片描述
首先生成三份数据库,包括学生信息,教师信息,课程信息
在这里插入图片描述
反映在代码中类似于:

qq=Student('qq',2190502110,18811375011)
 ww=Student('ww',2190502111,18811375012)
 ee=Student('ee',2190502112,18811375013)
 rr=Student('rr',2190502113,18811375014)
 tt=Student('tt',2190502114,18811375015)
 yy=Student('yy',2190502115,18811375016)
 uu=Student('uu',2190502116,18811375017)
 ii=Student('ii',2190502117,18811375018)
 oo=Student('oo',2190502118,18811375019)
 pp=Student('pp',2190502119,18811375020)
 aa=Student('aa',2190502120,18811375021)
 ss=Student('ss',2190502121,18811375022)
 dd=Student('dd',2190502122,18811375023)
 ff=Student('ff',2190502123,18811375024)
 gg=Student('gg',2190502124,18811375025)
 hh=Student('hh',2190502125,18811375026)
 jj=Student('jj',2190502126,18811375027)
 kk=Student('kk',2190502127,18811375028)
 ll=Student('ll',2190502128,18811375029)
 zz=Student('zz',2190502129,18811375030)
 db = shelve.open('Studentdb')
 for obj in (qq,ww,ee,rr,tt,yy,uu,ii,oo,pp,\
  aa,ss,dd,ff,gg,hh,jj,kk,ll,zz):
  db[obj.name]=obj#将对象的名字用作键
 db.close()

对数据库进行操作如下:

# 实现学生选课系统
import shelve
import random
#读取数据库(excel表)内信息
# 学生类
# 属性:姓名、学号、电话、所选课程列表
# 方法:查看:显示该学生所有课程信息;添加课程:将选好的课程添加到课程列表中
class Student:
	def __init__(self,name,number=0,phone=0,classname=None):#设置None,未赋值时=None更符合客观事实
		self.name=name
		self.number=number
		self.phone=phone
		self.classname=[classname]#写为列表
	def displayclass(self):#显示该学生所有课程信息
		print('This Student who named "{}" chooses this courses:"{}"'\
			.format(self.name,self.classname))
	def addClass(self,anyclassname):#向该学生已有课程中加入后选择的课程(即添加课程)
		self.classname=anyclassname
		return self.classname

# 课程类
# 属性:课程编号、课程名称、教师名
# 方法:查看:显示该课程的全部信息;设置教师:给当前课程安排一个教师
class ClassName:
	def __init__(self,cname,cnumber,cteacher=None):#初始化设置属性
		self.number=cnumber
		self.name=cname
		self.teacher=cteacher
	def display(self):#显示该课程的全部信息
		print('Display current class message:classnumber is"{}",\
			classname is "{}",classTeacher is {}"'.format\
			(self.cnumber,self.classname,self.classTeacher))
	def setteacher(self,anyteacher):#设置课程教师
		self.cteacher=anyteacher
		return self.cteacher

# 教师类:
# 属性:教师编号,教师名、电话、所教课程列表
# 方法:查看:查看该教师的所有课程
class Teacher:
	def __init__(self,name,number,phone,classname):#设置None,未赋值时=None更符合客观事实
		self.name=name
		self.number=number
		self.phone=phone
		self.classname=[classname]
	def displayTC(self):#print this teacher's all courses
		print('This teacher is"{}",He (She) teaches this courses:"{}"'.format(self.name,self.classname))
	def setClass(self,anyclassname):
		self.classname=anyclassname
		return self.classname

#创建20名学生,6个课程,3名教师保存于数据库中
if __name__=='__main__':
	cdb = shelve.open('Coursesdb')
#给3名任课教师随机安排6个课程
	tdb = shelve.open('Teacherdb')
	teacherClasses=[[],[],[]]
	ClassNames=list(cdb.keys())
	for ClassName in ClassNames:
		index = random.randint(0,2)
		teacherClasses[index].append(ClassName)
	i=0
	for key in sorted(tdb):
		a=tdb[key].name
		b=tdb[a]
		b.setClass(teacherClasses[i])
		tdb[a]=b
		b.displayTC()
		i=i+1
	tdb.close()	
#给20名学生随机分配3门课程
	sdb = shelve.open('Studentdb')
	AddClassName=[[] for i in range(0,20)]
	ClassNames=list(cdb.keys())
	i=0
	for key in sorted(sdb):
		L=[0,1,2,3,4,5]
		random.shuffle(L)
		L=L[0:3]
		AddClassName[i]=[ClassNames[L[j]] for j in range(3)]
		a=sdb[key].name
		b=sdb[a]
		b.addClass(AddClassName[i])
		sdb[a]=b
		i=i+1
	cdb.close()
#最终显示这20名学生选课情况
	for key in sorted(sdb):
		a=sdb[key].name
		b=sdb[a]
		b.displayclass()
	sdb.close()

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值