python学生管理系统文件版代码_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 "IDtNAMEtSEXtCLASS"

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 "IDtNAMEtSEXtCLASS"

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 "IDtNAMEtSEXtCLASS"

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 "IDtNAMEtSEXtCLASS"

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 "IDtNAMEtSEXtCLASS"

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值