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

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

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

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

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

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

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

import timeUSER_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()#运行程序

转载于:https://www.cnblogs.com/snorth/p/7040103.html

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

  1. python商品管理系统_python 函数写商城管理系统

    首先我们要想到一个商城管理系统有什么模块? 1.登陆 2添加商品 3删除商品 4 查询商品 5 程序退出 但是以上模块还是不够,一个管理系统应该还有一个具有更高权限的管理帐号,它具备以上的功能之外 还 ...

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

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

  3. Python函数实现“学生管理系统”案例

    前言:本案例使用Python函数进行实现. 文章目录 一.需求分析 二.Python文件 三.文本文件 一.需求分析 显示所有学生信息 新建学生信息 查询学生信息 修改学生信息 删除学生信息 选择显示 ...

  4. 用python语言编斐波那契数列_用python函数写斐波那契数列

    斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上, ...

  5. 用python函数写斐波那契数列通项公式_用python函数写斐波那契数列

    斐波那契数列,又称黄金分割数列.因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上, ...

  6. python+diango写酒店管理系统_课内资源 - 基于Python的Django框架实现的中式快餐厅管理信息系统网站...

    1 初步调研 随着餐饮业的连锁和国外餐饮巨头的进入,餐饮业的竞争将越来越激烈:要想在竞争中处于不败之地,必须在管理.服务等方面提高服务管理意识.面对当前餐饮业普遍的产业化程度低,管理手段.管理技术落后 ...

  7. 用python函数写斐波那契数列非递归,python 入门之斐波那契数列递归表达式算法和非递归算法...

    题目: 斐波那契数列是一组有规律的数列:1,1,2,3,5,8,13,........,那么我们怎么用python 来完成此算法,并求出第200位的值是多少 1.python 递归表达式实现: def ...

  8. Python框架:Django写图书管理系统(LMS)

    今天我会带大家真正写一个Django项目,对于入门来说是有点难度的,因为逻辑比较复杂,但是真正的知识就是函数与面向对象,这也是培养用Django思维写项目的开始 Django文件配置 Django模版 ...

  9. python怎么命名未知数_码如其人,小老弟,你能写一手漂亮的Python函数吗

    与多数现代编程语言一样,在 Python 中,函数是抽象和封装的基本方法之一.你在开发阶段或许已经写过数百个函数,但并非每个函数都生而平等.写出「糟糕的」函数会直接影响代码的可读性和可维护性.那么,什 ...

  10. python函数的组成要素_python函数要素有哪些?这7点是你写好python代码的关键

    [摘要]对于python小白来说,写好一个python代码并不容易,不过你知道python函数要素有哪些?这7点是你写好python代码的关键,如果你想学好python,那么本文内容一定要自己试试,毕 ...

最新文章

  1. 字节跳动最新开源!java界面实现查询功能
  2. 根文件系统构建(Buildroot 方式)
  3. git的简单理解及基础操作命令
  4. mybatis insert插入成功返回0_mybatis添加客户
  5. element-UI框架使用validate.js的form校验规则(+自定义验证代码)- 应用篇
  6. 《Python编程快速上手——让繁琐工作自动化》——2.5 控制流的元素
  7. KuaiRec | 快手发布首个稠密度高达99%的推荐数据集, 可用于多种推荐系统方向研究...
  8. CloudStack 4.4+KVM之通过ISO文件创建CentOS虚拟机
  9. 关于字长、内存空间、地址总线、数据总线的理解
  10. 当你在搜索框按下enter的一刹那发生了什么?
  11. 现代交换技术学习笔记
  12. 将PHP与Identi.ca一起使用,第2部分
  13. 流氓并不可怕,就怕流氓有文化 -- 这是一个知识改变命运的例子
  14. ON DUPLICATE KEY UPDATE 作用及一句SQL实现批量修改
  15. QT实现文本编辑器(简易版)
  16. 微信撤回消息服务器还有存底么,微信更新又来了,撤回消息大变化!还增加“查岗”功能......
  17. 测试管理工具之Bugfree
  18. 流量壁垒消失后,电商风口重启
  19. 通过压力测试提升服务器并发性能实例
  20. keyshot手机渲染教程_Rhino+Keyshot-黑鲨手机建模渲染

热门文章

  1. 服务器虚拟化嵌套,VMware虚拟机配置嵌套虚拟化
  2. c语言程序分数化简,C ++中的简化分数
  3. 如何把一个软件嵌入另一个软件_Notion可不只是一个笔记软件
  4. Pandas系列(三)新增数据列
  5. 牛客小白月赛6 A 鲲
  6. 设计模式以及类图的实现
  7. mssql sql server 其它系统函数 parsename 点语法字符串分割函数应用简介
  8. 作业六 栈的使用和界面编程探索
  9. 2017.3.16 下午
  10. 【转】wget 使用技巧