2017數據結構課設
關於課設,格式上就不像課設報告寫得那麼詳實了.這裏就重點回想一下,自己在課設中遇到的問題以及一些感想了.
題目 :
這是一個關於圖及圖相關算法的程序,我給他起得名字叫<德高地圖>.
簡介:
實現最短路徑(dijkstra),兩點間最少轉折數(BFS),兩點間所有路徑(DFS).
技術點:
使用數據庫(沒能實現數據庫類的封裝),vector容器做鄰接矩陣,系統調用顯示圖片,其他都是常規操作.
需要溫習的知識:
- MYSQL * conn; 數據庫連接指針設全局 不能使用了就關
下次調用 再關 就會產生double free的情況 memory map 報告 - 關於查找 如查不到 不會返回空集 返回表頭
此時應該使用 返回行數來判斷 == 0 爲查不到的 - 關於語句調用
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 後邊的兩個人尖括號之間必須有空格
切入正題
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);
心得體會
這恐怕是第一次採用c++來實現這樣一個東西,首先我的帶碼寫了1069行,功能卻是相當簡陋,還是原始的字符界面,而另一位大佬也是1000多行,卻實現前後端交互,票務信息,邏輯清明,功能繁多,自愧弗如.沒錯,功能少,我寫着還很累,我的代碼廢話太多了,重複代碼量大,語言功底薄弱是一方面,構思太少,函數實現上,接口預留上,類設計上(傳說中的封裝無力???),千萬不能泛泛而想,思路一定要清晰,仔細.儘可能避免大量無用重複.效率問題也是一方面啊.親眼看見,最後一晚上,我的舍友犧牲一晚上時間,卻做出來了個七七八八,雖然漏洞百出,但卻也是很好的交了差.這些都是自己需要反思的.
關於圖形化的界面:
起初自己根本不在意,現在我突然越發覺得能夠向別人清晰地展示出數據內容是一件很重要的事,可以實現很多有趣的事,比如我已經拿到了學校學生一卡通的照片,一直想對他們進行排個名,總不能還用黑框框來展示吧!這個是寒假任務之一,我將會諮詢學長學姐關於web與Qt之間抑或是java fx的選擇.
知識面的狹窄,這也沒聽過,那也不會用,很難受.