Python實(shí)現(xiàn)學(xué)校管理系統(tǒng)
本文實(shí)例為大家分享了Python實(shí)現(xiàn)學(xué)校管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、功能分析
此學(xué)校管理系統(tǒng)應(yīng)該可以實(shí)現(xiàn)學(xué)校的師資力量的調(diào)配,學(xué)生的入學(xué)、學(xué)習(xí)以及修學(xué)或者退學(xué)的情況
二、程序解讀
1.下面的程序?qū)崿F(xiàn)了學(xué)校管理系統(tǒng)的基本功能,包括:
1)學(xué)校的招生
2)講師的招聘
3)課程的增加
4)等等
2.未實(shí)現(xiàn)的功能也有很多,比如:
1)學(xué)生類中有一個(gè)方法是繳費(fèi),也有一個(gè)方法是注冊(cè),這兩個(gè)方法應(yīng)該關(guān)聯(lián)起來(lái),繳費(fèi)成功后,才可以進(jìn)行注冊(cè)
2)每個(gè)老師應(yīng)該可以通過(guò)各種方式來(lái)查看自己學(xué)生的信息,比如按照姓名,學(xué)號(hào)等等
3)每個(gè)學(xué)生都應(yīng)該可以查看學(xué)校所有的課程和教師情況
4)所有的這些信息必須保存在文件或者數(shù)據(jù)庫(kù)中才可以得到永久的保存
5)在客戶上傳相應(yīng)的數(shù)據(jù)時(shí),應(yīng)該對(duì)其有所約束,比如說(shuō)學(xué)號(hào)必須是10位正整數(shù)(在這里,為了避免報(bào)錯(cuò),將所有的數(shù)據(jù)都設(shè)置為字符串型)
6)講師,學(xué)生和課程的刪除,修改,查詢等操作需要添加
7)各類對(duì)象在初始化的時(shí)候需要輸入的信息太多,應(yīng)該做成只需要唯一ID和PASSWD這種類型的來(lái)進(jìn)行相應(yīng)的登錄
8)等等
二、程序代碼
#!/usr/bin/env python
#coding:utf-8
"""
file:Management.py
date:9/9/179:57 PM
author:hx
desc:管理系統(tǒng)雛形
"""
##添加模塊
import sys
import json
##學(xué)校類定義
class School(object):
##初始化函數(shù)
def __init__(self,SchoolName,SchoolPlace,SchoolMotto):
self.SchoolName = SchoolName
self.SchoolPlace = SchoolPlace
self.SchoolMotto = SchoolMotto
##招生函數(shù)
def RecruitStu(self):
NewStuName = raw_input("StuName:")
NewStuAge = raw_input("StuAge:")
NewStuSex = raw_input("StuSex:")
NewStuSchool = raw_input("StuSchool:")
CourseNo = raw_input("CourseNo:")
NewStuID = raw_input("StuID:")
CoursePrice = raw_input("CoursePrice:")
NewStu = Stu(NewStuName,NewStuAge,NewStuSex,NewStuSchool,CourseNo,NewStuID,CoursePrice) ##實(shí)例化學(xué)員對(duì)象
stus_dict = {"StuName":NewStuName,"StuAge":NewStuAge,"StuSex":NewStuSex,"StuSchool":NewStuSchool,"CourseNo":CourseNo,"StuID":NewStuID,"CoursePrice":CoursePrice} # 用字典來(lái)存放講師信息
if not dic:
dic[NewStuName] = stus_dict
json.dump(dic, open("student_db", "w"), encoding='utf-8', ensure_ascii=False, indent=2)
else:
if dic.get(NewStuName):
print("%s學(xué)生已存在,不能注冊(cè)名字相同的學(xué)生" % NewStuName)
else:
dic[NewStuName] = stus_dict
json.dump(dic, open("student_db", "w"),encoding='utf-8', ensure_ascii=False, indent=2)
print("The student has already added successfully".center(50, '-'))
NewStu.StuInfo()
##聘請(qǐng)講師
def HireTch(self):
print "Welcome to hire teacher from here~"
NewTeacherName = raw_input("Please input the teacher's name:")
NewTeacherAge = raw_input("Please input the teacher's age:")
NewTeacherSex = raw_input("Please input the teacher's sex:")
NewCourseNo = raw_input("Please input the teacher's course number:")
NewSalary = raw_input("Please input the teacher's salary:")
NewTeacher = Teacher(NewTeacherName, NewTeacherAge, NewTeacherSex, NewCourseNo,NewSalary) # 實(shí)例化講師對(duì)象
teachers_dict = {"TeacherName":NewTeacherName,"TeacherAge":NewTeacherAge,"TeacherSex":NewTeacherSex,"CourseNo":NewCourseNo,"Salary":NewSalary} # 用字典來(lái)存放講師信息
# 通過(guò)json將講師的字典反序列化到dic字典中
if not dic: #字典如果為空
dic[NewTeacherName] = teachers_dict #將講師名與講師對(duì)象相關(guān)聯(lián)
# 通過(guò)json將講師的字典序列化到teacher_db文件中
json.dump(dic, open("teacher_db", "w"),encoding='utf-8',ensure_ascii=False,indent=2)
else: #如果文件中已有講師信息
if dic.get(NewTeacherName): #字典中不存在key,則返回none,不報(bào)錯(cuò)
print("%s講師已存在,不能創(chuàng)建名字相同的講師" % NewTeacherName)
else:
dic[NewTeacherName] = teachers_dict
json.dump(dic, open("teacher_db", "w"),encoding='utf-8',ensure_ascii=False,indent=2)
NewTeacher.TeacherInfo() ##將新老師的信息打印在屏幕上
##新增課程
def CreateCourse(self):
print "Welcome to create course!"
NewCourseNo = raw_input("CourseNo:")
NewCourseName = raw_input("CourseName:")
NewCoursePrice = raw_input("CoursePrice:")
NewCourse = Course(NewCourseNo,NewCourseName,NewCoursePrice) ##新創(chuàng)建的對(duì)象直接實(shí)例化
courses_dict = {"CourseNo":NewCourseNo,"CourseName":NewCourseName,"CoursePrice":NewCoursePrice} # 用字典來(lái)存放講師信息
if not dic:
dic[NewCourseNo] = courses_dict
json.dump(dic, open("course_db", "w"), encoding='utf-8', ensure_ascii=False, indent=2)
else:
if dic.get(NewCourseNo):
print("%s課程已存在,不能注冊(cè)課程號(hào)相同的課程" % NewCourseNo)
else:
dic[NewCourseNo] = courses_dict
json.dump(dic, open("course_db", "w"),encoding='utf-8', ensure_ascii=False, indent=2)
print("Course has already created successfully".center(50, '-'))
print ("""
CourseNo:%s
CourseName:%s
CoursePrice:%s"""%(NewCourseNo,NewCourseName,NewCoursePrice))
class Teacher(object):
def __init__(self, TeacherName, TeacherAge, TeacherSex, CourseNo, Salary):
self.TeacherName = TeacherName
self.TeacherAge = TeacherAge
self.TeacherSex = TeacherSex
self.CourseNo = CourseNo
self.Salary = Salary
def TeachKnowledge(self):
print "Teach Knowlege~"
def TeacherInfo(self):
print("""
-------------講師信息-------------
Name:%s
Age:%s
Sex:%s
CourseNo:%s
Salary:%s
""" % (self.TeacherName, self.TeacherAge,self.TeacherSex, self.CourseNo, self.Salary))
##課程類定義
class Course(object):
def __init__(self,CourseNo,CourseName,CoursePrice):
self.CourseNo = CourseNo
self.CourseName = CourseName
self.CoursePrice = CoursePrice
def ShowCourseInfo(self):
print ("""
CourseNO:%s
CourseName:%s
CoursePrice:%s""" %(self.CourseNo,self.CourseName,self.CoursePrice))
##學(xué)員類定義
class Stu(object):
def __init__(self,StuName,StuAge,StuSex,StuSchool,CourseNo,StuID,CoursePrice):
self.StuName = StuName
self.StuAge = StuAge
self.StuSex = StuSex
self.StuSchool = StuSchool
self.CourseNo = CourseNo
self.StuID = StuID
self.CoursePrice = CoursePrice
def Study(self):
print "study"
def PayMoney(self):
print "Paying for money~"
def StuInfo(self):
print("""
---------------學(xué)生信息--------------
Name:%s
Age:%s
Sex:%s
School:%s
CourseNo:%s
ID:%s
CoursePrice:%s
""" %(self.StuName,self.StuAge,self.StuSex,self.StuSchool,self.CourseNo,self.StuID,self.CoursePrice))
def students_view(): # 學(xué)員視圖
while True:
pro = """
1.歡迎注冊(cè)
2.返回
3.退出
請(qǐng)選擇:
"""
num = raw_input(pro)
if num == '1':
choice_school_obj.RecruitStu() # 調(diào)用學(xué)生注冊(cè)方法并生成學(xué)生對(duì)象
elif num == '2':
break
elif num == '3':
sys.exit()
else:
continue
def teacher_view(): # 講師視圖
name = raw_input("請(qǐng)輸入講師姓名:")
while True:
if dic.get(name) or teachers_dict.get(name):
print("歡迎%s講師".center(50, '-') % name)
elif not dic.get(name) and not teachers_dict.get(name):
print("%s講師不存在" % name)
break
pro = """
1.查看學(xué)員信息
2.返回
3.退出
請(qǐng)輸入你的選擇:
"""
num = raw_input(pro)
if num == '1':
if teachers_dict.get(name):
teachers_dict[name].show_student() # 查看學(xué)生信息
else:
print("功能未完善,只能輸入lvah,cheng")
elif num == '2':
break
elif num == '3':
sys.exit()
else:
continue
def school_view(): # 學(xué)校視圖
while True:
pro = """
1.創(chuàng)建課程
2.招生注冊(cè)
3.聘用講師
4.返回
5.退出
請(qǐng)輸入你的選擇:
"""
num = raw_input(pro)
if num == '1':
choice_school_obj.CreateCourse()
elif num == '2':
choice_school_obj.RecruitStu()
elif num == '3':
choice_school_obj.HireTch()
elif num == '4':
break
elif num == '5':
sys.exit()
else:
continue
def main():
global dic # 全局變量
global choice_school_obj
dic = {}
while True:
print("請(qǐng)選擇學(xué)校".center(50, '*'))
pro1 = """
1. %s
2. %s
3. 返回
4. 退出
請(qǐng)輸入你的選擇:
""" % (school1.SchoolName, school2.SchoolName)
choice_school = raw_input(pro1)
if choice_school == '1':
choice_school_obj = school1 # 將對(duì)象引用傳給choice_school
elif choice_school == '2':
choice_school_obj = school2
elif choice_school == '3':
break
elif choice_school == '4':
sys.exit()
else:
continue
while True:
print("請(qǐng)選擇視圖".center(50, '*'))
pro2 = """
1.學(xué)員視圖
2.講師視圖
3.學(xué)校管理視圖
4.返回
5.退出
請(qǐng)選擇視圖:
"""
num = raw_input(pro2)
if num == '1':
print("歡迎進(jìn)入學(xué)員視圖".center(50, '*'))
students_view()
elif num == '2':
print("歡迎進(jìn)入講師視圖".center(50, '*'))
teacher_view()
elif num == '3':
print("歡迎進(jìn)入學(xué)校管理視圖".center(50, '*'))
school_view()
elif num == '4':
break
elif num == '5':
sys.exit()
else:
continue
if __name__ == '__main__':
teachers_dict = {}
courses_dict = {}
stus_dict = {}
school1 = School("A大學(xué)", "曲江校區(qū)", "祖國(guó)、榮譽(yù)、責(zé)任") # 實(shí)例化兩個(gè)學(xué)校
school2 = School("B大學(xué)", "長(zhǎng)安區(qū)", "愛(ài)國(guó)、求是、奮進(jìn)")
t1 = Teacher("leo", "28", "male", "01", "10000")
t2 = Teacher("harry", "26", "female", "02", "9000") # 實(shí)例化兩個(gè)講師
teachers_dict["leo"] = t1
teachers_dict["harry"] = t2
teacher_dict = {"TeacherName": "leo", "TeacherAge": "28", "TeacherSex": "male", "CourseNo": "01", "Salary": "10000"}
teacher_dict = {"TeacherName": "harry", "TeacherAge": "26", "TeacherSex": "female", "CourseNo": "02","Salary": "9000"}
course1 = Course("01", "Linux云自動(dòng)化運(yùn)維", "12800") # 實(shí)例化兩個(gè)課程
course2 = Course("02", "c/c++開(kāi)發(fā)", "9800")
courses_dict["01"] = course1
courses_dict["02"] = course2
courses_dict = {"CourseNo":"01","CourseName":"Linux云自動(dòng)化運(yùn)維","CoursePrice":"12800"}
courses_dict = {"CourseNo": "02", "CourseName": "c/c++開(kāi)發(fā)", "CoursePrice": "9800"}
stu1 = Stu("Katy","18","female","A大學(xué)","01","3150911026","12800") ##實(shí)例化兩個(gè)學(xué)員
stu2 = Stu("Betty","18","male","B大學(xué)","02","3150911022","12000")
stus_dict["Katy"] = stu1
stus_dict["Betty"] = stu2
stu_dict = {"StuName":"Katy","StuAge":"18","StuSex":"female","StuSchool":"A大學(xué)","CourseNo":"01","StuID":"3150911026","CoursePrice":"12800"}
stu_dict = {"StuName":"Betty","StuAge":"18","StuSex":"male","StuSchool":"B大學(xué)","CourseNo":"02","StuID":"3150911022","CoursePrice":"12000"}
print(school1, school2)
main()
三、運(yùn)行結(jié)果


初級(jí)基本功能的實(shí)現(xiàn)就不一一上圖了,待后期完善后在上傳。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python實(shí)現(xiàn)員工管理系統(tǒng)
- python用戶管理系統(tǒng)的實(shí)例講解
- Python實(shí)現(xiàn)GUI學(xué)生信息管理系統(tǒng)
- python實(shí)現(xiàn)用戶管理系統(tǒng)
- python實(shí)現(xiàn)外賣(mài)信息管理系統(tǒng)
- python實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- python版學(xué)生管理系統(tǒng)
- Python實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
- Python學(xué)生成績(jī)管理系統(tǒng)簡(jiǎn)潔版
- Python學(xué)生信息管理系統(tǒng)修改版
相關(guān)文章
python操作excel文件并輸出txt文件的實(shí)例
今天小編就為大家分享一篇python操作excel文件并輸出txt文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
使用簡(jiǎn)單工廠模式來(lái)進(jìn)行Python的設(shè)計(jì)模式編程
這篇文章主要介紹了使用簡(jiǎn)單工廠模式來(lái)進(jìn)行Python的設(shè)計(jì)模式編程的方法,需要的朋友可以參考下2016-03-03
解決pip安裝tensorflow中出現(xiàn)的no module named tensorflow.python 問(wèn)題方法
這篇文章主要介紹了解決pip安裝tensorflow中出現(xiàn)的no module named tensorflow.python 問(wèn)題方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
如何用python獲取到照片拍攝時(shí)的詳細(xì)位置(附源碼)
其實(shí)我們平時(shí)拍攝的照片里,隱藏了大量的信息,下面這篇文章主要給大家介紹了關(guān)于如何用python獲取到照片拍攝時(shí)的詳細(xì)位置,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件
這篇文章主要介紹了python基于watchdog庫(kù)全自動(dòng)化監(jiān)控目錄文件,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
python安裝庫(kù)的最詳細(xì)方法(以安裝pygame庫(kù)為例)
在學(xué)習(xí)了一個(gè)學(xué)期的python之后,我決定對(duì)pygame下手了,下面這篇文章主要給大家介紹了關(guān)于python安裝庫(kù)的最詳細(xì)方法,本文主要以安裝pygame庫(kù)為例,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法
這篇文章主要介紹了Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法,文中使用到了flup這個(gè)Python的FastCGI工具,需要的朋友可以參考下2015-12-12
python之文件的讀寫(xiě)和文件目錄以及文件夾的操作實(shí)現(xiàn)代碼
這篇文章主要介紹了python之文件的讀寫(xiě)和文件目錄以及文件夾的操作實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-08-08

