内容简介:这篇文章主要为大家详细介绍了python学生管理系统代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了 python 学生管理系统的具体代码,供大家参考,具体内容如下
类
class Student:
stuID = ""
name = ""
sex = "M"
classID = "NULL"
#set ID
def setStuID(self,stuID):
self.stuID = stuID
def setName(self,name):
self.name = name
def setSex(self,sex):
self.sex = sex
def setClassID(self,classID):
self.classID = classID
def getStuId(self):
return self.stuID
def getName(self):
return self.name
def getSex(self):
return self.sex
def getClassID(self):
return self.classID
主函数
import os
import re
import sys
import string
import student
#save file
global FILEPATH
FILEPATH = "student.db"
#temporary file
global TEMPFILE
TEMPFILE = "temp.db"
#This is menu
def menu():
while True :
print "1.Add a student information"
print "2.Query student information"
print "3.Delete a student information"
print "0.Quit"
opt = raw_input("Select:")
if opt == "1":
while True:
addStudent()
opt2 = raw_input("Continue Add(Y/N)?:")
if opt2 == "Y" or opt2 == "y" or opt2 == "":
continue
else:
break
elif opt == "2":
while True:
query()
opt2 = raw_input("Continue Query(Y/N)?:")
if opt2 == "Y" or opt2 == "y" or opt2 == "":
continue
else:
break
elif opt == "3":
while True:
delMenu()
opt2 = raw_input("Continue Delete(Y/N)?:")
if opt2 == "Y" or opt2 == "y" or opt2 == "":
continue
else:
break
elif opt == "0" :
exitProgram()
break
else:
print "Error input"
#Add a student
def addStudent() :
stu = student.Student()
while True:
stuID = raw_input("ID(001-999):")
#match ID 001-999
p = re.match("^[0-9]{3}$", stuID)
if p :
if stuID == "000":
print "ID must be 001-999"
continue
if isIDExist(stuID):
print "ID = %s already exist!" % stuID
continue
else :
stu.setStuID(stuID)
break
else:
print "ID must be 001-999"
while True:
stuName = raw_input("Name(a-z,A-Z,5 char):")
#match name a-z A-Z 5 char
p = re.match("^[a-zA-Z]{1,5}$",stuName)
if p :
stu.setName(stuName)
break
else :
print "Name format error must a-z,A-Z,within 5 char"
while True:
stuSex = raw_input("Sex(default is M):")
#default value
if stuSex == "":
stu.setSex("M")
print "Sex:M"
break
if stuSex =="M" or stuSex == "m":
stu.setSex(string.upper(stuSex))
break
#if stuSex == "M" or stuSex == "m" || stuSex == "F" stuSex == "f":
p = re.match("^M|m|F|f$",stuSex)
if p :
stu.setSex(string.upper(stuSex))
break
else :
print "Sex(M/f)"
while True:
stuClass = raw_input("Class(01-99):")
#default value
if stuClass == "":
stu.setClassID("NULL")
print "CLASS:NULL"
break
#match 00-99
p = re.match("^[0-9]{2}$",stuClass)
if p :
#get rid of 00
if stuClass == "00":
print "Class must 01-99"
continue
stu.setClassID(stuClass)
break
else:
print "Class must 01-99"
#save to file
file1 = open(FILEPATH,"a")
print "ID\tNAME\tSEX\tCLASS"
print stu.getStuId(),"\t",stu.getName(),"\t",stu.getSex(),"\t",stu.getClassID()
file1.write(stu.getStuId()+"\t"+stu.getName()+"\t"+stu.getSex()+"\t"+stu.getClassID()+"\n")
print "Add student success!"
file1.close()
#Delete student menu
def delMenu():
print "1.Delete by ID"
print "2.Delete contains ID"
opt = raw_input("Select:")
if opt == "1":
delStudentByID()
elif opt == "2":
delStudentContainsID()
else:
print "Error input"
#Delete contains id
def delStudentContainsID():
contID = raw_input("ID:")
if getInfoContainsID(contID)==0 :
print "Can't find ID contains \"%s\" student" % contID
return
opt = raw_input("Are you sure delete all(Y/N):")
if not opt == "y" or opt == "Y":
return
f = open(FILEPATH,"r")
tmp = open(TEMPFILE,"a")
i=0
for eachLine in f:
items = eachLine.split("\t")
# if not re.match(contID, items[0]):
if items[0].count(contID) ==0:
tmp.write(eachLine)
else:
i+=1
f.close()
tmp.close()
os.remove(FILEPATH)
os.rename(TEMPFILE, FILEPATH)
print "Deleted %d data" % i
#get contains ID information
def getInfoContainsID(stuID):
f = open(FILEPATH)
i=0
for eachLine in f:
items = eachLine.split("\t")
if not items[0].count(stuID) ==0:
# if re.match(stuID,items[0]):
i+=1
if i==1:
print "ID\tNAME\tSEX\tCLASS"
print eachLine,
if i==0:
return 0
else :
return i
f.close()
#Delete student by ID
def delStudentByID():
delID = raw_input("Delete ID:")
if not isIDExist(delID) :
print "Can't find ID = %s student information" % delID
return
getInfoByID(delID)
opt = raw_input("Are you sure delete it(Y/N):")
if not (opt == "Y" or opt == "y"):
return
f = open(FILEPATH,"r")
tmp = open(TEMPFILE,"a")
for eachLine in f:
split = eachLine.split("\t")
if not delID == split[0]:
tmp.write(eachLine)
tmp.close()
f.close()
os.remove(FILEPATH)
os.rename(TEMPFILE, FILEPATH)
print "Delete success!"
#Query menu
def query():
print "1.Query student by ID"
print "2.Query all students"
opt = raw_input("Select:")
if opt == "1":
queryByID()
elif opt == "2":
queryAll()
#default is query all
elif opt == "":
queryAll()
else :
print "Error Input!"
#query ID exist
def isIDExist(ID):
f = open(FILEPATH)
flag = 0
for eachline in f:
temp = eachline.split("\t")
if temp[0] == ID:
flag+=1
f.close()
if flag == 0 :
return False
else:
return True
#get information by ID for delete student
def getInfoByID(stuID):
f = open(FILEPATH)
i=0
for eachLine in f:
items = eachLine.split("\t")
if items[0] == stuID:
i+=1
if i==1:
print "ID\tNAME\tSEX\tCLASS"
print eachLine
f.close()
#Query student by ID
def queryByID():
queryID = raw_input("ID:")
f = open(FILEPATH)
# lines = f.readlines()
# print lines[0].strip()
# for line in lines:
# a = line.split()
# if queryID == a[1].strip():
# print line.strip()
flag = 0
for eachline in f:
#split by "\t" get as C array temp[4]
temp = eachline.split("\t")
# print temp[0] , temp[1] , temp[2] , temp[3]
if temp[0] == queryID:
flag+=1
if flag == 1:
print "ID\tNAME\tSEX\tCLASS"
print eachline,
if flag == 0 :
print "Can't find ID = %s student information" % queryID
f.close()
# f = open(FILEPATH)
# readLines = f.readlines()
# for eachLine in f:
# eachLine
#
# if eachLine == queryID:
# print eachLine
# f.close()
#Query all students
def queryAll():
f = open(FILEPATH,"r")
i=0
for eachLine in f:
i+=1
if i==1:
print "ID\tNAME\tSEX\tCLASS"
print eachLine,
f.close()
if i==0:
print "No data!"
def exitProgram():
print "Thank you Bye!"
# sys.exit()
def init():
if os.path.exists(FILEPATH) :
print "Load file successful"
else:
try:
f = open(FILEPATH,"w")
except Exception:
print "Can't open file"
sys.exit()
finally:
f.close()
if __name__ == '__main__':
init()
menu()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Codercto.com。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Erupt 1.5.3 发布,零前端代码开发后台管理系统
- 揭秘腾讯代码管理核心—工蜂Git系统架构
- 飞特商城后台管理系统更新,代码生成器支持 Oracle
- Oracle人力资源管理系统PeopleSoft未授权远程代码执行漏洞解析
- TS 酒店管理系统 1.5.0 发布:全新版本,内核代码重构与 UI 改版
- 管理系统漏洞没修,国际许愿基金会网站被黑植入挖矿代码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book, Vol. 2
Patrick McNeil / How / 2010-9-19 / USD 30.00
Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!