这是一个使用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实现教务管理系统
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。