python学生管理系统代码实现


Posted in Python onApril 05, 2020

本文实例为大家分享了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解析模块(ConfigParser)使用方法
Dec 10 Python
Python中用Decorator来简化元编程的教程
Apr 13 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
深入浅析Python中的yield关键字
Jan 24 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
Mar 06 Python
python实现udp传输图片功能
Mar 20 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
matplotlib对象拾取事件处理的实现
Jan 14 Python
python通配符之glob模块的使用详解
Apr 24 Python
Python中22个万用公式的小结
Jul 21 Python
python图书管理系统
Apr 05 #Python
怎么使用pipenv管理你的python项目
Mar 12 #Python
python实现图书管理系统
Mar 12 #Python
python实现快速排序的示例(二分法思想)
Mar 12 #Python
Python中的pack和unpack的使用
Mar 12 #Python
python文本数据相似度的度量
Mar 12 #Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 #Python
You might like
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python批量同步web服务器代码核心程序
2014/09/01 Python
python从入门到精通(DAY 2)
2015/12/20 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python递归法解决棋盘分割问题
2019/07/17 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
新闻学专业个人求职信写作
2014/02/04 职场文书
公司授权委托书范文
2014/09/21 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
打架检讨书
2015/01/27 职场文书
中学生自我评价范文
2015/03/03 职场文书
《打电话》教学反思
2016/02/22 职场文书
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
Django框架中表单的用法
2022/06/10 Python