首页 > 其他分享 >第一周-软件二次开发

第一周-软件二次开发

时间:2024-03-06 19:12:29浏览次数:25  
标签:mWin elif 酒店 第一周 代码 ch 二次开发 软件

项目来源
本次作业的项目来源于本人在GitHub上面找到的一个简单的酒店管理系统。

运行环境
Python 3.10.7

运行结果

基础页面图


功能样例图


查询样例图

主要问题
程序的主要问题有:

  • 不做任何交互也会导致程序退出
  • 交互时不清屏,造成查看结果困难
  • 录入酒店信息的数据验证出现问题,会导致报错

修改
修改过后的代码:
第一部分主要解决了主界面的交互逻辑不清的问题:
修改了主界面的功能,加入了清屏、暂停,使得交互逻辑更加合理了

点击查看代码
#主程序
def main():
    
    #初始化
    mWin = MainWindow()

    #显示菜单,按照选择执行操作
    while True:
        ch = mWin.selectCommand()
        if ch == '1': #从文件读出已有酒店信息
            mWin.loadData("HotelInfo.csv")
            mWin.showAllInfo()

        elif ch == '2': #查询已有酒店信息
            mWin.queryHot()      

        elif ch == '3': #添加酒店
            mWin.addHotInfo()

        elif ch == '4': #显示所有酒店信息
            mWin.showAllInfo()

        elif ch == '5': #保存酒店信息到文件
            mWin.saveData("HotelInfo.csv")
            
        elif ch == '6':
            break
        else:
            print("输入错误,请重新输入")
        os.system("pause")
        os.system("cls")
第二部分主要解决数据验证问题: 更改while循环的条件,并在合适的地方break,使得输入操作的数据验证更加完善,不会报错
点击查看代码
    def addHotInfo(self):
                
        addName = input("请输入添加酒店名:\n")
        if addName == "" :
            print("输入酒店名为空!")
            return -1
        
        mana = self.manaHot  #获得酒店信息对象

        #录入酒店信息
        str = input("请依次输入酒店的装修时间,房间数,平均房价,评分(以逗号分隔): \n")
        while True:
            if "," in str:
                strs = str.split(",")
            elif ","in str:
                strs = str.split(",")
            try:
                nums = [ eval(x) for x in strs ]
                time, score = nums[0],nums[-1]          
                if(time>=2001 and time<=2022 and score>=1 and score<=5 ) :
                    nums[-1] = round(nums[-1],1) #保留1位小数
                    hot = Hotel(addName)
                    hot.Info=nums
                    break
                else:
                    print("输入数据不合法,请重新输入!")
                    str = input("请依次输入酒店的装修时间,房间数,平均房价,评分: ")
            except:
                print("输入数据不合法,请重新输入!")
                str = input("请依次输入酒店的装修时间,房间数,平均房价,评分: ")
        
        #添加/修改 酒店信息到数据记录中
        if ( mana.addHotInfo(hot) == -1 ): #酒店已存在,则选择是否修改           
            ch = input("该酒店已存在,是否修改: Y or N?)")
            if ch == 'Y':
                mana.updateHotInfo(hot)

修改之后的测试



总结
通过本次对该软件基本功能进行的二次开发,我认识到了个人开发过程中确实会存在很多细小的瑕疵。例如本次二次开发的酒店管理系统,主界面交互逻辑明显不够好等,也提高了我阅读代码的水平。
本次二次开发的难点主要在于对功能的测试,以及bug的定位,对其他开发者代码的阅读。

  • 功能测试上,要尽可能的做出各种测试用例去测试软件,需要比较详尽、比较细致的流程。
  • 对于bug的定位,需要掌握查看报错的能力,精准快速定位到出现错误的代码,并且通过阅读理解,加以修改。
  • 对其他开发者代码的阅读方面,对于没有注释的代码,需要思考其他开发者是怎么想的,用什么方法去构筑这个功能的,需要自己对代码掌握到一定程度,才能看得懂别人的代码。
    总而言之,逆向软件工程并不是简简单单就能完成,站在前人的肩膀上也并不是一件容易的事情。看别人,或者自己之前写的代码确实会有一些看不懂的情况发生。我们所需要的是提升自己的编码能力,只有自己的功底、水平上升了,才能去很好地修改他人的代码,对软件二次开发。

标签:mWin,elif,酒店,第一周,代码,ch,二次开发,软件
From: https://www.cnblogs.com/bilikali/p/18057308

相关文章

  • 软件工程日报2 2024.03.06
     第一天第二天第三天第四天第五天所花时间(包括上课)6小时5小时   代码量(行)300350   博客量(篇)11   所学知识了解安卓相关数据库的知识,下载安装了matlab了解activity之间的相互跳转以及学习了相关安卓的布局展示   ......
  • 第一周实验
    <1>来源:简易的C语言图书管理系统<2>运行环境:点击查看代码#include<stdio.h>#include<stdlib.h>#include<string.h>structLIB{ charbId[10];//书号 charbName[20];//书名 charaName[20];//作者 charpName[20];//出版社 charsort[20];//分类 floatbPri......
  • 银河麒麟下载、卸载软件,解决软件开启白屏,误删软件商店---飞书为例
    一、银河麒麟下载流程1.解决白屏没有下载过飞书的直接跳转到第二步①桌面打开终端输入:检查是否安装有软件包,需要和下图一模一样dpkg-l'bytedance-feishu-stable'②如果有输入:sudodpkg-rbytedance-feishu-stable删除软件包,完成后进行安装。如果这里使用右击卸载的......
  • 基于蜘蛛纸牌游戏的二次开发
    摘要:蜘蛛纸牌是一款广为人知的单人纸牌游戏,但在实践中发现了一些存在的缺陷。本文将首先介绍蜘蛛纸牌游戏的规则,然后列举其存在的缺陷,最后提出了针对这些缺陷的二次开发解决方案,旨在提升游戏体验。引言蜘蛛纸牌游戏是一种使用两副牌(共104张扑克牌)进行的单人纸牌游戏,其目标是通......
  • 基于c语言的扫雷系统的二次开发
    原代码扫雷基本流程一、基本思路首先创建二维数组,来表示地图每一个格子要表示的信息:未翻开状态(草地)和已翻开状态(数字)该格子是地雷或者不是地雷(1表示是地雷,0表示不是地雷)使用两个二维数组来表示以上两组状态:第一组二维数组:charshowMap[9][9];表示每个格子的翻开和未翻开状......
  • 图书管理系统二次开发
    图书管理系统以下为源代码:includeincludeincludeusingnamespacestd;classuser;classcommon;classvip;classhonored;classbook{protected:stringbook_name;stringauthor;stringpublisher;doubleprice;book*next;public:book():next(NULL){};void......
  • 基于C语言中国象棋项目的二次开发
    这是一个由C语言所编写的中国象棋项目,以下给出原项目的链接、代码、运行截图。原项目链接:https://blog.csdn.net/weixin_45590872/article/details/109308798原C语言代码如下:点击查看代码#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>#includ......
  • C语言-猜拳游戏二次开发
    引言当探究猜拳游戏的魅力时,人们往往会陶醉于其古老的历史和简单的规则之中。作为一种源远流长的竞技娱乐活动,猜拳游戏早已深入人们的生活,成为一种普遍且愉快的社交互动方式。然而,这看似简单的游戏背后却蕴含了深刻的智慧。在短暂的选择过程中,参与者不仅在思考自己的选择,更需要推......
  • 基于图书购买系统的二次开发
    这是大一学习c++的一位同学的大作业,里面存在着诸多缺点,我对其中的一部分进行了改进,增加了一部分功能,但是还是有一些bug我至今修复不了。这是系统原本的功能。在此基础上我添加了书籍排序,查找书籍和删除书籍的功能,并且对增加书籍进行了修改。首先我先讲讲对增加书籍的修改可......
  • Python实现五子棋人机对战的二次开发
    Python实现人机对战的二次开发    在网上找到了一个使用python实现五子棋游戏,其中通过加入一个简单的AI算法实现了人机对战的功能,我觉得这个人机对战还是蛮有意思的,下面我分析一下五子棋游戏的规则、棋盘表示方法、AI算法的实现原理以及代码实现过程。最后二次开发时引入新的......