“你帮我助”物品交换系统——软件工程第一次作业
“你帮我助”物品交换系统
本项目为上海交通大学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) 编辑 收藏 举报