python学生管理系统代码实现

栏目: 编程语言 · Python · 发布时间: 6年前

内容简介:这篇文章主要为大家详细介绍了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。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Single Page Web Applications

Single Page Web Applications

Michael Mikowski、Josh Powell / Manning Publications / 2013-9-30 / USD 44.99

Code for most web sites mostly runs on the server. When a user clicks on a link, the site reacts slowly because the browser sends information to the server and the server sends it back again before di......一起来看看 《Single Page Web Applications》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具