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

程序运行截图


程序运行环境
NET Common Language Runtime(CLR)
GUI界面



基础功能实现
- 部分代码
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 | 学习爬虫(未完成) | 
第四组团队git现场编程实战的更多相关文章
- 第四组  团队Git现场编程实战
		组员职责分工 组员 分工 林涛(组长) 分配任务.整理数据.写博客 童圣滔 UI界面制作 林红莲 UI界面制作 潘雨佳 测评出福州最受欢迎的商圈 于瀚翔 测评出福州最受欢迎的商圈 覃鸿浩 测评出福州人 ... 
- 第11组 团队Git现场编程实战
		第11组 团队Git现场编程实战 组员职责分工: 前端部分: 陈郑铧:构架的搭建,前端模块开发 陈益:前端模块开发 李镇平:前端模块开发 后端部分: 沈国煜:后端模块开发 王泽鸿:后端模块开发 林铮威 ... 
- 第08组 团队Git现场编程实战
		一.组员职责分工 算法:庄锡荣,林鑫灿 UI:许煌标,蔡峰,林晓锋,陈珊珊,侯雅倩,吴珂雨 博客:陈珊珊,王钟贤 二.github提交日志 三.程序运行截图 运行中爬取到的部分信息 数据库中的部分信息 ... 
- 第12组 团队Git现场编程实战
		分工及贡献 组内有三人去考证了,只剩下6人 组员 分工 贡献比例 王永福 前后端,爬虫,博客主体 30% 孙承恺 建模,算法设计,统筹 18% 邱畅杰 爬虫 15% 徐祖豪 前端数据可视化 13% 张 ... 
- 第09组 团队Git现场编程实战
		组长博客链接 1.团队分工 团队成员 分工明细 王耀鑫 博客撰写,数据处理 陈志荣 前端界面,前端功能实现 陈超颖 前端界面,前端功能实现 沈梓耀 前端界面,前端功能实现 林明镇 数据处理 滕佳 前端 ... 
- 第07组 团队Git现场编程实战
		组员职责分工 团队成员 分工 杨明哲 爬数据,做网页 林兴源 合作编码完成了对美团数据的分析,分析出最有发展潜力的十佳好店 卞永亨 从大众点评分析出了服装商圈 林鑫 合作编码完成了对美团数据的分析,分 ... 
- 第03组 团队git现场编程实战
		1.组员职责分工 张逸杰:复制监督整个编程任务的进程以及协助组员编程 黄智锋.刘汪洋:负责UI设计 苏凯婷.鲍冰如:爬取数据并负责测评出福州最受欢迎的商圈 陈荣杰.杨锦镔:爬取数据并负责测评出福州人均 ... 
- 第06组 团队Git现场编程实战
		一.组员职责分工 队员姓名 主要分工 朱庆章 测评福州最受欢迎的商圈(参考人气) 陈梦雪 测评福州最受欢迎的商圈(参考人气) 关文涛 分别测评福州人均消费50以下,50-100.100-200.200 ... 
- 第03组团队Git现场编程实战
		1.组员职责分工 张逸杰:复制监督整个编程任务的进程以及协助组员编程 黄智锋.刘汪洋:负责UI设计 苏凯婷.鲍冰如:爬取数据并负责测评出福州最受欢迎的商圈 陈荣杰.杨锦镔:爬取数据并负责测评出福州人均 ... 
随机推荐
- Mock常用占位符一览
			1.随机字符串(类型 , 位数)@string(lower,10) lower : 小写字母upper : 大写字母number : 数字 2.随机int(下限 , 上限)@integer(60, 1 ... 
- Pytorch:module 'torch' has no attribute 'bool'
			Pytorch:module 'torch' has no attribute 'bool' 这个应该是有些版本的Pytorch会遇到这个问题,我用0.4.0版本测试发现torch.bool是有的,但 ... 
- 快开宝PDA开单器出入库扫码:让批发零售变得更简单
			快开宝PDA开单器出现前 批发商户是这样开单和管理的 ★员工痛苦:需要记客户.价格.库存等等,应对报错价.错漏单.盘错货等各种状况. ★老板麻烦:每天要守店.对单.核账,经常因错漏单.库存乱.积压货. ... 
- POJ1611(The Suspects)--简单并查集
			题目在这里 关于SARS病毒传染的问题.在同一个组的学生是接触很近的,后面也会有新的同学的加入.其中有一位同学感染SARS,那么该组的所有同学得了SARS.要计算出有多少位学生感染SARS了.编号为0 ... 
- .NET 对文件和文件夹操作的介绍
			1 Directory和File类只包含静态方法,不能被实例化 2 DirectoryInfo和FileInfo他们是有状态的,需要被实例化 //构造函数初始化一个文件的路径 FileInfo myF ... 
- MACOS 安装mysqlclient 的 Library not loaded错误
			报错场景 >>> import MySQLdb Traceback (most recent call last): File "<stdin>", ... 
- SecureCRT和SecureFX的安装和破解
			1.SecureCRT & SecureFX 介绍 1.1 SecureCRT SecureCRT 是一款终端仿真软件,和 Putty 的功能类似. 不过相比Putty比较简单的功能,Secu ... 
- SQL SERVER-Extendevent
			事件类介绍 https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/ms188275(v=sql.100) 
- 写Django项目的开发工具或者编辑器
			pycharm是写django的最好的编辑器,优先使用pycharm.到官网下载pycharm →https://www.jetbrains.com/pycharm/download→ pycharm ... 
- RedisTemplate的key默认序列化器问题
			原文:https://blog.csdn.net/skymouse2002/article/details/80736577 redis的客户端换成了spring-boot-starter-data- ... 
