




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 VC課程設計報告課 程:VC+課程設計 系 別:班 級:學 號:姓 名:選題2名稱: 選題2難易級別:自報成績: 起止時間:指導教師: 日期: 年 月 日目 錄 一、 課題目標1.1 程序功能簡介1.2 課程設計要求1.3 評定難易級別二、 具體實現2.1 程序總體方案開發平臺程序結構或流程圖2.2 所做改進 改進一 .1 改進方案 .2 具體實現改進二 .1 改進方案 .2 具體實現2.2.n 改進N 2.2.n.1 改進方案 2.2.n.2 具體實現三、 調試報告(在設計和實現過程所遇到的問題和解決,請如實填寫)四、 總體小結(在整個設計過程中的心得體會)五、 分工介紹 (是獨立完成還是
2、合作完成,若為合作完成,說明合作者以及之間的具體分工)一、課題目標1.1 程序功能簡介 一個電話簿管理小程序。利用文本文件存儲電話簿數據,具有添加、刪除、顯示和查詢聯系人電話號碼的功能。1.2 課程設計要求(1)將電話簿數據和相應的函數封裝在類中,改寫程序使之結構化。(2)增加記錄修改功能,能選擇修改用戶的姓名、電話。(3)增加錄入時間的顯示及存儲。(4)增加缺省的查詢方式,即查詢時只輸入姓名的首字母,所有符合這一條件的電話資料均在屏幕上顯示。1.3 評定難易級別 A級二、具體實現2.1 程序總體方案開發平臺操作系統:Windows XP開發工具:VC+6.0程序結構或流程圖(1)主函數的流程
3、圖: 開始輸出菜單及提示輸入選擇 1 2 3 4 5 6 0根據首字母查找根據姓名查找修改已有記錄刪除已有記錄顯示電話簿內容添加電話簿記錄返回主菜單退出退出結束2.2 所做改進 改進一.1 改進方案 把程序改成類:將數據成員和對這些數據相關的操作函數封裝在類中,使程序結構化。定義了類的友元類,使訪問類成員時更方便。.2 具體實現class TelRecord /定義類private:int Year,Month,Day,Hour,Minute;char LName20;char FName20;char Tel20;public: TelRecord(); /缺省的構造函數TelRecord(
4、); /析構函數 TelRecord(char*,char*,char*,int,int,int,int,int);void setRecord(char*,char*r,char*,int,int,int,int ,int );void setTime();char* getLName(); /獲得姓char* getFName(); /獲得名char* getTel() ; /獲得電話號碼int getYear(); /獲得年int getMonth(); /獲得月int getDay(); /獲得日 int getHour(); /獲得時int getMinute() ; /獲得分int
5、 compare(TelRecord&); /按照姓名比較若返回值為零,則兩者相等void show();void modify(char*); /修改電話號碼 void modify(char *,char *); /修改姓名int lookChar(char); /首字母匹配的返回1,不匹配的返回/按照首字母查找,若匹配返回1,否則返回0; class Node /結點類 friend class List; private: TelRecord* pData; Node *pNext;public: Node() pData=new TelRecord; pNext=0; /缺省
6、的構造函數Node(TelRecord telrecord,Node node) pData=&telrecord; pNext=&node; /構造函數 Node(Node&node) if(node.pData!=NULL) /用于拷貝的構造函數 pData=node.getData(); pNext=node.getpNext(); Node(); void inputData(TelRecord*pdata) pData=pdata; /數據錄入函數 void showNode() pData->show(); /結點顯示函數 TelRecord* get
7、Data() return pData; /獲得結點信息函數Node* getpNext() Node *p=pNext; return p; /獲得下一個結點;class List /鏈表類 Node* pHead;public: List(Node* node=NULL) pHead=node; /構造函數 List() if(pHead!=NULL) deleteList(); /析構函數void setpHead(Node* node) pHead=node; /重置鏈表頭函數 void showList(); /顯示鏈表函數 void deleteList(); /刪除鏈表函數Nod
8、e* getListHead() return pHead; Node* lookUpfirstletter(); /按照姓氏首字母智能查詢函數 void lookUp(TelRecord &); /按照姓名智能查詢函數 void insert(Node*); /排序插入函數 void deleteNode(Node*); /刪除結點函數 void delete_record(); /刪除記錄函數 int verify_delete(); /確認刪除的函數 void add_record(); /在鏈表中增加一個記錄函數 void modify_record(); /修改數據函數 vo
9、id modifyTel(); /修改電話號碼函數 void modifyName(); /修改姓名函數 void load_list_from_file(); /從文件載入數據函數 void write_list_to_file(); /把信息寫入文件的函數void handle_choice(int); /選擇處理函數;2.2.2改進二2.2.2.1 改進方案 增加時間單元的存儲與顯示:在結點數據域中增加一個時間單元,在結點數據的構造函數中調用系統時間給時間單元賦值。2.2.2.2 具體實現void setTime() time_date=time(0); CurrentTime=loca
10、ltime(&time_date); Year=CurrentTime->tm_year+1900; Month=CurrentTime->tm_mon+1; Day=CurrentTime->tm_mday; Hour=CurrentTime->tm_hour; Minute=CurrentTime->tm_min;int getYear() return Year; int getMonth() return Month; int getDay() return Day; int getHour() return Hour; int getMinute
11、() return Minute; void setRecord(char*lastname,char*number,char*firstname,int year,int month,int day,int hour,int minute ) strcpy(LName,lastname); strcpy(Tel,number); strcpy(FName,firstname);Year=year;Month=month;Day=day;Hour=hour;Minute=minute;2.2.3改進三.1 改進方案 使用戶界面更加友好:避免輸入數據類型錯誤導致程序無效循環或終止,在輸入數據類型
12、時進行判斷,對非法輸入予以提示。2.2.3.2 具體實現/要求用戶確認函數int List:verify_delete() char YesNo; cout<<"n 確定刪除嗎?(y/n) " YesNo=cin.get(); while(YesNo!='y'&&YesNo!='n') cin.ignore(20,'n'); cout<<" 輸入有誤,重新輸入: " YesNo=cin.get(); if(YesNo='y') cin.get(); r
13、eturn 1; else cin.get(); return 0; /將輸入的字符轉換為整型int main() char str20;List FriendsList;cout<<"*歡迎使用電話簿管理系統*"<<endl;cout<<"按回車鍵開始"<<endl;cin.get(pause);system("cls");FriendsList.load_list_from_file();current_ptr=FriendsList.getListHead();do system(
14、"cls");cout<<"n=菜單=n".cout<<"=n"cout<<"請輸入您的選擇:n"cin.clear();cin.getline(str,20);choice=atoi(str); FriendsList.handle_choice(choice);while(choice!=0);return 0;三、調試報告以下面的表格形式記錄程序調試和測試過程。日期遇到的問題解決方法9月5號在main()函數中定義的變量,在其調用的函數中不能實現。了解到變量的作用域問題,把需要在整個程序中用得到變量定義為全局變量,由于是多文件,故使用了extern 說明。9月8號在返回主菜單的程序中,總是有異常的程序終止。檢查程序,查找各種輸入流函數的用法,在一些輸入后立即清空
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫務部工作總結與醫療質量提升計劃
- 四川省合江縣馬街中學2023-2024學年高二上學期1月期末英語試題 含解析
- 湖北省十堰市六縣市區一中教聯體2023-2024學年高二上學期12月聯考地理 含解析
- 加強數據安全與隱私保護措施計劃
- 生產計劃制定中的常見誤區
- 創新管理模式的年度探索計劃
- 企業合作與實習機會安排計劃
- 秋季教育活動方案計劃
- 2025浙江余姚景隆置業有限公司招聘7人筆試參考題庫附帶答案詳解
- 優化倉庫管理流程的經驗分享計劃
- 2024年安徽省公務員【申論】考試真題及答案-(A卷+B卷+C卷)三套
- 自主智能系統知到課后答案智慧樹章節測試答案2025年春哈爾濱工程大學
- GB/T 6433-2025飼料中粗脂肪的測定
- 服務消費券發放的精細化實施方案
- 2019版 浙科版 高中生物學 必修2 遺傳與進化《第二章 染色體與遺傳》大單元整體教學設計2020課標
- 【MOOC期末】《介入放射學》(東南大學)中國大學慕課答案
- DB50T 771-2017 地下管線探測技術規范
- 防災減災培訓(安全行業講座培訓課件)
- 2024年《BIM技術介紹》課件
- 情景教學法在小學英語課堂中的有效運用研究(開題報告)
- 花鍵計算公式DIN5480
評論
0/150
提交評論