首先我们要想到一个商城管理系统有什么模块?

1.登陆 2添加商品 3删除商品 4 查询商品 5 程序退出

但是以上模块还是不够,一个管理系统应该还有一个具有更高权限的管理帐号,它具备以上的功能之外 还能看谁做了什么操作,删除,添加用户等等。

所以我们再添加以下模块:

1 添加用户 2 删除用户 3 修改用户 4 监控日志 5读写文件模块

整理大致的需求后,我们需要的是一个 1。当帐号为管理员admin 登陆的情况下,他能做以下操作,添加/修改/删除用户 添加/查询/删除商品 的功能;

需要做以上功能的话 再写函数前 我们应该写读文件 写文件,写监控日志。下面就直接放代码,其中常量的作用就是当你需要更改文件名时,就不用改动代码,直接在常量更改,避免了代码紊乱情况。

import time

USER_FILENAME = 'users'

#常量,存的是存储用户信息的文件名

LOG_FILENAME = 'shop.log'

#常量,存的是日志文件名

PRODUCT_FILENAME = 'products'

#常量,存的是商品信息的文件名

def read_file(filename):

'''

用来读取文件内容,返回一个字典

:param filename: 文件名

:return: 文件N内容的字典

:

'''

with open(filename,'a+') as fr:

fr.seek(0)

content = fr.read()

if len(content):#这里判断文件内容是否为空的,如果不为0的话就为是真

return eval(content)

return {}

def write_file(filename,content):

'''

用来读取文件内容,返回一个字典

:param filename: 文件名

:return: 文件N内容的字典

'''

with open(filename,'a+') as fw:

fw.seek(0)

fw.truncate()

fw.write(str(content))

def write_log(username,operation):

'''

写日志函数

:param username:用户名

:param operation:用户的操作信息

:return:

'''

w_time = time.strftime('%Y-%m-%d %H%M%S')

with open(LOG_FILENAME,'a+') as fw:

log_content = '%s %s %s \n'%(w_time,username,operation)

fw.write(log_content)

接下来我们就先写公共功能,登陆之后的添加商品,查询商品,删除商品,程序退出。除此之外,当添加商品操作进行时 我们要对商品的价格进行检验,避免出现负价格的情况

登陆函数:

def login():

'''

登录函数,如果登录成功返回登录用户名,登录失败返回None

:return:

'''

print('欢迎登录白羊座商品系统'.center(50,'*'))

username = input('请输入用户名:').strip()

password = input('请输入密码:').strip()

user_dic = read_file(USER_FILENAME)#获取到所有的用户信息

if username=='' or password =='':

print('账号或者密码不能为空!')

else:

if username in user_dic:

if user_dic[username]['password'] == password: # 登录成功

write_log(username, '登录成功!')

return username

else:

write_log(username, '密码不正确!')

print('密码不对!')

else:

print('用户不存在')

价格校验:

def is_price(s):

'''

这个函数的作用是用来判断价格是否合法,

:param s:

:return:

'''

s = str(s)

if s.count('.')==1:#判断小数点个数

sl = s.split('.')#按照小数点进行分割

left = sl[0]#小数点前面的

right = sl[1]#小数点后面的

if left.startswith('-') and left.count('-')==1 and right.isdigit():

lleft = left.split('-')[1]#按照-分割,然后取负号后面的数字

if lleft.isdigit():

return False

elif left.isdigit() and right.isdigit():

#判断是否为正小数

return True

elif s.isdigit():

s = int(s)

if s!=0:

return True

return False

添加商品:

def add_product():

products_dic = read_file(PRODUCT_FILENAME)#获取商品信息

p_name = input('请输入商品名称:').strip()

p_id = input('请输入商品id:').strip()

p_price = input('请输入商品价格:').strip()

if p_name != '' and p_id != '' and p_price != '':

# if和elif都是条件为真的时候才走的

if p_name in products_dic:

print('商品已存在!')

elif not is_price(p_price):

# not True是flase,指定走不到这里

# not Flase,就是true,就走这了

print('商品价格不合法!')

else:

products_dic[p_name] = {'id': p_id, 'price': p_price}

# products是存最新所有商品,给这个字典添加商品

write_file(PRODUCT_FILENAME,products_dic)

#调用写文件的函数,把商品信息写入到文件中

write_log(username,'添加了商品信息 商品名【%s】 商品价格【%s】 商品id【%s】'

%(p_name,p_price,p_id))

print('商品添加成功')

else:

print('商品名称、商品id、商品价格都不能为空')

删除商品/查询商品以及程序退出:

def del_product():

'''

删除商品

:return:

'''

products_dic = read_file(PRODUCT_FILENAME) # 获取商品信息

print('可以删除的有',products_dic.keys())

p_name = n_input('请输入你要删除的商品名称:')

if p_name !='':

if p_name in products_dic:

products_dic.pop(p_name)

write_file(PRODUCT_FILENAME,products_dic)

print('删除成功')

write_log(username,'删除了【%s】'%p_name)

else:

print('商品名称不存在!')

else:

print('商品名称不能为空')

def query_product():

'''

查询商品

:return:

'''

products_dic = read_file(PRODUCT_FILENAME)

p_name = n_input('请输入你要查询的商品名称:')

if p_name in products_dic:

p_id = products_dic[p_name]['id']

p_price = products_dic[p_name]['price']

msg = '商品名称是:【%s】,商品id是【%s】,商品价格是【%s】' % (p_name, p_id, p_price)

print(msg)

write_log(username,msg)

else:

print('你输入的商品不存在!')

def n_exit():

exit('程序退出')

用户admin的添加删除修改用户跟上面的代码大同小异:

def add_user():

users_dic = read_file(USER_FILENAME)#获取用户信息

username = input('用户名:').strip()

passwd = input('用户密码:').strip()

blance = input('用户的钱:').strip()

if username != '' and passwd != '' and blance != '':

# if和elif都是条件为真的时候才走的

if username in users_dic:

print('用户名已存在!')

elif not is_price(blance):

# not True是flase,指定走不到这里

# not Flase,就是true,就走这了

print('钱不合法!')

else:

users_dic[username] = {'password': passwd, 'price': blance}

# products是存最新所有商品,给这个字典添加商品

write_file(USER_FILENAME,users_dic)

#调用写文件的函数,把商品信息写入到文件中

write_log(username,'添加了用户信息 用户名【%s】 钱是【%s】'

%(username,blance))

print('用户添加成功')

def del_user():

'''

删除用户

:return:

'''

users_dic = read_file(USER_FILENAME) # 获取商品信息

print('可以删除的有', users_dic.keys())

username = n_input('请输入你要删除的用户名:')

if username != '':

if username in users_dic:

if username!='admin':

users_dic.pop(username)

write_file(USER_FILENAME, users_dic)

print('删除成功')

write_log(username, '删除了【%s】' % username)

else:

print('admin用户不能被删除!')

else:

print('用户不存在!')

else:

print('用户名不能为空')

def modify_user():

users_dic = read_file(USER_FILENAME) # 获取商品信息

username = n_input('请输入要修改的用户名:')

blance = n_input('请输入你要修改的金额:')

passwd = n_input('请输入你要修改的密码:')

if username!='' and (blance!='' or passwd!=''):

if username in users_dic:

if blance!='':

users_dic[username]['moeny']=blance

elif passwd!='':

users_dic[username]['password'] = passwd

else:

users_dic[username]['money'] = blance

users_dic[username]['password'] = passwd

write_file(USER_FILENAME,users_dic)#写用户信息

write_log(username,'修改了%s用户'%username)

else:

print('用户不存在')

else:

print('用户名不能为空,金额和密码至少一个不能为空!')

现在我们根据非admin 与admin 做映射:

manager_user_menu = {

"1":add_user,

"2":del_user,

"3":modify_user,

"0":n_exit

}#这个用户管理函数做的映射

product_manger = {

"1":add_product,

"2":del_product,

"3":query_product,

"0":n_exit,

}#这个是产品管理

admin_menu = {"4":manager_user}

admin_menu.update(product_manger)

#admin的菜单,为了普通用户操作用户管理

根据映射我们应该再写2个函数:

def modify_user():

users_dic = read_file(USER_FILENAME) # 获取商品信息

username = n_input('请输入要修改的用户名:')

blance = n_input('请输入你要修改的金额:')

passwd = n_input('请输入你要修改的密码:')

if username!='' and (blance!='' or passwd!=''):

if username in users_dic:

if blance!='':

users_dic[username]['moeny']=blance

elif passwd!='':

users_dic[username]['password'] = passwd

else:

users_dic[username]['money'] = blance

users_dic[username]['password'] = passwd

write_file(USER_FILENAME,users_dic)#写用户信息

write_log(username,'修改了%s用户'%username)

else:

print('用户不存在')

else:

print('用户名不能为空,金额和密码至少一个不能为空!')

def manager_user():

choice = n_input('1、添加用户 2、删除 3、修改用户 0退出:')

if choice in manager_user_menu:

manager_user_menu[choice]()

else:

print('请请输入0-3的选项!')

这样 我们需要的函数都已经齐全了,现在我们就调用就行了

def welcome():

global username

username = login()#调用登录函数,获取登录状态

if username:

if username=='admin':

choice = input('1 添加商品、2删除商品、3查询商品、4用户管理、0退出').strip()

if choice in admin_menu:

admin_menu[choice]()

else:

print('请请输入0-4的选项!')

else:

choice = n_input('1 添加商品、2删除商品、3查询商品、0退出:')

if choice in product_manger:

product_manger[choice]()

else:

print('请请输入0-3的选项!')

welcome()#运行程序

python商品管理系统_python 函数写商城管理系统相关推荐

  1. python纯函数_理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统

    原标题:理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统 前面已经带大家学习了函数,高级数据类型,比如说字典,今天带大家用函数加字典做一个游戏管理系统,希望大家喜欢.废话不多说,直 ...

  2. python函数调用位置_python函数定义,调用,传参,位置参数及关键字参数,返回值

    使用函数是真正开始编程的第一步,函数y=f(x)我们并不陌生,对x进行一顿操作得到一个值y.给不同的x,进行相同的操作,得到相应的y值. 程序层面函数是执行特定任务的一段代码,将一段代码定义成函数并为 ...

  3. python实现高校教务管理系统_python+mysql实现教务管理系统

    本文实例为大家分享了python实现教务管理系统,供大家参考,具体内容如下 mysql+python构成教务管理系统,提供系统管理员,教职工,学生三级.有注册,添加,修改,发布信息等功能. Login ...

  4. python销售管理系统_python实现手机销售管理系统

    本文实例为大家分享了python实现手机销售管理系统的具体代码,供大家参考,具体内容如下 要求如下: 手机销售系统 手机品牌 手机价格 库存数量 vivoX9 2798 25 iphone7(32G) ...

  5. 名片管理系统python详解_Python综合应用名片管理系统案例详解

    本文实例讲述了Python综合应用名片管理系统.分享给大家供大家参考,具体如下: 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎 ...

  6. 用python编写名片_python实现简单名片管理系统

    前言 之前看过一遍的python教程,真的是自己看过一遍,python的程序能看懂,但是很难去实现.比较困难的自己实现一些代码,找工作原因,自己又认认真真的看书,敲代码,后来看到了这个题目,想把之前学 ...

  7. python做一个销售管理系统_python实现手机销售管理系统

    本文实例为大家分享了python实现手机销售管理系统的具体代码,供大家参考,具体内容如下 要求如下: 手机销售系统 手机品牌                手机价格    库存数量 vivoX9   ...

  8. 用python设计学生管理系统_python+tkinter实现学生管理系统

    本文实例为大家分享了python+tkinter实现学生管理系统的具体代码,供大家参考,具体内容如下 from tkinter import * from tkinter.messagebox imp ...

  9. python车辆管理系统_Python简易版停车管理系统

    本文实例为大家分享了Python简易版停车管理系统的具体代码,供大家参考,具体内容如下 import time # 最大停车数 max_car = 100 # 当前停车数,初始为0 cur_car = ...

最新文章

  1. 2018深度学习引用数最高的十大论文
  2. predicate java 作用_Java函数式编程接口详解之Predicate
  3. oracle中substr() instr() 用法
  4. iOS模块器截屏闪退
  5. 一文详解决策树算法模型
  6. 【uni-app】动态计算图片高度且保持宽高比
  7. 实现连麦_微信年底放了个大招,视频号重磅升级,打赏直播连麦美颜抽奖齐上...
  8. Oracle迁移索引
  9. JAVA开发需求分析套路_毕设做什么好?感觉都是套路了
  10. 玩转oracle 11g(13):命令学习1
  11. 浅谈开发中的MVVM模式及与MVP和MVC的区别
  12. LeetCode 398. 随机数索引(概率)
  13. php和python-PHP和Python性能比较:放弃PHP改用Python
  14. linux基本使用(一)
  15. 这些有趣的人,带你打开世界另一面!
  16. 计算机应用基础自主学习,计算机应用基础教学中如何培养学生的自主学习能力...
  17. F1 Delta Time 将停止运营,玩家的奖励如何?
  18. 你吃的外卖,半年前就做好了
  19. 小知识:什么是build.prop?
  20. 使用微信小程序控制ESP8266(麦克纳姆轮)智能车

热门文章

  1. [数据结构与算法] : 栈的链式实现
  2. Android Studio 复制粘贴图片到drawable文件夹没有效果 - 解决方法
  3. dom jaxp详解
  4. Airflow 中文文档:集成
  5. Web Hacking 101 中文版 十四、XML 外部实体注入(一)
  6. Hexo 入门指南(五) - 搬家 备份
  7. [c/c++]小议几个写缓冲区的函数
  8. 自定义一个月份选择器插件
  9. 在普通java类里获取Spring管理的bean
  10. 5G NR协议栈----总体架构