本文实例为大家分享了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()
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月20日
2024年11月20日
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 天籁女声《2024第31届上海国际高端音影展纪念CD》[WAV+CUE][1.1G]
- 姚斯婷 《敢爱敢做》头版限量编号24K金碟[低速原抓WAV+CUE][1.2G]
- 雷婷 《把爱留在昨天》紫银合金AQCD[低速原抓WAV+CUE][1.1G]
- 董文华2024-《精选30年·长城长HQ》头版限量[WAV+CUE]
- 柏菲·魏松2024-《跟你走》限量开盘母带ORMCD[WAV+CUE]
- 柏菲·甘雅丹《雅鲁藏布》限量开盘母带ORMCD[WAV+CUE]
- 孙露《明天你是否依然爱我》1:1母盘直刻[低速原抓WAV+CUE][1G]
- 群星2024《龙年精选.音乐盛宴》纯银CD[WAV+CUE][1.1G]
- 童丽《君再来VI》妙音首版[WAV+CUE][1G]
- 柏菲·李跃君2024-《寂寞公路》限量开盘母带ORMCD[WAV+CUE]
- 柏菲·古璇2024-《东山飘雨西山晴》限量开盘母带ORMCD[WAV+CUE]
- 群星《2024好听新歌38》AI调整音效【WAV分轨】
- 台湾荷东《周末狂热1》[WAV+CUE][1.1G]
- 群星《Hi.Fi.怀旧金曲.Vol.1》[低速原抓WAV+分轨][996M]