首页 > 其他分享 >HaoshuoShao's software_engineering_homework_1

HaoshuoShao's software_engineering_homework_1

时间:2022-10-11 00:55:15浏览次数:92  
标签:... -- GUI py engineering 物品 class homework software

版本1:后台管理系统版本

软件及代码:https://github.com/HaoshuoShao/homework22-fall

(ps. GUI 和 requirements.txt还没有完善)

需求分析

  1. 可以 增,删,查 物品信息
    • 可以加个改... 比如五斤大米改三斤
  2. 没有要求实现物品的交换:
    • 比如用户A提供了物品a,用户B提供了物品b
    • A需要b,向B发起请求
    • B收到请求,觉得可以用b换a,同意请求
    • A得到成功交换的反馈
    • 物品列表中a,b改变状态:未交换->已交换

软件定位

  • 倾向于后台管理系统:
    1. 操作者不是小区里的居民用户:如果有用户之分,就要考虑很多,比如登录,删除修改等操作的权限,自己测试过程中用户的切换,用户数据库表和物品数据库表的连接...
    2. 建议操作者是后台管理员,居委会办公室的大妈接到了居民们的诉求,后台发布了交换信息...

软件设计

根据软件设计经典框架(偏设计思想上的框架,而不是代码开发的框架)

MVC:Model View Controller,是模型 (model)-视图 (view)-控制器 (controller)的缩写

  • M层:

可以设计一个class GoodInformation(goods, provider, time, amount, isChanged, des)

每一条具体的信息就是这个class的实例(一个对象)!

同时设计他的方法,比如getGoods(),setGoods(),getProvider(),setProvider()...

个人建议增删改查不放在这个class里,这个class还只处于表格的row层级

可以再设计一个GoodsTable,也就是表格级别的对象,这个对象的数据成员有大量的row级别对象GoodInformation,并且具有增删改查方法。

比如Table.delete(5) # 删除第五行

表格具有删除某一行的方法,逻辑上会合理一点

还要注意,GoodInformation还只是停留在逻辑设计层面的类,代码中不一定要实现!

比如对表格操作,添加一层,删除一层,似乎调用Table类的方法就行,Table直接读写文件,结果用一个二维列表存储就行了,不一定要用GoodInformation[]数组去存储。

说的有点杂,有点啰嗦,最近在学数据库,有感而发,数据结构、数据库的设计很重要,需要花时间打磨一下,逻辑和物理层面都要考虑下

  • V层:也就是界面,比如有个添加物品信息的按钮,按钮绑定了一个函数addGoods(),点击就触发(这个触发过程一般写GUI的库都已经提供,只需要我们绑定相应的函数事件)

    这个软件主要就是把数据库(excel)里的数据显示在界面上呗,然后提供一点按钮,输入的框框,大概就这些元素了

  • C层:实现具体的业务逻辑,可以把函数实现之类的都放在这一层里理解,比如addGoods()函数触发后,接受相关参数(具体的物品名称等等),然后new一个对象,给对象赋值,将这个对象放入列表...等等

    简而言之,软件的使用者在界面点鼠标、敲键盘(都是输入),View层的某个组件感知到了输入,相当于使用者发出了请求,C层的任务就是合理的处理请求与数据。

以上有大量个人理解成分,对各层的解释可能有不太恰当的地方,M层的设计只是举例,还需要做更周到的考虑,或者多考虑几种设计方案

工具使用

  • 系统

    win...吧,linux由于是remote,上传GitHub没搞定

  • 编辑器(编程环境)

    • vscode 轻便
  • 语言:python

    • python提供文件处理库,做数据的读写,存excel还不错

    • python提供GUI设计库,个人用过PyQt5

      • 优点:接口丰富,可以QtDesigner完成组件的建立和布局,类似于高中visual basic里拖拽一个按钮,一个文本框之类的,并且提供了表格显示,可以满足物品列表显示的需求;

      • 面向对象编程的思想很强,因人而异是好还是不好

      • 缺点:有时候很多功能用不明白,要心静下来写,网络上的一些指导帖子都略微抽象,当初用的时候经常被小问题卡住;不确定pyqt5的表格显示中是否支持点击

      • 可以看看其他GUI库

  • 文件结构

    - MyProject
      |-- bin/
      |
      |-- foo/
      |   |-- tests/
      |   |   |-- __init__.py
      |   |   |-- test_main.py
      |   |-- class/
      |   |   |-- __init__.py
      |   |   |-- class.py
      |   |-- function/
      |   |   |-- __init__.py
      |   |   |-- function.py
      |   |-- __init__.py
      |   |-- main.py
      |
      |-- docs/
      |   |--
      |   |--
      |
      |-- setup.py
      |-- requirements.txt
      |-- README
    
    
    • bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。

    • foo/: 存放项目的所有源代码。

      (1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。

      (2)其子目录tests/存放单元测试代码;

      (3)其子目录class/存放自己设计的类;

      (4)其子目录function/存放自己设计的函数;

      (5) 程序的入口最好命名为main.py。

    • docs/: 存放一些文档。

    • setup.py: 安装、部署、打包的脚本。

    • requirements.txt: 存放软件依赖的外部Python包列表。

    • README: 项目说明文件。

只是一种建议,程序能跑,好看,文件能按照一定的依据分类,我觉得就行

实现步骤

  1. 环境准备
  2. 数据逻辑层面的关系和操作梳理(数据结构)
  3. 数据的读写实现,比如先尝试成功输入输出信息
  4. 可以先在终端命令行实现增删改查功能,确保函数、类的编写都是正确的
  5. 数据可视化——设计GUI
  6. 不停地测试功能修改bug,考虑特殊情况

标签:...,--,GUI,py,engineering,物品,class,homework,software
From: https://www.cnblogs.com/HsShao/p/16777926.html

相关文章

  • Adjustable Low Idle Speed on Cummins INSITE Software (CUMMINS Engines)
    AdjustableLowIdleSpeedonCumminsINSITESoftware(CUMMINSEngines)AdjustableLowIdleSpeedThisfeaturecanreducetheamountoffuelburnedanddecreas......
  • Python_fifth_chapter_homework
    Python第五章实例和实战作业实例01:使用字符串拼接输出一个关于程序员的笑话代码如下:代码运行结果如下: 实例02:截取身份证号码中的出生日期代码如下:代码运行......
  • UML建模工具最近更新(-2022年4月)共12款:Papyrus、StarUML、Software Ideas Modeler
    ​​DDD领域驱动设计批评-文集-点击查看>>​​​​《软件方法》强化自测题集-点击查看>>​​UMLChina整理的UML建模工具列表请见http://www.umlchina.com/tools/search.aspx......
  • Week1-homework
    与门\(And\)用两个\(Nand\)门拼出来\(ab=\overline{\overline{ab}1}\)CHIPAnd{INa,b;OUTout;PARTS:Nand(a=a,b=b,out=out1);Nand(......
  • StComputer2023概率密度和分布计算软件下载Probability density and distribution cal
    StComputer2023概率密度和分布计算软件下载Probabilitydensityanddistributioncalculationsoftwaredownload2023版更新记录: 2023EditionupdateRecord: 1.......
  • Biological Software Utilities
    传送门题意:\(n\)个点,问可以构造出多少个可以完美实现两两匹配的个数,结果取模思路:首先,奇数为0,偶数才有可能,先把n个点两两进行匹配,观察得出2->1,4->1*3,6->1......
  • nchu-software-oop-2022-1
    7-1身体质量指数(BMI)测算分数 10作者 蔡轲单位 南昌航空大学体重是反映和衡量一个人健康状况的重要标志之一,过胖和过瘦都不利于健康,BMI(身体质量指数......
  • nchu-software-oop-2022-3
    7-1点线形系列1-计算两点之间的距离分数 10全屏浏览题目切换布局作者 蔡轲单位 南昌航空大学输入连个点的坐标,计算两点之间的距离输入......
  • AMD Software꞉ Adrenalin Edition闪退问题
    先抛结论是因为连接了两个显示器的问题,拔掉其中一个显示器的接头,就可以正常使用了,至于往深了的问题,我就不知道了,反正这个情况可以给各位提供一个参考,不一定就都是这个问题......
  • "你帮我助“软件开发-homework
    PSP数据统计PSP2.1PersonalSoftwareProcessStages预估耗时Planning计划 \·Estimate·估计这个任务需要多少时间 10hDeve......