[原]2017数据结构课设--图

刘嘉辉 18/01/09 14:40:25

2017数据结构课设

关于课设,格式上就不像课设报告写得那么详实了.这里就重点回想一下,自己在课设中遇到的问题以及一些感想了. 

题目 :

这是一个关于图及图相关算法的程序,我给他起得名字叫<德高地图>.

简介:

    实现最短路径(dijkstra),两点间最少转折数(BFS),两点间所有路径(DFS).

技术点:

使用数据库(没能实现数据库类的封装),vector容器做邻接矩阵,系统调用显示图片,其他都是常规操作.

需要温习的知识:

  1. MYSQL * conn; 数据库连接指针设全局 不能使用了就关
    下次调用 再关 就会产生double free的情况 memory map 报告
  2. 关于查找 如查不到 不会返回空集 返回表头
    此时应该使用 返回行数来判断 == 0 为查不到的
  3. 关于语句调用

create table 表名字 ( from int , name varchar(20));
select * from 表名字 where from = %s and name = %s ;
insert into arcs (from, to , length) VALUES (%d ,%d , %d) “,start ,end,length );
delete from arcs where from = %d and to = %d;
在已创建好的表格中添加一列数据
alter table account[表名] add (flag int) [字段名 类型] 中间不要加逗号

贴下通通学长的
数据库连接相关操作
数据库语句构造sprintf


还有就是c++ 里容器的使用
vector queue stack 的使用 用来实现相关算法很好玩的
关于动态创建vector的二维数组 跟你讲这个我很经验 自己独立想出来的,然后与诸位大佬的想法不谋而合

vector<vector <int> >   V;//   int 后边的两个人尖括号之间必须有空格

关于二维,三维vector更详细操作

切入正题

int  vexnum;//从文件读到  vexnum 数了  需要创建一个这么大vexnum*vexnum的二维阵
vector <int > lie;
for(i=0; i<= vexnum ;i++)
    lie.push_back(32768);   //内容初始化32768 建立一行

for(i=0;i<=vexnum; i++)     //将每行插入阵中
    lie.push_back(lie);

github课设 全部代码地址

心得体会

这恐怕是第一次采用c++来实现这样一个东西,首先我的带码写了1069行,功能却是相当简陋,还是原始的字符界面,而另一位大佬也是1000多行,却实现前后端交互,票务信息,逻辑清明,功能繁多,自愧弗如.没错,功能少,我写着还很累,我的代码废话太多了,重复代码量大,语言功底薄弱是一方面,构思太少,函数实现上,接口预留上,类设计上(传说中的封装无力???),千万不能泛泛而想,思路一定要清晰,仔细.尽可能避免大量无用重复.效率问题也是一方面啊.亲眼看见,最后一晚上,我的舍友牺牲一晚上时间,却做出来了个七七八八,虽然漏洞百出,但却也是很好的交了差.这些都是自己需要反思的.
关于图形化的界面:
起初自己根本不在意,现在我突然越发觉得能够向别人清晰地展示出数据内容是一件很重要的事,可以实现很多有趣的事,比如我已经拿到了学校学生一卡通的照片,一直想对他们进行排个名,总不能还用黑框框来展示吧!这个是寒假任务之一,我将会咨询学长学姐关于web与Qt之间抑或是java fx的选择.
知识面的狭窄,这也没听过,那也不会用,很难受.

作者:Holy_666发表于2018/1/9 14:40:25 原文链接
阅读:1评论:0查看评论