python学生管理系统代码实现

yipeiwu_com5年前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() 

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

利用Python读取txt文档的方法讲解

利用Python读取txt文档的方法讲解

在G:/PythonPractise文件夹下新建一个名为record.txt的文本文档,写入如下图所示四行内容并保存。 打开python3的idle,开始写代码。 方法一代码和运行结果...

使用 Python 获取 Linux 系统信息的代码

哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相同的代码在CPython 3 (3.3)上是不工作的,以及提供一份...

Python unittest 简单实现参数化的方法

Python unittest 理论上是不建议参数驱动的,其用例应该专注单元测试,确保每个method的逻辑正确。 引用Stack Overflow的一个答案, “单元测试应该是独立的,...

Python利用ElementTree模块处理XML的方法详解

前言 最近因为工作的需要,在使用 Python 来发送 SOAP 请求以测试 Web Service 的性能,由于 SOAP 是基于 XML 的,故免不了需要使用 python 来处理...

Python生成随机数组的方法小结

Python生成随机数组的方法小结

本文实例讲述了Python生成随机数组的方法。分享给大家供大家参考,具体如下: 研究排序问题的时候常常需要生成随机数组来验证自己排序算法的正确性和性能,今天把Python生成随机数组的方...