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 "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学生管理系统代码实现

本文地址: http://www.cppcns.com/jiaoben/python/222395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的学生成绩管理系统通常是一个用于存储和管理学生信息(如姓名、学号、成绩等)的程序。它可以帮助教师方便地添加、修改和查询学生的成绩数据。以下是一个简单的Python学生成绩管理系统的基本结构和功能: 1. 数据模型: 定义一个或多个类来表示学生和他们的成绩,例如 `Student` 类可能包含属性如 `name`, `student_id`, 和 `scores`。 ```python class Student: def __init__(self, name, student_id): self.name = name self.student_id = student_id self.scores = {} ``` 2. 添加和修改成绩: 提供方法来添加新成绩或更新已有成绩,例如 `add_score` 或 `update_score`。 ```python class Student: # ... def add_score(self, subject, grade): self.scores[subject] = grade def update_score(self, subject, new_grade): if subject in self.scores: self.scores[subject] = new_grade else: print(f"Subject {subject} not found for {self.name}") ``` 3. 查询成绩: 允许根据条件(如学号或姓名)查询学生的总成绩、单科成绩等。 ```python def get_student_scores(student): return sum(student.scores.values()) def search_student_score(name, subject): for student in students_list: if student.name == name and subject in student.scores: return student.scores[subject] return None ``` 4. 文件操作: 可能会使用文件来持久化数据,如读取和写入学生信息。 ```python import json def save_students_to_file(students, filename): with open(filename, 'w') as f: json.dump([student.__dict__ for student in students], f) # 加载文件到内存 def load_students_from_file(filename): with open(filename, 'r') as f: data = json.load(f) students = [Student(**student) for student in data] return students ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值