Dazzlemoon

“你帮我助”物品交换系统——软件工程第一次作业

“你帮我助”物品交换系统

本项目为上海交通大学2022年第一学期软件工程课程作业。

需求分析

在疫情期间,各个小区居民发挥互助精神,进行物品交换,互通有无。请编写的一个物品交换软件,允许添加物品的信息,删除物品的信息,显示物品列表,也允许查找物品的信息。

项目设计

使用VScode进行编写,语言为python。
物品交换系统的功能有:1.添加物品 2.删除物品 3.显示所有物品列表 4. 查找物品 0.退出

PSP数据分析

PSP2.1 时间
Plannning 计划
Estimate 估计任务所花时间 5h
Development 开发
Analysis 分析需求 5min
Design Spec 生成设计文档 \
Design Review 设计复审 \
Coding Standard 代码规范 5min
Design 具体设计 5min
Coding 具体编码 4h
Code Review 代码复审 0.5h
Test 测试 0.5h

项目代码

item.py

# 定义物品类,包含信息物品名称,物品主人姓名,物品个数,物品主人电话,备注
class Item:
    def __init__(self, name, master, number, phone, detail):
        self.name = name
        self.master = master
        self.number = number
        self.phone = phone
        self.detail = detail    

operation.py

from item import Item
import pandas as pd
#将物品信息转化为python中DataFrame形式进行输出
def get_dataframe(items):
    all = []
    for i in range(len(items)):
        temp = [items[i].name, items[i].master, items[i].number\
                    , items[i].phone, items[i].detail]
        all.append(temp)
        all_df = pd.DataFrame(all, columns=["物品名称", "物品主人姓名", \
                            "物品个数", "物品主人电话号码", "备注"])
    return all_df
#定义操作类,包含所有的操作
class Operation:
    def __init__(self):
        self.items = []
    #添加物品    
    def Add(self):
        name = input("请输入物品的名称:")
        master = input("请输入物品主人的姓名:")
        number = input("请输入物品的个数:")
        phone = input("请输入物品主人电话号码:")
        detail = input("该栏为备注:")
        item = Item(name, master, number, phone, detail)
        self.items.append(item)
    #显示所有物品列表
    def Show_all(self):
        if len(self.items) == 0:    
            print("这里暂时没有物品。")
        else:
            print("所有物品如下:")
            all_items = get_dataframe(self.items)
            print(all_items)
    # 查找物品信息
    def Search(self):
        search_name = input("请输入要寻找的物品名称:")
        all_items = get_dataframe(self.items)
        all_items_search = all_items[all_items["物品名称"]== search_name]
        if all_items_search.empty:
            print("该表单中没有您所找的物品。")
        else:
            print("所寻找符合条件的所有物品如下:")
            print(all_items_search)
    # 删除物品信息
    def Delete(self):
        delete_name = input("请输入您所需删除物品的名称:")
        delete_master = input("请输入您所需删除物品主人的姓名:")
        begin_lens = len(self.items)
        for item in self.items:
            if delete_name == item.name and delete_master == item.master:
                self.items.remove(item)
        end_lens = len(self.items)
        if begin_lens == end_lens:
            print("这里没有您所需要删除的物品。")
        else:
            print("您所需要删除的物品已删除")
    # 展示菜单
    def Show_menus(self):
        print("这里是物品交换系统,您可以对该系统进行一下操作:")
        print("-"*6+"1.添加物品"+"-"*14)
        print("-"*6+"2.删除物品"+"-"*14)
        print("-"*6+"3.显示所有物品信息"+"-"*6)
        print("-"*6+"4.查找物品信息"+"-"*10)
        print("-"*6+"0.退出系统"+"-"*14)
        

main.py

from operation import Operation
sheet = Operation()
while True:
    try:
        sheet.Show_menus() #显示菜单
        choose_operation= int(input("请输入您的选择:")) #让用户选择菜单
        if choose_operation == 1:
            sheet.Add()
        elif choose_operation == 2:
            sheet.Delete()
        elif choose_operation == 3:
            sheet.Show_all()
        elif choose_operation == 4:
            sheet.Search()
        elif choose_operation == 0:
            print("谢谢使用该物品交换系统")
            break
        else:
            print("输入错误,请重新输入。")
        print("操作结束,请选择接下来的操作。")
    except NameError:
        print("输入错误,请重新输入。")
        

改进思路

  • 可视化方面。开头的软件呈现形式单一,在用户交互方面比较差。
  • 寻找功能方面。用户只能通过物品名称进行寻找而无法实现自定义寻找,即通过物品主人姓名,物品主人电话号码寻找等等。
  • 删除功能方面。现阶段删除功能只能通过物品名称加上物品主人姓名一起进行删除,而用户无法只凭物品名称进行删除。

总结

该项目是我第一次用python实现的一个简单的软件开发,虽然有很多缺陷,但我还是很兴奋的。该软件使用python中的面向对象设计方法,将物品列表封装成抽象的类,并且将软件的功能也抽象成一个抽象的类,方便以后对该软件增加更多的功能。

项目地址

项目已发布至github网站:https://github.com/Dazzlemoon/homework1

posted on 2022-10-09 16:33  Dazzlemoon  阅读(41)  评论(0编辑  收藏  举报