【正文】
碼相同 amp。 性別選擇代碼 0) { 連接數(shù)據(jù)庫 。 else { 輸出提示錯誤信息 。 該界面使用 C自帶的 MonthCalendar 控 件來 顯示每一年的日歷,將當前的系統(tǒng)時間顯示在 Label 靜態(tài)文本框里,并根據(jù)數(shù)據(jù)庫中的節(jié)假日設(shè)置顯示選中日期的節(jié)日信息。如果為空則提示錯誤信息 “ 用戶尚未 登錄 ” ,并打開 登錄 界面。 此模塊還根據(jù)當前系統(tǒng)時間和當前 登錄 用戶的日志信息來確定是否創(chuàng)建日志提醒窗體。當用戶點擊 “ 注銷 ” 按鈕時,將 username 設(shè)置為空,并打開 登錄 界面。 以下為部分偽代碼。 if (當前 登錄 用戶名 Username 不為空 ) { 連接數(shù)據(jù)庫,從數(shù)據(jù)庫 MsgInfo 表中讀取出當前 登錄 用戶的日志信息 。 } if (日志信息不為空 ) { 以當前 登錄 用戶名為參數(shù)創(chuàng)建 日志提醒模塊窗體 。 顯示窗體的高度 = 獲取的屏幕分辨率高度 + 10。 顯示窗體的生存時間 = true。 } } } // 顯示當天節(jié)日偽代碼 文本框文本 = 今天不是節(jié)日 。 從數(shù)據(jù)庫 MsgInfo 表中讀取選定日期的節(jié)假日信息 。 } 日志記錄模塊 功能說明:用于根據(jù)當前 登錄 的用戶名,從數(shù)據(jù)庫的 MsgInfo 表中讀出當前登錄 用戶的所有日志信息并顯示在 Datagridview 中。 圖 45 日志記錄模塊界面 當點擊 “ 添加 ” 按鈕時,系統(tǒng)將用戶輸入的日志信息和選擇的提醒日期時間儲存到數(shù)據(jù)庫的 MsgInfo 表 中。 當點擊 “ 刪除 ” 按鈕時,系統(tǒng)按照用戶選擇的日志信息的編號 MsgID 來從數(shù)據(jù)庫中刪除該條日志信息。 // Unicode 編碼,用于將用戶輸入的日志信息采用編碼形式儲存在數(shù)據(jù)庫中 設(shè)置字符串型 encode 存放編碼后的字符串 。 try { 將數(shù)組中每一個字節(jié)型元素轉(zhuǎn)換為字符串型 。 } 返回 encode。 將要解碼的字符串型 code 轉(zhuǎn)換為字節(jié)型 。 } catch { 處理異常 。 // 刪除日志按鈕事件的偽代碼,其他按鈕事件與此類似。 } else { 連接數(shù)據(jù)庫,根據(jù) MsgID 刪除日志信息 。 重新顯示 MsgInfo 表內(nèi)容 。 } } 日志提醒模塊 功能說明:當系統(tǒng)時間到達當前 登錄 用戶設(shè)置的日志提醒時間時,從數(shù)據(jù)庫的 MsgInfo 表中讀取出當前 登錄 用戶的當前系統(tǒng)時間的日志信息,并顯示在彈出的窗體中。 以下為部分代碼。 + msgid + 39。 + userName + 39。 //連接數(shù)據(jù)庫并執(zhí)行 sql語句 (, , sql)。 } 節(jié)假日設(shè)置模塊 功能說明:從數(shù)據(jù)庫的 JInfo 表中讀出當前設(shè)置的所有節(jié)假日信息并顯示在Datagridview 中。 圖 46 節(jié)假 日模塊界面 當用戶通過下拉列表框選擇好日期,并輸入節(jié)假日名稱后點擊 “ 添加 ” 按鈕時,系統(tǒng)將日期和節(jié)假日名稱儲存到數(shù)據(jù)庫的 JInfo 表中。 以下為部分代碼。 int day = (())。 + () + 39。 //如果 sql 語句執(zhí)行成功 if ((, , sql) 0) { (節(jié)假日添加成功??! )。 } else { (您的操作有錯誤! )。 } } 5 系統(tǒng)測試 測試環(huán)境 本系統(tǒng)測試環(huán)境 。該測試以程序的功能實現(xiàn)是否 符合設(shè)計標準和程序是否存在重大 BUG 為標準。 經(jīng)測試,系統(tǒng)在上述軟硬件環(huán)境下,對各模塊的功能均能測試通過,各邏輯流程均符合設(shè)計需要。經(jīng)測試,其處理流程與代碼設(shè)計里的處理流程一致。當輸入信息與數(shù)據(jù)庫信息一致時才 登錄成功。后將密碼加密后再比較就正確 登錄 了。因此,當未 登錄 用戶點擊日歷主模塊上的 “ 日志記錄 ” 按鈕時,系統(tǒng)提示用戶先 登錄 該系統(tǒng)才能訪問日志模塊,如圖 52 所示。如用戶名是否重復;密碼是否為空等等,避免了數(shù)據(jù)庫中的信息混亂。如只有管理員才能刪除用戶資料,如圖 54 所示;未 登錄 用戶不能修改和刪除資料; 登錄 用戶只能修改自己的資料而不能修改他人的等等。當用戶點擊該空行時,系統(tǒng)會出錯關(guān)閉。而空行卻帶入了空字段,導致程序錯誤。其后的日志模塊了節(jié)假日模塊也采用了同樣的方法去掉該空行。 如:未選擇日志信息就點 “ 刪除 ” 按鈕;輸入不合規(guī)范的節(jié) 假日名稱等等。 圖 55 日志提醒界面 隨機在某 登錄 用戶的日志記錄模塊中輸入一條日志,并設(shè)置提醒時間。 另外還測試了,當某用戶 登錄 該系統(tǒng)后,是否會提示其他用戶的 登錄 信息。這也完全符合該系統(tǒng)的設(shè)計要求。但后來將日志信息采用 Unicode 編碼儲存后,該提醒模塊在測試時就出現(xiàn)了很多問題,如直接顯示數(shù)據(jù)庫內(nèi)未進行解碼的日志信息;不能正常刪除日志等。在刪除日志時,將采用的以日志文本信息作為數(shù)據(jù)庫刪除條件,改為以該日志編號和 登錄 用戶名作為條件進行數(shù)據(jù)庫操作就能正常刪除用戶日志。如果密碼以明文形式在數(shù)據(jù)庫中儲存,必定會對用戶的資料安全造成很大的隱患。當用戶 登錄時也采用 MD5 將用戶輸入的密碼加密后與數(shù)據(jù)庫中的密碼信息比較。 MD5 算法在密碼的安全方面提供了非常好的保障。當用戶 登錄 該系統(tǒng)后,日志模塊將數(shù)據(jù)庫 內(nèi)該用戶的日志信息經(jīng)過 Unicode 解碼后再輸出。計算機使用的缺省編碼方式就是計算機的內(nèi)碼。 雖然 Unicode 編碼不像 MD5 加密那樣安全可靠,但是因為 Unicode 編碼可逆,而且儲存在數(shù)據(jù)庫中的信息并不是用戶的原始信息,所以在一定程度上也對用戶行程進行了保護。在使用 時,定期對數(shù)據(jù)庫 進行備份,以便數(shù)據(jù)庫發(fā)生錯誤時將數(shù)據(jù)庫恢復到之前某一已知的正確狀態(tài),實現(xiàn)數(shù)據(jù)庫的再次正確使用。 通過此次畢業(yè)設(shè)計,雖說不能完全掌握 C的編程技巧,但基本的編程思路還是逐漸地鞏固起來。 個人感覺其中最大的收獲就是學習 如何在程序開發(fā)過程中發(fā)現(xiàn)問題,查閱資料并解決問題,養(yǎng)成獨立思考的能力。 在整個程序的設(shè)計與實現(xiàn)過程中,也發(fā)現(xiàn)自身存在的不少問題。理論上明白的方法卻不知道該如何去實現(xiàn),今后要多加練習動手能力。 [2] Christian Nagel,Bill Evjen,Jay 高級編程 (第 4版 )[M].李敏波譯 .北京: 清華大學出版社 , 2021。 [4] 前沿軟件研究室 ,鄭小平 .Visual C.NET 開發(fā)實踐 [M].北京:人民郵電出版社,2021。 [6] 李代平 .中文 SQL server2021 數(shù)據(jù)庫系統(tǒng)管理 [M].北京 : 冶金工業(yè)出版社, 2021。 致 謝 本文是在張路橋老師的熱情關(guān)心和指導下完成的,他淵博的知識和嚴謹?shù)闹螌W作風使我受益匪淺,對順利完成本課題起到了極大的作用。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構(gòu)的學位或證書而使用過的材料。 關(guān)于學位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明: 本人完 全了解成都信息工程學院有關(guān)保管使用學位論文的規(guī)定,其中包括: ( 1)學校有權(quán)保管并向有關(guān)部門遞交學位論文的原件與復印件。 ( 3)學校可以學術(shù)交流為目的復制、贈送和交換學位論文。 ( 5)學??梢怨紝W位論文的全部或部分內(nèi)容(保密學位論文在解密后遵守此規(guī)定)。 特此聲明! 作者簽名: 2021 年 06 月 日 BOOK OF THE PROMISE MADE TO THE DEAD WOMAN CHAPTER I THE WATER QUESTION AT MONTFERMEIL Montfermeil is situated between Livry and Chelles, on the southern edge of that lofty table land which separates the Ourcq from the Marne. At the present day it is a tolerably large town, ornamented all the year through with plaster villas, and on Sunday s with beaming bourgeois. In 1823 there were at Montfermeil neither so many white houses nor so m any wellsatisfied citizens: it was only a village in the forest. Some pleasurehouses of the last century were to be met with there, to be sure, which were recognizable by their grand air, their balconies in twisted iron, and their long windows, whose tiny panes cast all sorts of varying shades of green on the white of the closed shutters。 it was a peaceful and charming place, which was not on the road to anywhere: there people lived, and cheaply, that peasant rustic life which is so bounteous and so easy。 the end of the village towards Gagny drew its water from the magnificent ponds which exist in the woods there. The other end, which surrounds the church and which lies in the direction of Chelles, found drinkingwater only at a little spring halfway down the slope, near the road to Chelles, about a quarter of an hour from Montfermeil. Thus each household found it hard wor k to keep supplied with water. The large houses, the aristocracy, of which the Thenardie r tavern formed a part, paid half a farthing a buc ketful to a man who made a business of it, and who earned about eight sous a day in his enterprise of supplying Montfermeil with water。clock in the evening in summer, and five in winter。s house he halted, stood motionless, then turned about, and retraced his steps to the door of the parsonage, which had an iron knocker. He laid his hand quic kly on the knoc ker and lifted it。 as well say twenty leagues. Mr. Mayor, returned the Fleming, I have just what you want. My little white horseyou may have seen him pass occasionally。 he is as gentle as a girl。 We must suppose that is what he said to himself. And he will acplish the trip? Your twenty leagues all at a full trot, and in less than eight hours. But here are the conditions. State them. In the first place. you will give him half an hour39。 he will eat。 for I have noticed that in inns the oats are more often drunk by the stable men than