python 函数写商城管理系统

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

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()#运行程序
时间: 2024-10-09 17:47:56

python 函数写商城管理系统的相关文章

python: 怎样写一个函数把名字大写并变成下面这样——字典与三引号

例题:python: 怎样写一个函数把名字大写并变成下面这样? 字典+列表:将每个字母以列表形式存在字典里,分六次打印输出: dic = { } dic['C']=[ ' CCCC ', ' C C', 'C ', 'C ', ' C C', ' CCCC ' ] dic['A']=[ ' A ', ' A A ', ' A A ', ' AAAAAAA ', ' A A ', 'A A' ] dic['T']=[ 'TTTTTTT', ' T ', ' T ', ' T ', ' T ', '

代做远程系统系统、代写远程终端管理系统

代做远程系统系统.代写远程终端管理系统远程终端管理系统需求分析说明书一. 引言 11.编写目的 12. 定义 1二. 任务概述 21.目标 22. 用户的特点 23. 系统功能示例 2三. 需求细则 21. 对功能的规定 22. 对性能的规定 53. 对排版的规定 54. 对可维护性的规定 55. 对个性的规定 66. 对项目过程的规定 6 一. 引言1.编写目的通过与多位软件使用者进行全面深入地探讨和分析,并完成<远程终端管理系统>市场的前期调查后,提出了这份软件需求分析说明书.此需求分析说

浅析python函数

慢慢的开始进入状态啦,被明老师说我什么都不会后我觉得是该反思下自己这个学期的学习了,虽然我对实验没有很大的兴趣,但是既然名老师要求我开始做实验,我就跟着小丹师姐好好学学,用Tanger师兄的话来说就是:做实验有利于你理解生物信息学数据处理的原理,也许有一天,未来做生物信息的学弟学妹会看到这段话,就像我在码迷上看到free_mao的博文一样,生物信息还是基于生物的,生物原理必须要理解,不然和做计算机有什么区别呢?以前对书本的知识不够重视,语言的学习进度很缓慢,现在希望能分享一些学习心得体会给大家,

python函数

python函数学习 1. 概述: 函数是重用的程序段,用关键字def来定义,可以任意多次地运行这个语句块,被称为调用函数.Python提供了许多内建函数,比如print(),也可以自己创建函数,这被叫做用户自定义函数,函数能提高应用的模块性,和代码的重复利用率. 2.函数语法: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明. 函数内容以冒号起

Python 五、Python函数

一.函数概述 1.函数的基础概念 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构. 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在python中可以创建4种函数: 全局函数:定义在模块中 局部函数:嵌套于其它函数中 lambda(匿名)函数:仅是一个表达式 方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用 函数和过程的联系:每个Python函数都有一个返回值,默认为None,也可以使用"return

六、Python函数

Python函数 一.函数 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字 可以通过函数名在程序的不同的地方多次执行(这通常叫做函数调用),却不需要在所有地方都重复编写这些语句 自定义函数和预定义函数 函数作用:降低编程的难度.代码重用 当我们自己定义一个函数时,通常使用def语句 def 函数名(参数列表): #可以没有参数 函数体 #!/usr/bin/python a = int(raw_input("please enter a number:&quo

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二部分将第一部分的示例进行扩展,展示了如何在python中调用多线程的C模块:第三部分扩展了第二部分,增加了在C模块的线程中回调python的演示. 本文所用的环境为:64位Win7 + python 3.4 x86 + vs2010 一.windows下的C语言多线程程序 windows下多线程编程

python函数及函数式编程

函数是对程序逻辑进行结构化或过程化的一种编程方法.函数与过程相比,两者都是可以被调用的实体,但是传统意义上的函数或者"黑盒",可能不带任何输入参数,经过一定的处理,最后向调用者传回返回值,而过程是简单.特殊.没有返回值的函数.其实,python的过程就是函数,因为在函数中如果没有显式return返回值的话,解释器会隐式地返回默认值None. 1.函数定义 def foo([argument-list]): "function_document_string" foo

Python函数以及函数式编程

本文和大家分享的主要是python 函数及函数式编程相关内容,一起来看看吧,希望对大家 学习python有所帮助. 函数基本语法及特性 定义 数学函数定义: 一般的,在一个变化过程中,如果有两个变量 x 和 y ,并且对于 x 的每一 个确定的值, y都有唯一确定的值与其对应,那么我们就把 x 称为自变量,把 y 称为因变 量, y 是 x 的函数.自变量 x 的取值范围叫做这个函数的定义域. 但编程中的「函数」概念,与数学中的函数是有很  同的  函数是逻辑结构化和过程化的一种编程方法 函数的