网络编程
位置:首页>> 网络编程>> Python编程>> python学生管理系统代码实现

python学生管理系统代码实现

作者:zhubinqiang  发布时间:2023-10-31 07:55:04 

标签: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()

更多学习资料请关注专题《管理系统开发》。

来源:http://blog.csdn.net/zhubinqiang/article/details/7630645

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com