知乎链接:https://zhuanlan.zhihu.com/p/149846892

仅供参考!!!仅供参考!!!仅供参考!!

(本人课程设计已验收,代码也已验收过,切勿直接照搬!!!)

老师所问的问题也不难,代码功能搞懂便可轻松验收过关!!

不必私聊问具体细节,试试便知=-=!

 

一、课程设计题目:

汽车销售管理系统

二、项目基本要求:

1、基本要求:

(1)复习并深入理解Python语言基本特性、数据文件读取方法及面向对象思想;

(2)掌握Python语言相关特性,熟悉相关常用函数的使用;

(3)研究并掌握Python面向对象的语法特点和使用方法;

2、创新要求:

在基本要求达到后,可进行创新设计,如调用matplotlib模块显示销售数据等功能,或者使用基于WEB的界面进行交互。

三、设计方法和基本原理:

1、问题描述(功能要求):

根据实验指导书要求,完成相关软件系统的设计,要求内容翔实,条理清晰,主要(关键代码)须有详细注释,写清楚测试结果,并分析存在的问题:

1)能够实现汽车销售管理与相关信息的保存(到文件)和读取;

2)实现所有库存汽车相关信息的录入、显示、销售、修改等功能;

3)系统界面应类似下图所示的控制台界面(鼓励使用WEB或桌面窗体界面):

 

其中,选择相应菜单代码之后进入相应的功能,可以:1录入汽车信息(最后保存到文件);2显示已经保存的汽车信息(库存);3销售汽车:先显示已有汽车数据,选择销售的汽车编号之后将该车的信息删除;4修改汽车信息,先通过编号选定汽车信息,然后更改;5显示已经销售的汽车信息;6退出。

2、问题的解决方案:

根据系统功能要求,可以将问题解决分为以下步骤:

(1)分析系统中的相关功能和信息的关系;

(2)根据问题描述,设计数据访问流程和访问界面(控制台界面);

(3)完成类中各个成员函数的定义;

(4)功能调试;

(5)完成系统总结报告以及系统使用说明书。

(在输入汽车编号时没有判断所填写的信息汽车编号是否已存在,可以在录取汽车功能函数里加一个判断语句,若车库中已有该汽车编号,则需要重新输入才可录入)

class Sale(object):
    def __init__(self):
        self.cars = []

    # 注册登录功能
    def login(self):
        user = []
        while True:
            print("""
            *********************************
            *1 注册                   2 登录*
            *********************************
            """)
            num = input("请输入您要使用的功能:")
            if num == "1":
                user_name = input("用户名:")
                user_pwd = input("密码:")
                user.extend([user_name, user_pwd])
                file = open("账号存储.txt", "w")
                file.write(str(user))
                file.close()
                print("恭喜您注册成功!")


            elif num == "2":
                f = open("账号存储.txt", "a+")
                f.seek(0)
                a = f.read()
                name = input("请输入您的用户名:")
                pwd = input("请输入您的密码:")
                num = []
                num.extend([name, pwd])
                if str(num) == a:
                    print("登录成功!")
                    break
                else:
                    print("您还未注册账号,请先注册再使用!")

            else:
                print("输入错误,请重新输入!")
        self.run()

    # 主界面
    def menu(self):
        print("""
                   *************************************************************************
                   *                           *欢迎您使用*                                *
                   *                        *汽车销售管理系统*                             *
                   *************************************************************************
                   *     1 录入汽车信息                             2 显示汽车信息         *
                   *************************************************************************
                   *     3 销售汽车                                 4 修改汽车信息         *
                   *************************************************************************
                   *     5 销售数据                                 6 退出系统             *    
                   *************************************************************************
                   """)

    # 录入汽车信息功能
    def car_entering(self):
        while True:
            car = {}
            number = input("请输入汽车编号:")
            name = input("请输入汽车名:")
            brand = input("请输入汽车的品牌:")
            origin = input("请输入汽车的原产地:")
            age = input("请输入汽车车龄:")
            emissions = input("请输入汽车的排放量:")
            price = input("请输入汽车的价格:")
            car["number"] = number
            car["name"] = name
            car["brand"] = brand
            car["origin"] = origin
            car["age"] = age
            car["emissions"] = emissions
            car["price"] = price
            self.cars.append(car)
            control = input("是否继续添加(Y/N):")
            if control == "Y":
                print("请您继续录入:\n")
            else:
                print("您已录入成功!")
                break

        self.save_info()

    # 显示汽车信息功能
    def car_display(self):
        print("\n")
        print("当前车库车辆的信息:")
        print("~" * 70)
        print("汽车编号\t汽 车 名 \t品 牌\t原 产 地\t车 龄\t排放量\t价 格\t")
        for car in self.cars:
            msg = car["number"] + "\t\t" + car["name"] + \
                  "\t\t" + car["brand"] + "\t" + car["origin"] + \
                  "\t\t" + car["age"] + "\t" + car["emissions"] + \
                  "\t\t" + car["price"]
            print("~" * 70)
            print(msg)
            print("~" * 70)
            print("\n")

    # 销售汽车功能
    def car_del(self):
        self.car_display()  # 调用显示功能,在销售前将车库车辆信息先显示出来
        number = input("请输入要售出的汽车编号:")
        for car in self.cars:
            # 以汽车编号为索引值,如果该汽车编号不在车库车辆信息库里则提示该编号汽车已经出售
            if number == car.get("number"):
                # 将售出的汽车信息存入文件,每次储存覆盖上一次的数据
                f = open("汽车销售数据信息.txt", "a+")
                f.write("\t汽车编号:" + str(car["number"]) + \
                        "\t汽车名:" + str(car["name"]) + \
                        "\t品牌:" + str(car["brand"]) + \
                        "\t原产地:" + str(car["origin"]) + \
                        "\t车龄:" + str(car["age"]) + \
                        "\t排放量:" + str(car["emissions"]) + \
                        "\t价格:" + str(car["price"]) + "\n")
                f.close()  # 关闭销售数据文件
                self.cars.remove(car)  # 移除销售的汽车信息
        self.car_display()
        print("该编号汽车已出售!")
        self.save_info()

    # 修改汽车信息
    def car_amend(self):
        self.car_display()  # 修改汽车信息前先把车库中的汽车信息显示出来
        number = input("请输出修改车辆所对应的汽车编号:")
        for car in self.cars:
            # 以汽车编号为索引值,如果该汽车编号在车库车辆信息库中则可进行修改
            if number == car.get("number"):
                print("此车的车辆信息如下:\n")
                print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
                q = "汽车编号:" + car["number"] + \
                    "\n汽车名:" + car["name"] + \
                    "\n品牌:" + car["brand"] + \
                    "\n原产地:" + car["origin"] + \
                    "\n车龄:" + car["age"] + \
                    "\n排放量:" + car["emissions"] + \
                    "\n价格:" + car["price"]
                print(q)
                print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
                new_number = input("请输入新的汽车编号:")
                car["number"] = new_number
                new_name = input("请输入新的汽车名:")
                car["name"] = new_name
                new_brand = input("请输入新的汽车的品牌:")
                car["brand"] = new_brand
                new_origin = input("请输入新的汽车的原产地:")
                car["origin"] = new_origin
                new_age = input("请输入新的汽车车龄:")
                car["age"] = new_age
                new_emissions = input("请输入新的汽车的排放量:")
                car["emissions"] = new_emissions
                new_price = input("请输入新的汽车的价格:")
                car["price"] = new_price
                self.car_display()  # 将修改后的车库车辆信息显示
                print("已成功修改信息!")
                self.save_info()

    # 显示销售数据功能
    def car_s(self):
        print("汽车销售数据:\n")
        fl = open("汽车销售数据信息.txt", "a+")
        fl.seek(0)  # 移动文件读取指针到开头
        # 将汽车销售数据信息一行一行显示
        for line in fl:
            print(line)

    # 文件保存
    def save_info(self):
        f = open("车库车辆信息.txt", "w")
        f.write(str(self.cars))  # 保存
        f.close()  # 关闭资源

    def run(self):
        while True:
            self.menu()
            select = input("请输入您的指令:")
            # 判断用户输入的内容
            if select == "1":
                self.car_entering()
            elif select == "2":
                self.car_display()
            elif select == "3":
                self.car_del()
            elif select == "4":
                self.car_amend()
            elif select == "5":
                self.car_s()
            elif select == "6":
                print("告辞!\n")
                break
            else:
                print("输入错误!!!请输入正确指令!\n")

    # 入口函数
    def main(self):
        self.login()


# 创建实例对象,调用方法
car = Sale()
car.main()