软件工程第六周理论与实践学习
一、理论学习
1、完成慕课第八、九章的相关学习
2、学习软件建模方法
软件开发中常用的建模方法有UML(Unified Modeling Language,统一建模语言),BPMN(Business Process Diagram,业务流程图),Flowcharts 流程图,Data Flow Diagrams (DFDs) 数据流图,Gantt Charts 甘特图,思维导图,概念导图等,有的是面向对象的建模方法,有的是面向服务、面向方面的建模方法,个人认为面向对象的建模方法更加结构清晰、模块化的设计更加易于扩展维护。
二、实践学习
1、本周先用EA软件进行了UML建模
根据课程对诗词游戏的软件进行建模,寻找我们的软件可能需要哪些功能,网上关于EA软件的教程较少,而且都是比较低版本的,我们组选择了EA12进行建模,主要确定了出口成诗、游戏2、游戏3、更新数据库、古诗词获取几个功能,游戏2和游戏3还未确定做什么功能,下面是建模截图
2、数据库MySql的学习和使用
之前我们组的古诗词是存在txt文件中的,根据计划需要存放在数据库中,这周学习了MySql的一些常规操作,选用的还是VsCode,不得不说VsCode真的很好用,vscode操作数据库需要下面两个拓展模块
在vscode里下好以后就可在左侧的栏里看到一个存储桶的图标:
上面的poetry是我已经建好的数据库,下面是我一周实践下来常用的操作语句,主要是实验对数据的导入、删除等操作
可以在右侧非常直观的看到数据库里数据,比命令行好看,数据库建立完以后下一步就是用python进行操作了,python中操作数据库要pip pymysql然后建立连接:
之前操作数据库如果导入过数据,这里就会打印出你poetry里的数据,我这里已经是导入过的了,所以可以看到:
下面讲一下导入数据的过程:
我是将爬取的诗词句处理以后批量导入的,给出代码:
1 import sys 2 import re 3 import os,time 4 import pymysql 5 6 conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='newbegin',db='lsj',charset='utf8') 7 cur = conn.cursor(cursor=pymysql.cursors.DictCursor) 8 9 class WordCreate(): 10 def __init__(self,path): 11 ''' 12 导入文件进行解析 13 ''' 14 with open(path,encoding="utf-8") as file: 15 content = file.read() 16 17 x = re.findall(r'\((.*)\)', content) 18 19 for i in x: 20 zifu = '('+i+')' 21 content = content.replace(zifu,'') 22 23 content = re.split(r'\d', content) 24 content = [i for i in content if i != ''] 25 self.sc_list = [] 26 for i in content: 27 weak_list = re.split(r'[、。;\n\s*]',i) 28 weak_list = [i for i in weak_list if i != ''] 29 self.sc_list.append(weak_list) 30 # print(self.sc_list) 31 def OperationSql(self): 32 num=1 33 for i in self.sc_list: 34 for _ in range(11-len(i)): 35 i.append('NULL') 36 cur.execute("INSERT INTO poetry(id,name,author,sentense_1,sentense_2,\ 37 sentense_3,sentense_4,sentense_5,sentense_6,sentense_7,sentense_8,\ 38 sentense_9,sentense_10) VALUES (%s,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"%\ 39 (num,i[0],'NULL',i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10])) 40 conn.commit() 41 num+=1 42 def main(): 43 44 generator = WordCreate('D:\桌面\诗词库.txt') #选择合适的路径 45 generator.OperationSql() 46 47 48 if __name__ == '__main__': 49 main()
OperationSql就是导入的过程,这样txt文件里的数据就放进数据库啦,调用也非常方便。
在github提交的文件可能比较杂了,因为代码更新的比较乱,建了好几个py文件自己没留意,目前主要是4个文件,爬虫文件:爬取网站上的古诗存txt文件,导入数据库文件:txt文件处理后导入数据库,数据库调用文件:负责提取关键词、诗词名、关键词所在句子,GUI文件,负责游戏界面和数据对接。