设为首页 收藏本站
查看: 668|回复: 0

[经验分享] Python学生管理系统

[复制链接]

尚未签到

发表于 2017-4-30 15:34:02 | 显示全部楼层 |阅读模式
  
  

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()




  

  

  

  

  

  

  

  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371346-1-1.html 上篇帖子: Python复习笔记—日期时间 下篇帖子: python测试驱动开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表