基于pickle模块的学生管理系统
2017-10-01 16:14
302 查看
title: 基于pickle模块的学生管理系统
date: 2017-08-03 20:54:39
categories: technology
tags:
学生系统功能分为
1. Add
2. Delect
3. Show
4. Save
5. Read
6. Quit
写完后发现一直报错
最后在
Stack OverFlow找到答案。因为读取的文件为空。
date: 2017-08-03 20:54:39
categories: technology
tags:
- python
利用模块pickle完成学生信息管理系统
Python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。学生系统功能分为
1. Add
2. Delect
3. Show
4. Save
5. Read
6. Quit
# !/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 # -*- coding: utf-8 -*- import pickle class Student: def __init__(self, studentID, name, sex, classID): self.studentID = studentID self.name = name self.sex = sex self.classID = classID class StudentManager: def __init__(self): self.students = [] def mainMenu(self): print('\nTips:') print('1.Add studentInfo') print('2.Delect studentInfo') print('3.Show studentInfo') print('4.Save studentInfo') print('5.Read studentInfo') print('0.Quit') flag = input('Select Operation:') while (flag < '0' or flag > '5'): print('Input Error!') flag = input('Select Again:') print('------------') if (flag == '1'): self.addStu() self.mainMenu() if (flag == '2'): self.delStu() self.mainMenu() if (flag == '3'): self.printStu() self.mainMenu() if (flag == '4'): self.writeStu() self.mainMenu() if (flag == '5'): self.readStu() self.mainMenu() if (flag == '0'): self.writeStu() # Save before quit print('End') def addStu(self): studentID = input('Plaese input studentID: ') while (self.findByID(studentID) != -1): print('studentID repeat, please input again') studentID = input('Please input studentID again') name = input('Please input student name: ') sex = input('Please input student sex: ') sex while ((sex != 'f') and (sex != 'm')): print('Sex input error, please input sex again') sex = input('Please input student sex again: ') classID = input('Please input student classID: ') student = Student(studentID, name, sex, classID) self.students.append(student) print('Add success!') def delStu(self): studentID = input('Please input the studentID you want to del: ') i = self.findByID(studentID) while (i == -1): print('No this studentID, please input studentID again!') studentID = input("Please input the studentID again: ") i = self.findByID(studentID) del(self.students[i]) print('Del success!') def printStu(self): print('----------') print('%7s%7s%7s%7s'%('StudentID', 'Name', 'Sex', ' ClassID')) for student in self.students: print('%7s%7s%7s%7s'%(student['studentID'], student['name'], student['sex'], student['classID'])) def findByID(self, studentID): i = 0; for student in self.students: if (student['studentID'] == studentID): return i # return number i = i+1 return -1 # find fail def writeStu(self): try: fout = open(r'/Users/yangyang/Developer/Python/file/save.db', 'wb') except IOError as e: ###python3 print('No file exist!') else: pickle.dump(self.students, fout) fout.close() print('Save success!') def readStu(self): try: fin = open(r'/Users/yangyang/Developer/Python/file/save.db', 'rb') except FileNotFoundError as e: ### python3: as print('No file exist, please save first!') else: print('On reading', end='') print('...', end='') self.students = pickle.load(fin) print('...') print('Read file success!') fin.close() sm = StudentManager() print('\n\n') print('===========================') print(' StudentManagerSystem') print('===========================') sm.readStu() sm.mainMenu()
写完后发现一直报错
self.students = pickle.load(fin) EOFError: Ran out of input
最后在
Stack OverFlow找到答案。因为读取的文件为空。
解决办法:
在save.db里面事先写入数据# !/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 # -*- coding: utf-8 -*- import pickle student = {'studentID': '0001', 'name':'W', 'sex': 'F', 'classID':'1111'} students = [] students.append(student) fout = open(r'/Users/yangyang/Developer/Python/file/save.db', 'wb') pickle.dump(students, fout) print('Save success!') fout.close()
相关文章推荐
- 基于双向循环链表的学生管理系统
- 学生信息系统学习心得五、班级管理系统模块的创建
- MySql--实战(基于qt的学生管理系统)
- 学生信息系统学习心得三、学生1.5系统用户管理模块的创建
- 学生成绩管理系统模块基本介绍
- 基于linux socket 简单学生信息管理系统server程序
- 基于 Linux 系统的Nagios网络管理模块的实现
- 基于UML和ASP.NET实现三层B/S学生管理系统开发
- 基于linux socket 简单学生信息管理系统client程序
- Java程序综合案例:教务处管理系统之学生档案管理模块
- MySql--实战(基于qt的学生管理系统)
- 基于数据库MySQL的简易学生信息管理系统
- php基于thinkphp3.x的学生社团管理系统
- 基于自拟存储结构的学生成绩管理系统
- Java基于MySQL实现学生管理系统
- StudentMIS学生信息管理系统—基于sql + javafx
- 基于C++的学生信息管理系统
- 基于struts2的学生报道管理系统(附github源码地址)
- 基于角色控制的学生权限管理系统
- 【Windows Form 实战】学生成绩管理系统(八) 管理员模块设计2