花了近兩個禮拜,寫了這麼醜的程式~~我想以前教我程式的老師會把我殺了吧~~(好險老師應該看不到這一篇)
因為不是自己要用的,而且變數多到爆~於是我重啟大三寫完後就再也沒寫過的C#
寫了一個視窗介面,並且會產生一個word文件檔
整個程式其實還算中規中矩啦~
不過word的那部份真的很醜
整個程式直觀到爆~~
有多直觀啊?如果把word.visible() 設為true的話
就會看到程式碼一直把文字貼貼貼的把文字一段一段的貼上去,貼上去後,還會把剛剛的文字再改變其字型啊、大小啊......
整個程式讀取資料也都是無敵爆力的用for loop解決
如果說這是為了要以時間換取空間就算了…但並沒有,因為一堆東西還是宣告了…所以空間也沒有省到
一整個無腦程式碼咩
唯一一個好笑的是:我採用divide and conquer的方式
把一堆很長的程式碼切成一小段一小段的…
於是主程式碼的裡面變成這樣子:
for (int i = 0; i < people.Count; i++)
{
addHeaderTextBox(oDoc);//加上「先簽後稿」、「檔號」兩個物品
setTitle(oDoc, oDoc.Characters.Count, sendDocDate, sendNumber, isTemporary, isCreated);//設定由
if ((i+1) < people.Count)
setMainAward(oDoc, (Person) people[i], (Person) people[i+1]);
else
setMainAward(oDoc, (Person)people[i]);
if(isCreated)
setExplainIfCreated(oDoc);
else
setExplainIfNotCreated(oDoc,explain1);
if ((i + 1) < people.Count)
setSendTo(oDoc, (Person)people[i], (Person)people[++i]);
else
setSendTo(oDoc, (Person)people[i]);
setBigLiao(oDoc, isTemporary);
if (i == people.Count - 1)
setSeal(oDoc);
nextPage(oDoc);
}
isTemporary = false;
//繼續進行正文產生
for (int i = 0; i < people.Count; i++)
{
setTitle(oDoc, oDoc.Characters.Count, sendDocDate, sendNumber, isTemporary, isCreated);
if ((i + 1) < people.Count)
setMainAward(oDoc, (Person)people[i], (Person)people[i + 1]);
else
setMainAward(oDoc, (Person)people[i]);
if (isCreated)
setExplainIfCreated(oDoc);
else
setExplainIfNotCreated(oDoc, explain1);
if ((i + 1) < people.Count)
setSendTo(oDoc, (Person)people[i], (Person)people[++i]);//這邊會自動多加一個,免的程式有問題
else
setSendTo(oDoc, (Person)people[i]);
setBigLiao(oDoc, isTemporary);
if (i != people.Count - 1)
nextPage(oDoc);
}
----------------------------------------------------------------------------------------------------
這些命名真的很醜對吧?
其實他是有一點含意的:
setTitle是因為這邊公文固定每一頁最前方都有近十行的固定格式(但是有一些編號、日期等會改變)
setMainAward是文件最重要的部份~
setExplain是因為每份文件都有一個抗議日期,以及申訴說明…也是要加進去的
setSendTo則是這份文件要送到哪些地方
setBigLiao和setSeal則是後面一堆人要簽名蓋章的地方~~
(Big Liao……我想常看公文的人應該猜得出來吧?)
至於其他的部份…唉~~我就不秀給大家看了…有這麼醜的程式真的是生平僅見~
---
下一篇我會來解釋一下這個程式為什麼這麼醜…唉
沒有留言:
張貼留言