python+mysql實(shí)現(xiàn)教務(wù)管理系統(tǒng)
本文實(shí)例為大家分享了python實(shí)現(xiàn)教務(wù)管理系統(tǒng),供大家參考,具體內(nèi)容如下
mysql+python構(gòu)成教務(wù)管理系統(tǒng),提供系統(tǒng)管理員,教職工,學(xué)生三級(jí)。有注冊(cè),添加,修改,發(fā)布信息等功能。
Login.py
#-*- coding:utf-8 -*-
#####系統(tǒng)登錄
import os
import MySQLdb
import time
class 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 = '123456',db = 'test');
a = Login(conn)
a.MainFunc()
a.Quit()
conn.close()
main.py
#-*- coding:utf-8 -*- ####系統(tǒng)入口 import os import MySQLdb import Student import Teacher import Login import SystemManager if __name__ == '__main__': conn = MySQLdb.connect(user='root',passwd = '123456',db = 'test') 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 -*-
####學(xué)生賬號(hào)
import MySQLdb
import os
class Student:
def __init__(self,conn,account,passwd):
###構(gòu)造,conn連接數(shù)據(jù)庫(kù)
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):
###主要執(zhí)行函數(shù)
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):
###個(gè)人信息
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):
###修改個(gè)人信息
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):
###查看詳細(xì)消息, No消息編號(hào)
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):
###個(gè)人信息界面
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 = '123456',db = 'test')
stu = Student(conn,'0000001','123456')
stu.MainFunc()
conn.close()
完整代碼請(qǐng)點(diǎn)擊下載:python實(shí)現(xiàn)教務(wù)管理系統(tǒng)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python基于mysql實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- 用 Python 連接 MySQL 的幾種方式詳解
- Python MySQL數(shù)據(jù)庫(kù)連接池組件pymysqlpool詳解
- Python如何讀取MySQL數(shù)據(jù)庫(kù)表數(shù)據(jù)
- 讓python 3支持mysqldb的解決方法
- Python中操作mysql的pymysql模塊詳解
- Python操作MySQL數(shù)據(jù)庫(kù)9個(gè)實(shí)用實(shí)例
- 使用Python操作MySQL的一些基本方法
- 由Python編寫(xiě)的MySQL管理工具代碼實(shí)例
相關(guān)文章
Python爬蟲(chóng)與反爬蟲(chóng)大戰(zhàn)
這篇文章主要介紹了Python爬蟲(chóng)與反爬蟲(chóng)的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解Python爬蟲(chóng)與反爬蟲(chóng)的關(guān)系,感興趣的朋友可以了解下2020-07-07
在PyTorch中自定義fit()函數(shù)中的操作代碼
當(dāng)在進(jìn)行有監(jiān)督學(xué)習(xí)時(shí),我們可以使用fit()函數(shù)對(duì)模型進(jìn)行訓(xùn)練,通過(guò)迭代優(yōu)化模型的參數(shù),使其能夠更好地?cái)M合訓(xùn)練數(shù)據(jù),本文給大家介紹了在PyTorch中自定義fit()函數(shù)中的操作代碼,感興趣的同學(xué)可以跟著小編一起來(lái)看看2024-05-05
在Python的Django框架下使用django-tagging的教程
這篇文章主要介紹了在Python的Django框架下使用django-tagging的教程,針對(duì)網(wǎng)絡(luò)編程中的tag部分功能提供幫助,需要的朋友可以參考下2015-05-05
Pyinstaller打包報(bào)錯(cuò)小結(jié)
本文主要介紹了Pyinstaller打包報(bào)錯(cuò)小結(jié),詳細(xì)的介紹了5種錯(cuò)誤的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02

