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 lambda和Python def区别分析
Nov 30 Python
python网络编程之数据传输UDP实例分析
May 20 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python 将pdf转成图片的方法
Apr 23 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
python 多线程重启方法
Feb 18 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
Python Flask框架模板操作实例分析
May 03 Python
Python实现打印实心和空心菱形
Nov 23 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
python实现自动清理重复文件
Aug 24 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
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP7 标准库修改
2021/03/09 PHP
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
python 全局变量的import机制介绍
2017/09/07 Python
python Opencv将图片转为字符画
2021/02/19 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
python实现图像拼接功能
2020/03/23 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
应届毕业生个人自我评价
2013/09/20 职场文书
园艺师求职信
2014/04/27 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
django 认证类配置实现
2021/11/11 Python