这是一个使用Python实现基于dos下面向数据库的教务管理系统,实现了管理员、教职工、学生三种不同身份的操作,可以实现的功能有:学生、教职工信息管理、不同权限的信息发布、管理各种信息等。代码约1200行,对于python初学者应该能提供一些帮助。
Login.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#-*- coding:utf-8 -*-
#####系统登录
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 = ' ',db = ' DB_EducationalManagementSystem');
a = Login(conn)
a.MainFunc()
a.Quit()
conn.close()
|
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#-*- coding:utf-8 -*-
####系统入口
import os
import MySQLdb
import Student
import Teacher
import Login
import SystemManager
if __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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
#-*- coding:utf-8 -*-
####学生账号
import MySQLdb
import os
class 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实现教务管理系统
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。