zoukankan      html  css  js  c++  java
  • 团队Git现场编程实战

    组员职责分工

    组员 分工
    林涛(组长) 分配任务、整理数据、写博客
    童圣滔 UI界面制作
    林红莲 UI界面制作
    潘雨佳 测评出福州最受欢迎的商圈
    于瀚翔 测评出福州最受欢迎的商圈
    覃鸿浩 测评出福州人均消费50以下,50-100、100-200、200以上最佳(性价比最高)的前五家美食餐厅
    袁正闻 测评出福州人均消费50以下,50-100、100-200、200以上最佳(性价比最高)的前五家美食餐厅
    吕瑞峰 测评出福州最佳美食聚集地
    蒋梦迪 测评出福州最佳美食聚集地
    王德钊 测评出福州服饰类综合评分最高的商圈
    吴友昆 测评出福州服饰类综合评分最高的商圈

    github 的提交日志截图

    image.png

    程序运行截图

    image.png

    image.png

    程序运行环境

    NET Common Language Runtime(CLR)

    GUI界面

    image.png

    image.png

    image.png

    基础功能实现

    • 部分代码
    import wx
    import wx.grid as wg
    import openpyxl
    
    class MyFrame1(wx.Frame):
        def __init__(self,parent,id):
            wx.Frame.__init__(self,parent,id,'主界面',pos=(230,120),size=(1000,700),style = wx.DEFAULT_FRAME_STYLE)
            self.SetMaxSize((1000, 700))
            self.panel = wx.Panel(self,size=(1000, 700))
            self.panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
    
            self.font = wx.Font(20, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
            font = wx.Font(16, wx.SWISS, wx.NORMAL, wx.LIGHT)
            self.bt_game = wx.Button(self.panel, label='最受欢迎的商圈', pos=(390,50),size=(200, 60), style=0)
            self.bt_game.SetBackgroundColour('DARK TURQUOISE')
            self.bt_game.SetForegroundColour('FIREBRICK')
            self.bt_game.SetFont(font=font)
            self.bt_game.Bind(wx.EVT_BUTTON, self.zshysq)
            self.bt_rank = wx.Button(self.panel, label='美食餐厅', pos=(390,200),size=(200, 60))
            self.bt_rank.Bind(wx.EVT_BUTTON, self.msct)
            self.bt_rank.SetBackgroundColour('LIGHT STEEL BLUE')
            self.bt_rank.SetForegroundColour('FIREBRICK')
            self.bt_rank.SetFont(font=font)
            self.bt_history = wx.Button(self.panel, label='最佳美食聚集地', pos=(390,350),size=(200, 60), style=0)
            self.bt_history.Bind(wx.EVT_BUTTON, self.zjmsjjd)
            self.bt_history.SetBackgroundColour('DARK TURQUOISE')
            self.bt_history.SetForegroundColour('FIREBRICK')
            self.bt_history.SetFont(font=font)
            self.bt_room = wx.Button(self.panel, label='服饰类最佳评分商圈', pos=(390,500),size=(200, 60))
            self.bt_room.Bind(wx.EVT_BUTTON,self.fslzjpfsq)
            self.bt_room.SetBackgroundColour('LIGHT STEEL BLUE')
            self.bt_room.SetForegroundColour('FIREBRICK')
            self.bt_room.SetFont(font=font)
    
            self.panel5 = wx.Panel(self, size=(1000, 700))
            self.panel5.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack1)
            self.bt_re5 = wx.Button(self.panel5, label='返回', pos=(10, 10), size=(80, 40), style=0)
            self.bt_re5.SetBackgroundColour('white')
            self.bt_re5.SetFont(self.font)
            self.bt_re5.Bind(wx.EVT_BUTTON, self.re5)
            self.grid5 = wg.Grid(self.panel5, -1)
            self.grid5.CreateGrid(10, 4)
            self.grid5.SetSize((663, 290))
            self.grid5.SetPosition((150, 180))
            for i in range(3):
                self.grid5.SetColSize(i, 160)
            for i in range(10):
                self.grid5.SetRowSize(i, 40)
            for i in range(10):
                if not (i % 2):
                    self.grid5.SetCellBackgroundColour(i, 0, 'TURQUOISE')
                    self.grid5.SetCellBackgroundColour(i, 2, 'TURQUOISE')
                    self.grid5.SetCellBackgroundColour(i, 1, 'TURQUOISE')
                    self.grid5.SetCellBackgroundColour(i, 3, 'TURQUOISE')
            self.grid5.SetColLabelValue(0, "餐厅名")
            self.grid5.SetColLabelValue(1, "餐厅地址")
            self.grid5.SetColLabelValue(2, "消费均额")
            self.grid5.SetColLabelValue(3, "评分")
            self.grid5.SetLabelBackgroundColour('white')
            self.panel5.Hide()
    
        def OnEraseBack1(self,event):
            dc = event.GetDC()
            if not dc:
                dc = wx.ClientDC(self)
                rect = self.GetUpdateRegion().GetBox()
                dc.SetClippingRect(rect)
            dc.Clear()
            bmp1 = wx.Bitmap("90/zjm.png")
            dc.DrawBitmap(bmp1, 0, 150)
    
        def vvvvt(self):
            vsizer_all = wx.BoxSizer(wx.VERTICAL)
            vsizer_all.Add(self.bt_game, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=45)
            vsizer_all.Add(self.bt_rank, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=45)
            vsizer_all.Add(self.bt_history, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=45)
            vsizer_all.Add(self.bt_room, proportion=0, flag=wx.ALIGN_CENTER|wx.ALL, border=45)
            self.panel.SetSizer(vsizer_all)
    
        def OnEraseBack(self,event):
                dc = event.GetDC()
                if not dc:
                    dc = wx.ClientDC(self)
                    rect = self.GetUpdateRegion().GetBox()
                    dc.SetClippingRect(rect)
                dc.Clear()
                bmp = wx.Bitmap("90/zjm.png")
                dc.DrawBitmap(bmp, 0, 200)
    
        def zshysq(self,event):
            '''self.bt_history.Hide()
            self.bt_rank.Hide()
            self.bt_room.Hide()
            self.bt_game.Hide()'''
            self.panel.Hide()
            self.panel2.Show()
    
        def msct(self,event):
            self.panel.Hide()
            self.panel3.Show()
    
    
        def re5(self,event):
            self.panel5.Hide()
            self.panel.Show()
    
    
    if __name__=='__main__':
        app=wx.App()
        frame=MyFrame1(None,-1)
        frame.Show()
        app.MainLoop()
    

    鼓励有想法且有用的功能

    • 高级数据可视化。数据可用柱状图展示。

    遇到的困难及解决方法

    • 林涛
      困难:不会爬虫。
      解决:利用爬虫软件爬了一些数据,但不全。

    • 童圣滔
      困难:不知道如何构建具体界面,没有适合的图片素材。
      解决:百度。

    • 林红莲
      困难:本来和一个队友一起做UI界面来着,但是我只会用HTML,CSS写前端,编程语言上出现分歧,然后我就去帮忙爬虫了,但我本身就不怎么会爬虫,python也学的不怎么样,有几个库函数我们一直下载不下来。
      解决:试过百度的很多办法,也有请大佬帮忙,都没有得到解决

    • 潘雨佳
      困难:刚开始用pycharm下载解析网页lxml库的时候,下载不了。
      解决:最后放弃,转用VS2017下载。

    • 于瀚翔
      困难:python才学会,很多东西还是不会,爬虫就不会写。
      解决:除了爬虫不会写我也没搞明白要爬什么。

    • 覃鸿浩
      困难:部分网站保护数据,无法爬虫。
      解决:没有解决。

    • 袁正闻
      困难:调用高德地图的api一直报错说接口不可用,格式都按照要求写了不知道哪里出错,只能用高德api网页自动生成去搜索,但是搜出来信息非常杂乱不知道怎么利用。
      解决:没有解决。

    • 吕瑞峰
      困难:完全没有接触过python和api的内容。
      解决:看菜鸟教程速成python与api接口的内容,但是没有解决,非常的失败。

    • 蒋梦迪
      困难:调用高德地图的api一直报错说接口不可用,格式都按照要求写了不知道哪里出错,只能用高德api网页自动生成去搜索,但是搜出来信息非常杂乱不知道怎么利用。
      解决:没有解决。

    • 王德钊
      困难: 不知道怎么用API实现想要的功能
      解决:基本解决。

    • 吴友昆
      困难: python爬虫爬不出数据
      解决:修改了很多次,感觉代码没错,最后也没弄明白。

    马后炮

    • 林涛:
      如果我没有这么菜,那么就不会这样一无所成。

    • 童圣滔:
      如果我事先学习一下爬虫知识,就能不在搜集资料上花费那么多时间了。

    • 林红莲:
      但凡我多学一点知识,也不至于这么菜!

    • 潘雨佳:
      如果我课外再多学些东西,那么久不会用时方恨少。

    • 于瀚翔:
      以后多去学点什么吧,虽然时间实在是不够用。

    • 覃鸿浩:
      如果我实践更多一点,那么就会更有经验。

    • 袁正闻:
      如果多学点爬虫的话,那么应该可以很好去做东西了!

    • 吕瑞峰:
      如果早点学习python,那么不至于啥都不会。

    • 蒋梦迪:
      如果我多学习,那么我就会更优秀。

    • 王德钊:
      如果之前掌握的知识多一点,那么就容易多了,这次编程所涉及的知识基本都是现学的

    • 吴友昆:
      如果决定更果断,技能更精进,就不会这么菜的写不出东西来了

    评估每位组员的贡献比例

    组员 贡献比例
    林涛(组长) 10%
    童圣滔 12%
    林红莲 7%
    潘雨佳 7%
    于瀚翔 8%
    覃鸿浩 10%
    袁正闻 10%
    吕瑞峰 8%
    蒋梦迪 8%
    王德钊 10%
    吴友昆 10%

    PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 40 40
    Estimate 估计这个任务需要多少时间 10 10
    Development 开发 0 0
    Analysis 需求分析 (包括学习新技术) 100 120
    Design Spec 生成设计文档 20 20
    Design Review 设计复审 0 0
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 0 0
    Design 具体设计 20 20
    Coding 具体编码 10 10
    Code Review 代码复审 0 0
    Test 测试(自我测试,修改代码,提交修改) 0 0
    Reporting 报告 20 20
    Test Repor 测试报告 0 0
    Size Measurement 计算工作量 10 10
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 10 10
    合计 240 260

    学习进度表

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
    1 20 20 3 3 学习爬虫(未完成)
  • 相关阅读:
    pymongo 常用方法
    字典判断是否具备 key
    flask中的request和常用属性方法
    zipfile 解压,py3 win下中文乱码
    远程登录mongo
    eval
    二分查找
    快速排序
    Python3解leetcode Single Number
    Python3解leetcode Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/ruifeng1/p/11784014.html
Copyright © 2011-2022 走看看