侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python实现教务管理系统

Python  /  管理员 发布于 7年前   236

这是一个使用Python实现基于dos下面向数据库的教务管理系统,实现了管理员、教职工、学生三种不同身份的操作,可以实现的功能有:学生、教职工信息管理、不同权限的信息发布、管理各种信息等。代码约1200行,对于python初学者应该能提供一些帮助。

Login.py

#-*- coding:utf-8 -*-#####系统登录import osimport MySQLdbimport timeclass Login: def __init__(self,conn): self.account = '' self.password = '' self.level = 2 self.conn = conn  def LoginSurface(self,info): os.system('cls') width = 50 title = 'LOGIN' body1 = '[A]Admin' body2 = '[T]Teacher' body3 = '[S]Student' body4 = '[Q]Quit' print '=' * width print ' ' * ((width-len(title))/2), title print ' ' * ((width-len(body1))/2),body1 print ' ' * ((width-len(body1))/2),body2 print ' ' * ((width-len(body1))/2),body3 print ' ' * ((width-len(body1))/2),body4 print ' ' * ((width-len(info))/2), info print '-' * width  def MainFunc(self): err = '' while True: self.LoginSurface(err) level = raw_input('Access:') level = level.upper() if level == 'A':self.level = 0 elif level == 'T': self.level = 1 elif level == 'S': self.level = 2  elif level =='Q': return False else :  err = 'Error Action!' continue self.account = raw_input('Account:') self.password = raw_input('Password:') if self.CheckAccount(): err = 'Login Success!' self.LoginSurface(err) print 'Please wait...' time.sleep(3) return True; else : err = 'Login Failed!' def GetLoginAccount(self): return [self.account,self.password,self.level]  def CheckAccount(self): cur = self.conn.cursor() sqlcmd = "select Account,Password,AccountLevel from LoginAccount where Account = '%s'" % self.account if cur.execute(sqlcmd) == 0: return False temp = cur.fetchone() cur.close() if temp[1] == self.password and temp[2] == self.level: return True else: return False  def Quit(self): pass if __name__ == '__main__': conn = MySQLdb.connect(user='root',passwd = '',db = 'DB_EducationalManagementSystem'); a = Login(conn) a.MainFunc() a.Quit() conn.close()

 main.py

#-*- coding:utf-8 -*-####系统入口import osimport MySQLdbimport Studentimport Teacherimport Loginimport SystemManagerif __name__ == '__main__': conn = MySQLdb.connect(user='root',passwd = '',db = 'db_educationalmanagementsystem') log = Login.Login(conn) if log.MainFunc(): account = log.GetLoginAccount() if account[2] == 0: usr = SystemManager.SystemManager(conn,account[0],account[1]) usr.MainFunc() elif account[2] == 1: usr = Teacher.Teacher(conn,account[0],account[1]) usr.MainFunc() elif account[2] == 2: usr = Student.Student(conn,account[0],account[1]) usr.MainFunc() else :  conn.close() raise exception() conn.close()

Student.py

#-*- coding:utf-8 -*-####学生账号import MySQLdbimport osclass Student: def __init__(self,conn,account,passwd):  ###构造,conn连接数据库 cur = conn.cursor() sqlcmd = "select Name,Gender,Birth,Academy,Major,Grade,TeacherNo from StudentInfo where StudentNo = '%s'" % account cur.execute(sqlcmd) res = cur.fetchone() sqlcmd = "select Name from TeacherInfo where TeacherNo = '%s'" % res[6] cur.execute(sqlcmd) TeacherName = cur.fetchone() cur.close()  self.width = 150 self.conn = conn self.account = account self.Password= passwd self.Name = res[0] self.Gender = res[1] self.Birth = res[2] self.Accademy= res[3] self.Major = res[4] self.Grade = res[5] self.Teacher = TeacherName[0]  def MainFunc(self): ###主要执行函数 info = '' while True: self.MainSurface(info) choice = raw_input('What to do?') choice = choice.upper() if choice != 'P' and choice != 'M' and choice != 'Q': info = 'Error Action!' continue if choice == 'P': info = self.PersonalInfo() elif choice == 'M': info = self.OperatMessage() else : break  def PersonalInfo(self): ###个人信息 info = '' while True: self.PersonalInfoSurface(info) choice = raw_input('What to do?') choice = choice.upper() if choice != 'C' and choice != 'Q': info = 'Error Action!' continue if choice == 'C': info = self.ChangePersonalInfo() else : break return info  def ChangePersonalInfo(self): ###修改个人信息 NewGender = self.Gender NewBirth = self.Birth NewPw = self.Password while True: choice = raw_input('Change Gender?(y/n)') choice = choice.lower() if choice == 'y': NewGender = raw_input('New Gender:') break elif choice == 'n': break else : pass while True: choice = raw_input('change Born Date?(y/n)') choice = choice.lower() if choice == 'y': NewBirth = raw_input('New Born Date:') break elif choice == 'n': break else : pass while True: choice = raw_input('change Password?(y/n)') choice = choice.lower() if choice == 'y': NewPw = raw_input('New Password:') break elif choice == 'n': break else : pass info = 'Change Success!' cur = self.conn.cursor() if NewGender != self.Gender or NewBirth != self.Birth: sqlcmd = "update StudentInfo set Gender = '%s',Birth = '%s' where StudentNo = '%s'" % (NewGender,NewBirth,self.account) if cur.execute(sqlcmd) == 0: self.conn.rollback() cur.close() return 'Change Fail!' if NewPw != self.Password: sqlcmd = "update LoginAccount set Password = '%s' where Account='%s'" % (NewPw,self.account) if cur.execute(sqlcmd) == 0: self.conn.rollback() cur.close() return 'Change Fail!' else : self.conn.commit() self.Gender = NewGender self.Birth = NewBirth self.Password = NewPw cur.close() return 'Change Success!'  def OperatMessage(self): info = '' while True: self.MessageSurface(info) self.MessageList() choice = raw_input('What to do?') choice = choice.upper() if choice == 'M': msg = input('Message Id:') info = self.MessageInfo(msg) elif choice == 'Q': break; else : info = 'Error Action!' return info  def MessageList(self): ###查看消息列表 cur = self.conn.cursor() print '' sqlcmd = "select Id,SenderName,SendTime,Title from AllMessage where statu = 'pass' and MsgLevel = 1" if cur.execute(sqlcmd) == 0: return  print '-' * self.width while True: temp = cur.fetchone() if not temp: break; print '%3d%-20s%-50s%s' % (temp[0],temp[1],temp[3],temp[2]) print '-' * self.width cur.close()  def MessageInfo(self,MsgNo): ###查看详细消息, No消息编号 cur = self.conn.cursor() sqlcmd = "select SenderName,SendTime,Title,Content from AllMessage where Id = %d" % MsgNo if cur.execute(sqlcmd) == 0: cur.close() return 'Read Fail!' article = cur.fetchone() cur.close() os.system('cls') print '=' * self.width print ' ' * ((self.width - len(article[2]))/2) , article[2] head = article[0] + ' ' + str(article[1]) print ' ' * ((self.width - len(head))/2) , head print '-' * self.width print article[3] print '=' * self.width raw_input('Press any key to return!') return ''  def Quit(self): ###退出 pass  def MainSurface(self,info): ###主界面 os.system('cls') print '=' * self.width title = 'Welcome %s!' % self.Name body1 = '[P]Personal Information' body2 = '[M]Message' body3 = '[Q]Quit' print ' ' * ((self.width - len(title))/2),title print ' ' * ((self.width - len(body1))/2),body1 print ' ' * ((self.width - len(body1))/2),body2 print ' ' * ((self.width - len(body1))/2),body3 print ' ' * ((self.width - len(info))/2),info print '=' * self.width  def MessageSurface(self,info): ###消息界面 os.system('cls') print '=' * self.width title = 'MESSAGES' body1 = '[M]Message Detail' body2 = '[Q]Quit' print ' ' * ((self.width - len(title))/2),title print ' ' * ((self.width - len(body1))/2),body1 print ' ' * ((self.width - len(body1))/2),body2 print ' ' * ((self.width - len(info))/2),info print '=' * self.width  def PersonalInfoSurface(self,info): ###个人信息界面 os.system('cls') print '=' * self.width title = 'PERSONAL INFORMATION' body1 = '[C]Change Information' body2 = '[Q]Quit' print ' ' * ((self.width - len(title))/2),title print ' ' * ((self.width - len(body1))/2),body1 print ' ' * ((self.width - len(body1))/2),body2 print ' ' * ((self.width - len(info))/2),info print '-' * self.width body3 = ' Name: %s' % self.Name body4 = 'Student Number: %s' % self.account body5 = ' Gender: %s' % self.Gender body6 = ' Birth: %s' % self.Birth body7 = ' Accademy: %s' % self.Accademy body8 = ' Major: %s' % self.Major body9 = ' Grade: %s' % self.Grade body10= ' Teacher: %s' % self.Teacher print ' ' * ((self.width - len(body6))/2),body3 print ' ' * ((self.width - len(body6))/2),body4 print ' ' * ((self.width - len(body6))/2),body5 print ' ' * ((self.width - len(body6))/2),body6 print ' ' * ((self.width - len(body6))/2),body7 print ' ' * ((self.width - len(body6))/2),body8 print ' ' * ((self.width - len(body6))/2),body9 print ' ' * ((self.width - len(body6))/2),body10 print '=' * self.width if __name__ == '__main__': conn = MySQLdb.connect(user='root',passwd = '',db = 'db_educationalmanagementsystem') stu = Student(conn,'0000001','123456') stu.MainFunc() conn.close()

源码下载:python实现教务管理系统

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    python3 图片referer防盗链的实现方法
    下一条:
    python编写弹球游戏的实现代码
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客