python学生管理系统代码实现
本文实例为大家分享了python学生管理系统的具体代码,供大家参考,具体内容如下
类
classStudent: stuID="" name="" sex="M" classID="NULL" #setID defsetStuID(self,stuID): self.stuID=stuID defsetName(self,name): self.name=name defsetSex(self,sex): self.sex=sex defsetClassID(self,classID): self.classID=classID defgetStuId(self): returnself.stuID defgetName(self): returnself.name defgetSex(self): returnself.sex defgetClassID(self): returnself.classID
主函数
importos
importre
importsys
importstring
importstudent
#savefile
globalFILEPATH
FILEPATH="student.db"
#temporaryfile
globalTEMPFILE
TEMPFILE="temp.db"
#Thisismenu
defmenu():
whileTrue:
print"1.Addastudentinformation"
print"2.Querystudentinformation"
print"3.Deleteastudentinformation"
print"0.Quit"
opt=raw_input("Select:")
ifopt=="1":
whileTrue:
addStudent()
opt2=raw_input("ContinueAdd(Y/N)?:")
ifopt2=="Y"oropt2=="y"oropt2=="":
continue
else:
break
elifopt=="2":
whileTrue:
query()
opt2=raw_input("ContinueQuery(Y/N)?:")
ifopt2=="Y"oropt2=="y"oropt2=="":
continue
else:
break
elifopt=="3":
whileTrue:
delMenu()
opt2=raw_input("ContinueDelete(Y/N)?:")
ifopt2=="Y"oropt2=="y"oropt2=="":
continue
else:
break
elifopt=="0":
exitProgram()
break
else:
print"Errorinput"
#Addastudent
defaddStudent():
stu=student.Student()
whileTrue:
stuID=raw_input("ID(001-999):")
#matchID001-999
p=re.match("^[0-9]{3}$",stuID)
ifp:
ifstuID=="000":
print"IDmustbe001-999"
continue
ifisIDExist(stuID):
print"ID=%salreadyexist!"%stuID
continue
else:
stu.setStuID(stuID)
break
else:
print"IDmustbe001-999"
whileTrue:
stuName=raw_input("Name(a-z,A-Z,5char):")
#matchnamea-zA-Z5char
p=re.match("^[a-zA-Z]{1,5}$",stuName)
ifp:
stu.setName(stuName)
break
else:
print"Nameformaterrormusta-z,A-Z,within5char"
whileTrue:
stuSex=raw_input("Sex(defaultisM):")
#defaultvalue
ifstuSex=="":
stu.setSex("M")
print"Sex:M"
break
ifstuSex=="M"orstuSex=="m":
stu.setSex(string.upper(stuSex))
break
#ifstuSex=="M"orstuSex=="m"||stuSex=="F"stuSex=="f":
p=re.match("^M|m|F|f$",stuSex)
ifp:
stu.setSex(string.upper(stuSex))
break
else:
print"Sex(M/f)"
whileTrue:
stuClass=raw_input("Class(01-99):")
#defaultvalue
ifstuClass=="":
stu.setClassID("NULL")
print"CLASS:NULL"
break
#match00-99
p=re.match("^[0-9]{2}$",stuClass)
ifp:
#getridof00
ifstuClass=="00":
print"Classmust01-99"
continue
stu.setClassID(stuClass)
break
else:
print"Classmust01-99"
#savetofile
file1=open(FILEPATH,"a")
print"ID\tNAME\tSEX\tCLASS"
printstu.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"Addstudentsuccess!"
file1.close()
#Deletestudentmenu
defdelMenu():
print"1.DeletebyID"
print"2.DeletecontainsID"
opt=raw_input("Select:")
ifopt=="1":
delStudentByID()
elifopt=="2":
delStudentContainsID()
else:
print"Errorinput"
#Deletecontainsid
defdelStudentContainsID():
contID=raw_input("ID:")
ifgetInfoContainsID(contID)==0:
print"Can'tfindIDcontains\"%s\"student"%contID
return
opt=raw_input("Areyousuredeleteall(Y/N):")
ifnotopt=="y"oropt=="Y":
return
f=open(FILEPATH,"r")
tmp=open(TEMPFILE,"a")
i=0
foreachLineinf:
items=eachLine.split("\t")
#ifnotre.match(contID,items[0]):
ifitems[0].count(contID)==0:
tmp.write(eachLine)
else:
i+=1
f.close()
tmp.close()
os.remove(FILEPATH)
os.rename(TEMPFILE,FILEPATH)
print"Deleted%ddata"%i
#getcontainsIDinformation
defgetInfoContainsID(stuID):
f=open(FILEPATH)
i=0
foreachLineinf:
items=eachLine.split("\t")
ifnotitems[0].count(stuID)==0:
#ifre.match(stuID,items[0]):
i+=1
ifi==1:
print"ID\tNAME\tSEX\tCLASS"
printeachLine,
ifi==0:
return0
else:
returni
f.close()
#DeletestudentbyID
defdelStudentByID():
delID=raw_input("DeleteID:")
ifnotisIDExist(delID):
print"Can'tfindID=%sstudentinformation"%delID
return
getInfoByID(delID)
opt=raw_input("Areyousuredeleteit(Y/N):")
ifnot(opt=="Y"oropt=="y"):
return
f=open(FILEPATH,"r")
tmp=open(TEMPFILE,"a")
foreachLineinf:
split=eachLine.split("\t")
ifnotdelID==split[0]:
tmp.write(eachLine)
tmp.close()
f.close()
os.remove(FILEPATH)
os.rename(TEMPFILE,FILEPATH)
print"Deletesuccess!"
#Querymenu
defquery():
print"1.QuerystudentbyID"
print"2.Queryallstudents"
opt=raw_input("Select:")
ifopt=="1":
queryByID()
elifopt=="2":
queryAll()
#defaultisqueryall
elifopt=="":
queryAll()
else:
print"ErrorInput!"
#queryIDexist
defisIDExist(ID):
f=open(FILEPATH)
flag=0
foreachlineinf:
temp=eachline.split("\t")
iftemp[0]==ID:
flag+=1
f.close()
ifflag==0:
returnFalse
else:
returnTrue
#getinformationbyIDfordeletestudent
defgetInfoByID(stuID):
f=open(FILEPATH)
i=0
foreachLineinf:
items=eachLine.split("\t")
ifitems[0]==stuID:
i+=1
ifi==1:
print"ID\tNAME\tSEX\tCLASS"
printeachLine
f.close()
#QuerystudentbyID
defqueryByID():
queryID=raw_input("ID:")
f=open(FILEPATH)
#lines=f.readlines()
#printlines[0].strip()
#forlineinlines:
#a=line.split()
#ifqueryID==a[1].strip():
#printline.strip()
flag=0
foreachlineinf:
#splitby"\t"getasCarraytemp[4]
temp=eachline.split("\t")
#printtemp[0],temp[1],temp[2],temp[3]
iftemp[0]==queryID:
flag+=1
ifflag==1:
print"ID\tNAME\tSEX\tCLASS"
printeachline,
ifflag==0:
print"Can'tfindID=%sstudentinformation"%queryID
f.close()
#f=open(FILEPATH)
#readLines=f.readlines()
#foreachLineinf:
#eachLine
#
#ifeachLine==queryID:
#printeachLine
#f.close()
#Queryallstudents
defqueryAll():
f=open(FILEPATH,"r")
i=0
foreachLineinf:
i+=1
ifi==1:
print"ID\tNAME\tSEX\tCLASS"
printeachLine,
f.close()
ifi==0:
print"Nodata!"
defexitProgram():
print"ThankyouBye!"
#sys.exit()
definit():
ifos.path.exists(FILEPATH):
print"Loadfilesuccessful"
else:
try:
f=open(FILEPATH,"w")
exceptException:
print"Can'topenfile"
sys.exit()
finally:
f.close()
if__name__=='__main__':
init()
menu()
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。