客戶信息管理系統(tǒng)_第1頁
客戶信息管理系統(tǒng)_第2頁
客戶信息管理系統(tǒng)_第3頁
客戶信息管理系統(tǒng)_第4頁
客戶信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、湖南第一師范學院信息科學與工程學院課程設計報告所 屬 專 業(yè): 計算機科學與技術 課 程 名 稱: C+課程設計 課程設計名稱: 客戶信息管理系統(tǒng) 學 號: 姓 名: 李碧秋 指 導 教 師: 楊恒伏 伍智平 2015年 12 月湖南第一師范學院課程設計任務書2015 -2016 學年第 1學期院(部) 信息科學與工程學院 專業(yè) 計算機科學與技術 班級 14計科1班 課程名稱: C+課程設計 設計題目: 客戶信息管理系統(tǒng) 完成期限:自 2015 年 12 月 28 日至 2016 年 1 月 8 日共 2 周目的及任務1.掌握面向?qū)ο蟪绦蛟O計語言2.C+的基本語法3.

2、掌握C+面向?qū)ο笤O計的思想4.掌握VC+6.0與DEV C+開發(fā)工具的使用5.運用標準C+規(guī)范設計應用程序6.遵循軟件過程的各個環(huán)節(jié)進行系統(tǒng)分析、設計、實現(xiàn)、集成、測試,并相應給出軟件規(guī)格說明書等文檔。進度安排起止日期工作內(nèi)容2015.12.28選題,系統(tǒng)背景調(diào)查與文獻資料收集,實驗平臺構建2015.12.292015.12.31系統(tǒng)需求分析、系統(tǒng)概要設計、類的設計2016.1.12016.1.4系統(tǒng)詳細設計與編碼實現(xiàn)2016.1.52016.1.8系統(tǒng)測試與完善、文檔整理與課程設計報告撰寫主要參考資料1鄭莉, 董淵, 何江舟著. C+語言程序設計(第4版)(清華大學出版社, 2010.72(

3、美)梅因等著, 金名等譯. 數(shù)據(jù)結構與面向?qū)ο蟪绦蛟O計(C+版)(第4版). 清華大學出版社, 2012.53梅險, 曲蔚, 孫建業(yè)編. C/C+程序設計案例教程實驗與實訓指導. 高等教育出版社, 2014.3指導教師(簽字): 年 月 日教研室主任(簽字): 年 月 日目 錄1. 客戶信息系統(tǒng)概述4 1.1 基本要求4 1.2 主要功能4 1.3 設計方法5 1.4 系統(tǒng)開發(fā)的目的52. 總體設計52.1 系統(tǒng)功能模塊52.2 系統(tǒng)總體框架62.3 類的分類表72.4 系統(tǒng)關鍵算法流程圖83. 系統(tǒng)運行報告.134. 系統(tǒng)評價154.1 系統(tǒng)的特點154.2 系統(tǒng)的缺點154.3 將來可能提

4、出的要求155. 系統(tǒng)調(diào)試出現(xiàn)的問題156. 總結167致謝.168. 參考文獻169. 源程序17 客戶信息管理系統(tǒng)設計報告 1. 客戶管理系統(tǒng)概述該系統(tǒng)主要處理客戶的相關信息。客戶信息主要包括:客戶編號、客戶名稱、所在地區(qū)、聯(lián)系方式等內(nèi)容。地區(qū)信息主要包括:編號、名稱等內(nèi)容。完成以下的操作:客戶信息、地區(qū)信息的錄入、修改、刪除和查詢。1.1 基本要求 程序運行結果正確,操作方便,界面美觀,邏輯層次清楚,程序結構合理,文檔規(guī)范清晰。1.2 主要功能 要求: 1)添加功能:能夠?qū)蛻艉偷貐^(qū)信息進行添加。 2) 顯示功能:能夠?qū)蛻艉偷貐^(qū)信息進行輸出,如未找到,顯示出相應的提 示信息,如找到,則

5、顯示相應信息。 3) 刪除功能:能夠?qū)蛻艉偷貐^(qū)信息進行刪除,如未找到,顯示出相應的提示信息。 4)查找功能:能夠按編號對客戶和地區(qū)信息進行查找,如未找到,顯示出相應的提示信息。 5)修改功能:能夠按編號對客戶和地區(qū)信息進行修改,如未找到,顯示出相應的提示信息。 6)保存功能:能夠把客戶和地區(qū)信息保存為文件。7)讀取功能:可將保存在文件中的人員信息讀入到當前系統(tǒng)中,供用戶使用。1.3 設計方法1)應用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設計;2)分析系統(tǒng)中的各個實體與他們之間的關系;3)根據(jù)問題描述,設計系統(tǒng)的類層次;4)完成類層次中各個類的描述;5)完成類中各個成員函數(shù)的定義;

6、6)完成系統(tǒng)的應用模塊;7)功能調(diào)試。1.4 系統(tǒng)開發(fā)的目的 1. 熟練掌握C+語言的基本知識和技能; 2. 基本掌握面向?qū)ο蟪绦蛟O計的基本思路和方法; 3. 利用所學的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O計問題; 4. 設計一個含有最基本功能的客戶信息管理系統(tǒng)。2. 總體設計2.1 系統(tǒng)功能模塊 根據(jù)問題描述和要求,系統(tǒng)要求能夠按編號顯示、查找、增加、刪除和保存客戶、地區(qū)的信息,確定程序至少應該具備如下功能:“錄入客戶和地區(qū)信息、”“查詢客戶和地區(qū)信息”、“增加客戶和地區(qū)信息”、“刪除客戶和地區(qū)信息”、“修改客戶和地區(qū)信息”、“輸出客戶和地區(qū)信息”、“數(shù)據(jù)存盤”基本模塊。 系統(tǒng)既然具有“

7、數(shù)據(jù)存盤”功能客戶數(shù)據(jù)可以保存到磁盤文件,那么也就意味著可以從磁盤文件讀出客戶數(shù)據(jù),所以系統(tǒng)增加了“客戶數(shù)據(jù)裝入”模塊,以方便用戶使用、避免數(shù)據(jù)重復錄入,并定義客戶數(shù)據(jù)文件名:Xinxi.dat。 考慮到根據(jù)編號查找人員信息功能在“刪除客戶和地區(qū)”、“修改客戶和地區(qū)”“輸出客戶和地區(qū)信息”、等模塊都使用,所以可以考慮設置為一個模塊。 如下圖:刪除信息修改信息查找Find輸出信息管理員添加信息查找信息保存信息 2.2 系統(tǒng)總體框架 使用面向?qū)ο蟮某绦蛟O計思想進行分析,整個系統(tǒng)涉及兩大類信息和操作,客戶、地區(qū)。所以系統(tǒng)涉及四個大類:信息類Xinxi(基類)、客戶類customer(繼承類)、地區(qū)類

8、area(繼承類)、管理類(友元類)。系統(tǒng)的總體框架就是管理類的定義,主函數(shù)中定義一個管理對象,循環(huán)顯示主菜單并根據(jù)用戶選擇調(diào)用管理類的成員函數(shù)。 (1)信息類Xinxi:考慮系統(tǒng)操作的客戶信息的數(shù)量具有不確定性,所以考慮使用鏈表保存、處理客戶信息。因為客戶和地區(qū)信息都包括了地區(qū)編碼和地區(qū)名稱,所以信息類包含私有數(shù)據(jù)成員:編號No1、名稱Name1、指針域next以及類別Duty,Duty用來區(qū)分是客戶信息還是地區(qū)信息,并且考慮到客戶和地區(qū)信息的輸入輸出,信息類需要定義公共成員函數(shù)以便供客戶類和地區(qū)類繼承使用。 (2)地區(qū)類area:地區(qū)類是信息類的公共繼承類,繼承了信息類的數(shù)據(jù)成員和成員函數(shù)

9、,所以地區(qū)類不需要再定義其他數(shù)據(jù)成員和成員函數(shù)。 (3)客戶類customer:客戶類是信息類的繼承類,客戶類包括的信息除了地區(qū)編碼和地區(qū)名稱還包括客戶本身的編碼,名稱及聯(lián)系方式,所以客戶類里需要另外定義數(shù)據(jù)成員客戶編碼No2、客戶名稱Name1、聯(lián)系方式num. (4)管理類manger:管理類是信息類的友元類,以便訪問信息類的私有數(shù)據(jù)成員和成員函數(shù),在管理類中分別定義添加信息,刪除信息,輸出信息,查找信息,保存信息,修改信息等函數(shù)。2.3 類的層次圖類名信息類(基類)Xinxi數(shù)據(jù)成員No1,Name1,Duty,next成員函數(shù)Input,Output類名地區(qū)類(繼承類)area數(shù)據(jù)成員

10、No1,Name1,Duty,next成員函數(shù)Input,Output類名客戶類(繼承類)customer數(shù)據(jù)成員No1,Name1,Duty,next,No2,Name2成員函數(shù)Input,Output類名管理類(友元類)manger數(shù)據(jù)成員 Xinxi *PL成員函數(shù) Clear() manger() Delete() Save() Print() Search() Modify() Load() 1.Xinxi 類的No1-地區(qū)編號,Name1-地區(qū)名稱,Duty-信息類別,next-指向下一個客戶和地區(qū)的信息;Xinxi類的Input(),Output()定義為純虛函數(shù)分別表示輸入和輸

11、出信息,由于定義純虛函數(shù),所以Xinxi是抽象類,具體輸入,輸出信息由派生類完成。 2.各個派生的類,包含本類對象特有的數(shù)據(jù),繼承基類共同的數(shù)據(jù)。 3.友元類定義各個函數(shù): void Add(); /添加void Delete(); /刪除void Modify(); /修改void Search(); /查找void Print(); /輸出void Save(); /存盤void Load(); /裝入 void Clear();其中: (1)Clear()用于清除人員鏈表所有結點。 (2)Add(),Delete(),Modify(),Print(),Search(),Save(),Lo

12、ad()分別表示系統(tǒng)各個功能模塊:增加信息,刪除信息,修改修改,輸出信息,查詢信息,數(shù)據(jù)存盤,數(shù)據(jù)裝入。2.4 系統(tǒng)關鍵算法流程圖 開始(1)主函數(shù)流程 創(chuàng)建管理對象 顯示菜單 接受輸入 根據(jù)輸入進行操作 輸出 結束(2)manger:Add() 開始 選擇輸入類別輸入數(shù)據(jù),創(chuàng)立新結點結點加入鏈表結束 開始(3) manger:Delete() 選擇刪除類別 查找要刪除結點結點存在提示未找到鏈表刪除結點 結束 開始(4) manger:Modify選擇修改類別 查找結點結點存在修改結點提示未找到結束(5) manger:Save() 開始打開數(shù)據(jù)文件遍歷鏈表保存數(shù)據(jù) 關閉文件打開數(shù)據(jù)文件保存數(shù)

13、據(jù)文件關閉文件結束開始選擇輸出類型(6) manger:Print()查找結點結點存在提示未找到輸出信息結束 開始(7) manger:Search() 選擇查找類別查找結點 結點存在 提示未找到 輸出信息 結束開始(8) manger:Load()打開文件讀取基礎數(shù)據(jù)關閉文件打開文件讀取每一條記錄文件未結束根據(jù)人員類型創(chuàng)立結點鏈表加入結點關閉文件讀取下面一行記錄 關閉文件結束3.系統(tǒng)運行報告(1)管理界面(2)輸入信息(3)輸出信息(4)刪除信息(5)修改信息(6)查找信息(7)信息存盤4系統(tǒng)評價 本部分具體從三方面闡述:優(yōu)點、缺點以及將來可能提出的要求。4.1 系統(tǒng)的特點 1.流程符合客戶

14、管理系統(tǒng)的基本要求。 2.操作簡單、方便。 3.系統(tǒng)擴充容易。由于資料有限,有很多地方還需要更好的完善。4.2 系統(tǒng)的缺點 1.界面不太美觀、友好,輸出和查找時數(shù)據(jù)和對應的信息沒有對齊顯示,查看時不太方便。 2.同時輸入客戶信息和地區(qū)信息時,不能同時輸出查看,只能查看首先錄 入的信息;同時輸入多個地區(qū)信息時不能全部保存,只能顯示第一次輸入的信息;當輸入客戶信息而沒輸入地區(qū)信息時,查看地區(qū)信息時并不會提示沒有信息,而是將客戶信息輸出??傊?,只能實現(xiàn)客戶信息和地區(qū)信息的分別輸入和顯示。 3.文件保存功能沒有實現(xiàn),打開文件時沒有任何記錄。4.3 將來可能提出的要求 1.要求界面更加完美 ,閱讀起來方

15、便易懂。 2.要求客戶信息和地區(qū)信息可以結合在一起,實現(xiàn)同時輸入、同時保存、同時輸出。 5.系統(tǒng)調(diào)試出現(xiàn)的問題 1.編譯程序時沒有顯示任何錯誤,但是執(zhí)行時系統(tǒng)會出現(xiàn)程序停止運行的情況,我認為是系統(tǒng)沒有為我在刪除函數(shù)里定義的指針q開辟空間,如下:Xinxi q;q=p;delete q;p=p->next;然后我換了另外一種方法,如下:p2->next=p1->next; /連接delete p1;cout<<"正確刪除!n" 2.程序編譯時會出現(xiàn)沒有主函數(shù)的錯誤,原因是括號沒有正確匹配。 3.程序運行時出現(xiàn)無限循環(huán),是因為輸出函數(shù)沒有終止語句b

16、reak.6. 總結在這次課程設計中我終收獲頗多,讓我對編程有了新的認識,平時很少上機,總是在看程序,滿足于看懂程序,因此離自己會編程序還有一段差距, 這次課程設計雖然老師給了參考模板,但是這只是一種思路,需要我們根據(jù)自己的問題完善程序,這使得我不得不自己寫,看了幾遍程序,基本理解了編程的方法,雖然一開始出現(xiàn)了很多錯誤,但是經(jīng)過多次分析與修改,最后完成了程序要求。其次,在編程之前一定要思考,給自己規(guī)劃好步驟,我在第一周編程時沒有認真閱讀問題要求,以為只要對客戶信息進行操作,在第二周我已經(jīng)編好程序準備寫設計報告時才發(fā)現(xiàn)自己看錯了,所以星期二下午和星期三我又在之前的基礎上重新編了這個程序,導致設計

17、報告寫的有些倉促,所以,我們在編程之前一定要認真閱讀題目,分析設計要求,理清思路,這樣后面編程時才能順利進行。所以這次的課程設計讓我用了一個相對比較集中的時間去練習我的編程,特別是自己的動手能力,加深了對類和對象的理解,提高了自己分析問題、運用所學知識解決問題的能力,并培養(yǎng)了基本的設計技能。7致謝在這次課程設計中,老師和同學們給了我很大的幫助,在此表示衷心的感謝和誠摯的謝意。 8. 參考文獻 1. 1譚浩強. C+面向?qū)ο蟪绦蛟O計(第2版第二版)M. 清華大學出版 社,2014. 2. 1彭召意,朱艷輝,周玉. C+面向?qū)ο蟪绦蛟O計課程的實踐教學研究J. 計 算機教育, 2015, (5):

18、151-1549. 源程序/#include<fstream.h>#include<string.h>class Xinxi protected: int No1; /編號char Name120; /名稱int Duty;Xinxi *next; /指針域public: Xinxi ()next=0; /指針域設置為空virtual Xinxi() virtual void Input()=0; /從鍵盤輸入數(shù)據(jù) virtual void Input(ifstream& ifs)=0; /從文件輸入信息 virtual void Output()=0; /向屏

19、幕輸出信息 virtual void Output(ofstream& ofs)=0; /向文件輸出信息friend class manger;class customer: public Xinxi /客戶繼承類 .;class area: public Xinxi /地區(qū)繼承類 .;class manger /管理員private: Xinxi *PL;void Clear();int manger:Find(int ID,Xinxi *p1,Xinxi *p2);public:manger(); /構造manger(); /析構void Add(); /添加void Delete

20、(); /刪除void Modify(); /修改void Search(); /查找void Print(); /輸出void Save(); /存盤void Load(); /裝入;manger:manger() /構造(創(chuàng)建一個頭結點的鏈表)customer *p=new customer;PL=p;cout<< "自動裝入數(shù)據(jù).n"Load();manger:manger() /析構函數(shù)(僅保留一個頭結點)Xinxi *p=PL;while(p)PL=p->next; delete p; p=PL;void manger:Add() cout<

21、;<"n*增加信息*n" Xinxi *p =PL; while(p->next)p=p->next; int ch; cout<<"選擇信息類別1-地區(qū)信息,2-客戶信息:" cin>>ch; /創(chuàng)建新結點,錄入數(shù)據(jù),連接到鏈表 area *ar; customer *cu; switch(ch) case 1: ar=new area; ar->Input(); p->next=ar; break; case 2: cu=new customer; cu->Input();/*p->n

22、ext=cu; break; default: return; /*void manger:Clear() Xinxi *p=PL->next; while(p) PL->next=p->next; delete p; p=PL->next; /*int manger:Find(int ID,Xinxi *p1,Xinxi *p2)*p1=PL->next;*p2=PL;while(*p1)if(*p1)->No1=ID)break; /找到else*p2=*p1; /繼續(xù)查找*p1=(*p1)->next;return *p1?1:0;void ma

23、nger:Delete() cout<<"n*刪除信息*n" int No; Xinxi *p1,*p2; Xinxi *p=PL->next; int ch; cout<<"輸入刪除的類型0-地區(qū)信息,1-客戶信息:" cin>>ch; cout<<"編號:" cin>>No;switch(ch) case 0: if(!Find(No,&p1,&p2) cout<<"對不起,您需要的地區(qū)信息沒有找到!n" else p

24、2->next=p1->next; /連接 delete p1; cout<<"正確刪除!n" break; case 1: if(!Find(No,&p1,&p2) cout<<"對不起,您需要的客戶信息沒有找到!n" else p2->next=p1->next; /連接 delete p1; cout<<"正確刪除!n" break; default: return; void manger:Modify()cout<<"n*修改信

25、息*n"int No;int ch;Xinxi *p1,*p2; Xinxi *p=PL; cout<<"輸入修改的類型0-地區(qū)信息,1-客戶信息:"cin>>ch;cout<<"編號:"cin>>No;while(p->next)switch(ch) case 0: if(!Find(No,&p1,&p2) cout<<"對不起,您需要的地區(qū)信息沒有找到!n" else p1->Output(); /輸出原來地區(qū)信息 p1->In

26、put(); /輸入新的地區(qū)信息 cout<<"地區(qū)信息修改完成!n" break; case 1: if(!Find(No,&p1,&p2) cout<<"對不起,您需要的客戶信息沒有找到!n" else p1->Output(); /輸出原來客戶信息 p1->Input(); /輸入新的客戶信息 cout<<"客戶信息修改完成!n" break; default: return; p=p->next;void manger:Print() cout<<

27、;"n*輸出信息*n" int No; int ch; Xinxi *p1,*p2; Xinxi *p=PL->next; cout<<"輸入輸出的類型0-地區(qū)信息,1-客戶信息:" cin>>ch; cout<<"編號:" cin>>No; switch(ch) case 0: if(!Find(No,&p1,&p2) cout<<"對不起,您需要的地區(qū)信息沒有找到!n" else cout<<"n* 地區(qū)信息

28、表 *n" cout<<" 地區(qū)編號 地區(qū)名稱n" p->Output(); p=p->next; cout<<"正確輸出!n" break; case 1: if(!Find(No,&p1,&p2) cout<<"對不起,您需要的客戶信息沒有找到!n" else cout<<"n* 地區(qū)信息表 *n" cout<<" 客戶編號 客戶名稱 聯(lián)系方式 地區(qū)編號 地區(qū)名稱 n" p->Output

29、(); p=p->next; cout<<"正確輸出!n" break; default: return;void manger:Save()ofstream f("Xinxi.dat",ios:out);/打開文件/遍歷輸出文件Xinxi *p=PL->next;while(p) p->Output(f);p=p->next;f.close(); /關閉文件cout<<"信息已經(jīng)保存在Xinxi.dat.n"void manger:Load() char buf81; /臨時空間 in

30、t Duty; Xinxi *p2; /新建結點的指針 long t; /讀寫位置 /清除現(xiàn)有結點 Clear(); ifstream f("Xinxi.dat",ios:in); /打開文件 Xinxi *p=PL; /建立結點,讀數(shù)據(jù)while(1)t=f.tellg();f>>buf>>buf>>Duty;if(f)switch(Duty) case 0:p2=new area;break; case 1:p2=new customer;break; default:f.close();return;p->next=p2;/創(chuàng)立新結點p=p->next;f.seekg(t);p->Input(f); break;f.close(); /關閉文件void manger:Search() cout<<"n*查找信息*n" int No; Xinxi *p1,*p2; Xinxi *p=PL->next; int ch; cout<<"輸入查找的類型0-地區(qū)信息,1-客戶信息:" cin>>ch;cout<<"編號:"cin>>No;switch(ch) case 0:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論