本篇文件必须对python基础 ,面向对象和python中的os模块和shutil模块比较熟悉当然有关os,shutil模块详解可以先去学习,直接给需求如下:
用户管理系统
功能如下:
1 添加用户
2 查询用户
要求
1 添加用户到磁盘的指定位置,文件名以用户的名字来命名
文件的格式如 : 张三.txt
文件里面的内容如下:
名字: 张三
性别: 男
年龄: 22
2 查询根据名字来查询
3 不用序列化实现
4 保存在d:/userproject目录下
思路:
1. User 实体类 名字 性别 年龄
2. UserManager 行为 添加 查询
#添加 1 返回类型True 2 参数 user对象 3 addUser
def addUser(self,user):
# 判断目录是否存在
#2 创建文件
#3 写入内容
#4 关闭资源
# 查询 返回User 2 参数name 3 queryUserByName
def querUserByName(self,name):
#1判断文件是否存在,存在就读取str ->user对象 ,不存在就提示
#2关闭资源
3. Menu 用户交互负责输入和输出
代码如下:
UserBean
#用户实体类
class UserBean():
def __init__(self,name,age,sex):
self.__name=name
self.age=age
self.sex=sex
def showInfo(self):
print("名字:",self.name,"年龄:",self.age,"性别:",self.sex)
UserManager
#操作用户
import os
from xml.dom.minidom import Document
from userproject.UserBean import UserBean
class UserManager():
#常量 保存用户的路径
USER_SAVE_PATH="d:/userproject/"
#添加用户
def addUser(self,userBean):
#1判断保存目录是否存在,
if os.path.exists(UserManager.USER_SAVE_PATH) is False:
#2不存在就创建目录,
os.makedirs(UserManager.USER_SAVE_PATH)
# 存在通过open创建文件,并在文件中添加内容 d:/userproject/张三.txt
file = open(UserManager.USER_SAVE_PATH+userBean.name+".txt",'w')
file.write("名字:"+userBean.name+"\n")
file.write("性别:" + userBean.sex + "\n")
file.write("年龄:" + str(userBean.age))
#3关闭资源 并返回结果
file.close()
return True
#根据用户名来查询
def queryUserByName(self,name):
file = UserManager.USER_SAVE_PATH+name+".txt"
if os.path.isfile(file) is True:# 1判断文件是否存在,如果存在就读取str, str -> userBean对象
f = open(UserManager.USER_SAVE_PATH+name+".txt",'r')
return self.strToUserBean(f)
else:#2不存在返回None
return None
def strToUserBean(self,f):
text = f.read()
name = text.split("\n")[0].split(":")[1]
sex= text.split("\n")[1].split(":")[1]
age =text.split("\n")[2].split(":")[1]
f.close()
return UserBean(name,age,sex)
Menu
from userproject.UserBean import UserBean
from userproject.UserManager import UserManager
class Menu():
def __init__(self):
self.userManger = UserManager()
#开启系统
def startSystem(self):
print("用户管理系统")
print("1 添加用户")
print("2 查询用户")
print("3 退出")
type= int (input("请选择:"))
while type>=1 and type<=3:
if type==1:
self.createAddUserMenu()
elif type==2:
self.createQueryUserByNameMenu()
elif type==3:
break
type = int(input("请选择:"))
else:
print("输入有误")
def createAddUserMenu(self):
name = input("请输入用户名:")
sex = input("请输入性别:")
age =input("请输入年龄:")
user = UserBean(name,age,sex)
if self.userManger.addUser(user) is True:
print("添加成功")
else:
print("添加失败")
def createQueryUserByNameMenu(self):
name = input("请输入名字:")
user = self.userManger.queryUserByName(name)
if user is not None:
user.showInfo()
else:
print("用户不存在")
#程序入口
m = Menu()
m.startSystem()
主要巩固面向对象思想和os模块和shutil模块基本操作。