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

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

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

(0)

相关推荐

  • 详解用python实现基本的学生管理系统(文件存储版)(python3)

    这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后续发布,先来看一下文件存储版,是把学生信息存储到了txt文件中,我这里是默认存储到了students.txt文件中,想更改文件名字根据代码修改即可,代码中注释很详细,我也是python初学者,欢迎大家和我交流! """ 学生管理系统(文件存储版) 再原有功能的基础上添加了如下功能

  • python学生管理系统开发

    本文实例为大家分享了python学生管理系统开发的具体代码,供大家参考,具体内容如下 学生管理系统(基础版) #定义一个函数,显示可以使用的功能列表给用户 def showInfo(): print("-"*30) print(" 学生管理系统 ") print(" 1.添加学生的信息") print(" 2.删除学生的信息") print(" 3.修改学生的信息") print(" 4.查询学生

  • python学生管理系统学习笔记

    本文实例为大家分享了python学生管理系统的具体代码,供大家参考,具体内容如下 基于列表存储的学生管理系统,实现如下功能 ================== 学生管理系统 1.添加学生信息 2.删除学生信息 3.查询学生信息 4.修改学生信息 5.显示所有学生信息 6.退出 ================== 代码如下: import re student=[] def appendStudentInfo(): studentinfo={"Name":"",&

  • 基于python实现学生管理系统

    本文为大家分享了python实现学生管理系统的具体代码,供大家参考,具体内容如下 1.0版本学生管理系统 ''' 1.添加学员 2.修改学员 3.查询学员 4.删除学员 0.退出程序 ''' student_list=[] while True: print('1.添加学员') print('2.修改学员') print('3.查询学员') print('4.删除学员') print('0.退出程序') sel_num=input('请输入您要进行的操作:') sel_num=int(sel_n

  • python实现学生管理系统

    python写的简单的学生管理系统,练习python语法. 可以运行在windows和linux下,python 2.7. #!/usr/local/bin/python # -*- coding:utf-8 -*- import os import re #定义学生类 class Student: def __init__(self): self.name = '' self.ID = '' self.score = 0 #根据学生分数进行从大到小的冒泡排序 def BuddleSortByS

  • python初学者,用python实现基本的学生管理系统(python3)代码实例

    这个是用python实现的基本的增删改查的学生管理系统吧,其中主要是对输入的数据进行合法性检测的问题,这次又对函数进行了练习!掌握函数更加熟练了!二话不说先贴代码,一切问题请看注释,都很详细,适合python3初学者! """ 学生管理系统 主要特点:1.可以检测学号是否重复/有误(不为纯数字) 2.可以检测手机号是否合法(是否为纯数字) 3.可以检测性别是否为男或者女 4.能选择性修个学生的某个属性信息,比如只修改某个学生的手机号码 5.能够实现基本的增删改查 6.优化了代

  • Python基于mysql实现学生管理系统

    本篇文章主要介绍了Python基于mysql实现学生管理系统,分享给大家,具体如下: import pymysql import re def idinput(string): ID = input(string) pattern = re.compile("^\d{1,3}$") while not re.match(pattern, ID): ID = input("请输入1-3位整数:") return ID def appendStudentInfo():

  • python学生管理系统

    这几天开始接触了python语言,这语言相对c语言简洁了不少,语言真是一通百通,学起来还是比较轻松,在熟悉了基本语法,列表(序列),元组以及字典之后写了一个最基础简单的的学生管理系统 能完成的功能有: 学生管理系统  v1.0  1.添加学生的信息  2.删除学生的信息  3.修改学生的信息  4.查询学生的信息  5.遍历所有学生的信息  6.退出系统 学生信息中,学号是唯一的,所以进行删除,修改,查询都会有学号的唯一的检测 1.框架显示以及添加学生的功能 2.添加两个学生之后,进行显示功能

  • python Tkinter版学生管理系统

    本文实例为大家分享了python Tkinter版学生管理的具体代码,供大家参考,具体内容如下 Tkinter是python自带的UI包,无需下载,只需要导入 tkinter 文档 //http://effbot.org/tkinterbook//// 文档是英文版本的,可以翻译! 界面效果如下: python的pc端界面还是可以的,较为美观! 页面较为粗狂,为经过专业设计! 系统的对象封装,数据连接使用的是原本控制台版本的! 控制台版本的系统,包含对象封装,数据连接 #导入tkinter 包

  • python版学生管理系统

    写一个学生管理系统,最好用python. 我都没学过python呢,只好开始临时抱佛脚,再到网上找找有没有例子看看,下面是我参照另一个博主写的,中间有一些和我不能融合的错误,我已经解决了. input("\n\nPress the enter key to exit.") def functionList(): # 定义功能菜单 print("---------请输入序号选择您要得功能---------") print("") print(&qu

随机推荐