福大软工·第二次作业

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2020 |
| ---- | ---- | ---- |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167 |
| 这个作业的目标 | 制作一个程序统计和分析Github的用户行为数据 |
| 学号 | 031802201 |
一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 75
Estimate 估计这个任务需要多少时间 200+ 300++
Development 开发 20 50
Analysis 需求分析 (包括学习新技术) 80+ 100+
Design Spec 生成设计文档 40
Design Review 设计复审 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20
Design 具体设计 20
Coding 具体编码 240+ 300++
Code Review 代码复审 20
Test 测试(自我测试,修改代码,提交修改) 50
Reporting 报告 30
Test Report 测试报告 20
Size Measurement 计算工作量 40
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 100+
合计
二、准备
看到题目的第一眼瞬间懵圈,各种数据以及命令格式,真的是眼花缭乱,无从下手,在群聊里看到了讨论,又看到了python的示例代码和各种提示,所以学习git基础命令,查阅并且了解json库的使用,解析json文件的方法,通过关键词获取所需信息,进行统计。然后去熟悉各种和作业相关的知识,比如数据的转换和正则表达式的规则等。虽然有上过python的课,但是没有认真学习,自己无异于小白一个,是历代代码阅读困难,通过在各个站点的不断流浪搜索,学到了一点东西。需要对指定路径下的文件解析要利用os库操作处理文件路径;读取json需要readline()函数来一行一行读取;用argparse库编写命令行参数。
三、解题思考过程
·题目需求:解析JSON文件,分析统计所需信息;#JSON:
·学习+编码:查找python关于解析JSON文件的方和对于命令行参数的实现;
·下一步进行测试;
·提交到Github进行运行。
四、思维导图
五、代码区
对于此刻的我来说,只能阅读并修改示例代码,以后学习过程中尝试更新
查询
`def query(query_type, user="", repo="", event=""):
Cer = sqlite3.connect("data.db")
getC0 = 'SELECT * FROM GITHUB WHERE user_name=? AND event=?'
getC1 = 'SELECT * FROM GITHUB WHERE repo_name=? AND event=?'
getC2 = 'SELECT * FROM GITHUB WHERE user_name=? AND repo_name=? AND event=?'
if query_type == 0: # 用户事件数的查询
    value = Cer.execute(getC0, (user, event))
elif query_type == 1:# 查询仓库事件数
    value = Cer.execute(getC1, (repo, event))
elif query_type == 2:# 查询用户所在仓库事件数
    value = Cer.execute(getC2, (user, repo, event))
result = len(list(value))
print(result)
Cer.close()
return result

逐行解析json文件 for filename in os.listdir(directory):
if filename.endswith(".json"):
fullpath = dict + '/' + filename
with open(fullpath, 'r', encoding='utf-8') as file:
for line in file:
# 读取 json 文件中一行并暂存有效数据
data = json.loads(line)
insertData = (data['actor']['login'],
data['repo']['name'], data['type'])
sqlInsert = 'INSERT INTO GITHUB(user_name, repo_name, event) VALUES(?, ?, ?)'
connector.execute(sqlInsert, insertData)`
六、测试截图

七、代码规范链接
https://github.com/Great-Gambler/fzu-tset/commits?author=Great-Gambler
最后:作业总结
对于我来说感觉真的是好难,刚开始无从下手,只能一点一点慢慢搜集资料理解,尝试阅读示例代码,现在清楚的认识到,平时会做一些简单编码题目还有平时所了解的也不足以应对实际应用,对于实际应用的项目来说极度欠缺,对于整个人来说真的很崩溃。此前对于Github使用并未有过多的熟悉。目前还未能完成,说实话,个人感觉这纯属于剽窃,只能先提交,请老师助教高抬贵手,明天继续更新剩余部分。
续:在今天早晨满课,只能在下午修改,实在抱歉,经过各站点流浪学习,算是初步完成了作业,现在感觉自己是真的菜鸡,没有比我更菜的了。一言难尽,内心痛苦!

posted @ 2020-09-16 22:41  dihua  阅读(131)  评论(1编辑  收藏  举报