




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學 號: 課 程 設 計題 目影碟租賃系統租賃者管理的設計與實現學 院計算機科學與技術專 業計算機科學與技術班 級姓 名指導教師年月日目 錄計算機基礎強化訓練任務書21問題描述31.1問題描述31.2基本要求31.3數據需求31.4功能需求32.實現分析43程序設計43.1存儲結構設計43.2主要算法設計5程序主要函數原型及功能5各函數的實現6函數模塊183.2.4 程序流程圖184.調試報告204.1調試中的問題204.2對設計和編碼的討論和分析215. 程序運行結果216.經驗和體會286.1感受和體會286.2對算法改進的想法297.租賃信息鏈表內容和源程序307.1租賃信息鏈表內容30
2、7.2源程序30本科生課程設計成績評定表42計算機基礎強化訓練任務書學生姓名: 專業班級: 計算機班 指導教師: 工作單位: 計算機科學與技術學院 題 目: 初始條件:理論:學完計算機基礎知識,掌握C+語言編程基礎和VC開發平臺的使用。實踐:計算機科學系實驗中心提供計算機及軟件開發環境。要求完成的主要任務: (1)系統需求分析,得到系統的數據需求和功能需求,分析結果用表格記錄。 (2)系統設計,包括內存數據結構設計、數據文件設計、代碼設計、輸入/輸出設計、用戶界面設計、處理過程設計。要求內存數據用鏈表組織,數據文件用文本文件,用戶界面用字符界面。至少實現數據記錄的增加、修改、刪除、查詢(查詢應
3、能按不同數據項進行)。(2)編制好程序后,設計若干測試用例,上機測試所設計的程序。(4)設計報告按格式要求書寫。設計報告正文的內容應包括:1)系統描述 包括問題說明、數據需求和功能需求。2)系統設計 包括內存數據結構設計、數據文件設計、代碼設計、輸入/輸出設計、用戶界面設計、處理過程設計。3)系統測試 包括測試用例的描述、測試方法和測試結果。4)設計的特點、不足、收獲和體會。時間安排:1、第20周(7月4日至7月8日)完成。2、7月8日8:00到計算機學院實驗中心(三樓)檢查程序、交課程設計報告、源程序(CD盤)。指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日課程設計報告書1
4、問題描述1.1問題描述針對影像店影碟出租的管理,設計一個對租賃者進行管理的系統。1.2基本要求內存數據結構設計、數據文件設計、代碼設計、輸入/輸出設計、用戶界面設計、處理過程設計。要求內存數據用鏈表組織,數據文件用文本文件,用戶界面用字符界面。至少實現數據記錄的增加、修改、刪除、查詢(查詢應能按不同數據項進行)。1.3數據需求經過對影像店的觀察,最終確定租賃者的信息包括:租賃者注冊時間、租賃時間、對應時間的租賃影碟的名稱、租賃影碟的數量、租賃押金、租賃者的編號。如下表:姓名編號注冊時間租賃數量租賃影碟的信息押金(元)租賃時間影碟名字張三000120110101220110103哈利波特7502
5、0110509指環王31.4功能需求為實現對影碟租賃者的管理,本系統主要實現以下幾個功能:1 增加租賃會員。其中信息包括注冊時間、租賃時間、對應時間的租賃影碟的名稱、租賃影碟的數量、租賃押金、租賃者的編號。2 刪除租賃會員。將對應的會員的信息刪除。3 修改會員的租賃信息。對需要修改租賃信息的會員實現影碟數量的增減及相關租賃時間、影碟名字的修改。4 查詢租賃信息。設計的查詢功能分為以下兩種:Ø 按租賃者相關信息查詢。包括按照租賃者姓名查詢和按照編號查詢,若成功,則返回相關租賃信息,若失敗,返回失敗信息。Ø 按照租賃日期查詢。對輸入的一個日期進行查詢,查詢結果為:對應日期注冊會
6、員的數量、對應日期租賃影碟的信息(租賃者、租賃數量)。5 保存文件。將內存的信息保存到外存儲器上,實現信息的永久保存。2.實現分析(1)針對某個影像店的租賃者信息先建立一個鏈表,存儲租賃者的信息:注冊時間、租賃時間、對應時間的租賃影碟的名稱、租賃影碟的數量、租賃押金、租賃者的編號。(2)對于已經建立的鏈表通過人機交互窗口進行相關的操作。包括:退出系統、查詢租賃者、添加新租賃者、 修改租賃數量、刪除租賃者 、查看所有租賃者、按日期查詢、保存成文件。(3)對于用戶的各種選擇操作進行相關的操作,并對用戶的錯誤輸入進行處理。3程序設計3.1存儲結構設計本次課程設計采用鏈表來存儲租賃者的相關信息,用到的
7、存儲結構如下:typedef struct char Name20; / 租賃者姓名int Mount; /租借影碟數量double Price; /押金long int Data; /注冊日期long int CDData10; /租賃影碟的時間long int Num; /租賃者編號char CDNameCDNUMMAX20; /租賃影碟的名稱members; /結構體memember,每個結點的內容typedef struct nodemembers data; node *next;LNode,*LinkList; /結構體LNode,鏈表的結點3.2主要算法設計3.2.1程序主要函數
8、原型及功能1 主要函數原型及功能:LinkList Creat_LinkList()功能:創建一個空鏈表,并返回鏈表的頭結點。int equal(char a,char b) 功能:判斷兩個字符數組是否相等函數。void Add_LinkList(LinkList H) 功能:添加新的租賃者信息,信息包括:注冊時間、租賃時間、對應時間的租賃影碟的名稱、租賃影碟的數量、租賃押金、租賃者的編號;并輸出租賃會員的總數。void Revise_LinkList(LinkList H) 功能:修改租賃人的租賃信息。首先需要用戶輸入需要修改信息的人數,如果人數大于已經注冊的會員數,則會提示出錯信息,并讓用
9、戶重新輸入;在正確輸入后,用戶可以輸入相關租賃者姓名,并修改其租賃信息,如:張三原本租賃一張影碟,現在又租借了1張影碟,將這張影碟的租賃信息增加到張三的租賃信息中。void Del_LinkList(LinkList H) 功能:根據用戶輸入的需要刪除的租賃者姓名,完成刪除該租賃者的租賃信息,并返回剩余租賃者的數量。LinkList Search(LinkList H) 功能:按照用戶的選擇:按姓名查找和按編號查找,完成對相關信息的查找功能。void Search_Time(LinkList H) 功能:按日期查詢租賃信息。包括對于用戶輸入的日期,查詢該日期的注冊人數和租賃影碟的信息;如201
10、10101,有一個人注冊,沒人租借影碟;20110109,租賃影碟1張:哈利波特7,租賃者李四,押金20等。void browsing(LinkList H) 功能:瀏覽所有租賃者的租賃信息。void Printff(LinkList p)功能:輸出租賃者的信息。void WriteCDdata(LinkList H)功能:將主存中的鏈表信息以文本文件的形式存儲到外存儲器中。void main( )功能:實現人機交互,提供用戶選擇相關操作。3.2.2各函數的實現(1)創建一個空鏈表,并返回頭指針:函數LinkList Creat_LinkList()的實現:LinkList Creat_Lin
11、kList()LinkList H;H=(LinkList)malloc(sizeof(LNode);if(H)H->next=NULL;return H;(2)判斷兩個字符數組是否相等函數 函數int equal(char a,char b)的實現:int equal(char a,char b) /定義一個判斷兩個字符數組是否相等函數int i=0,j;while(ai!='0'|bi!='0')j=0;if(ai=bi)i+;j=1;elsebreak;return j;/字符串比較,返回值非零相等,零不相等(3)添加租賃者Ø 使用尾插法插
12、入鏈表的結點,結點信息包括:租賃者注冊時間、租賃時間、對應時間 的租賃影碟的名稱、租賃影碟的數量、租賃押金、租賃者的編號。Ø 添加租賃者信息void Add_LinkList(LinkList H)的實現:void Add_LinkList(LinkList H) /添加新的租賃者信息LinkList p,q,temp,r;int k=0,i=0,j=1,n,count=0,x;char name20,name120;float price=0.0;long int data,n1,cddata;doprintf("請輸入需要增加租賃者數量:");scanf(&q
13、uot;%d",&k);if(k=0) return ;if(H->next=NULL) q=H;elsetemp=H->next;while(temp->next) temp=temp->next; q=temp;while(j<=k) p=(LinkList)malloc(sizeof(LNode);if(!p)printf("申請空間失敗!n");return ;elseq->next=p;p->next=NULL;doprintf("請輸入第%d個租賃者的姓名:",j);scanf(&q
14、uot;%s",&name);printf("請輸入租借數目,押金,注冊時間,租賃者編號 例如: 3 50.0 20100701 1n");scanf("%d %f %ld %ld",&n,&price,&data,&n1);/把新信息賦給新結點strcpy(p->data.Name,name);p->data.Mount=n;p->data.Price=price;p->data.Data=data;p->data.Num=n1;if(n>0)while(i<n
15、)printf("請輸入要增加的第%d個影碟的信息:n",i+1); printf("請輸入增加租賃日期:"); scanf("%d",&cddata);p->data.CDDataj+i-1=cddata; printf("請輸入對應的影碟名字:"); scanf("%s",name1); strcpy(p->data.CDNamej+i-1,name1);i+;i=0;while(n<=0|price<=0|n1<=0|data<=0);print
16、f("新會員添加成功!n");j+;q=p;j=1;r=H->next;while(r)count+;r=r->next;printf("此時共有%d個注冊會員n",count);count=0;printf("繼續添加 8;其他數字退出添加n請輸入:");scanf("%d",&x);while(x=8);(4)修改租賃者的租賃信息Ø 首先提示用戶選擇相應的修改方式:按姓名修改信息、按編號修改信息。Ø 根據用戶選擇的修改方式,輸入要修改租賃信息的租賃者名字或編號,進行查找,
17、若查找成功,則修改相關租賃信息,同時對租借數量進行判斷是否超過最大租借限度;查找失敗,返回失敗信息。Ø 顯示哈希表的函數void Revise_LinkList(LinkList H)的實現:void Revise_LinkList(LinkList H) /修改租賃人的租賃信息LinkList p,q;int k=0,k2=1,mount=0,i=0,j=0,count=0,x,m,n,u,v;char name20,name120;doprintf("請輸入需要修改信息的租賃者數量:");scanf("%d",&k);q=H->
18、;next;while(q)count+;q=q->next;while(k>count)printf("你輸入的修改人數大于注冊數量!");printf("請重新輸入:");scanf("%d",&k);p=H;doprintf("1 按照姓名修改t2 按照編號修改n請輸入:");scanf("%d",&m);if(m!=1&&m!=2) printf("你的輸入有誤!請重新輸入!");while(m!=1&&m!
19、=2);if(m=1)printf("請輸入要修改信息的租賃者姓名:");scanf("%s",&name);while(p->next)if(equal(p->next->data.Name,name)=1)k=0;break;elsep=p->next;if(m=2)printf("請輸入要修改信息的租賃者編號:");scanf("%d",&n);while(p->next)if(p->next->data.Num=n)k=0;break;elsep=p
20、->next;if(k=0) /修改租借數量printf("會員中有記錄!n請輸入修改租借數量:");scanf("%d",&mount);j=p->next->data.Mount;p->next->data.Mount=p->next->data.Mount+mount;while(p->next->data.Mount)if(p->next->data.Mount>10)printf("租借數量超出上限!n請重新輸入修改租借數量:");scanf(&
21、quot;%d",&mount);p->next->data.Mount=p->next->data.Mount+mount;else break;if(mount>0)while(i<mount)printf("請輸入要增加的第%d個影碟的信息:n",i+1);printf("請輸入租賃日期:");scanf("%d",&p->next->data.CDDataj+i);printf(" 請輸入對應的影碟名字:");scanf("
22、%s",name1);strcpy(p->next->data.CDNamej+i,name1);i+;if(mount<0)printf("輸入修改租借數量為負,既需要刪除租賃的影碟!n");while(i<0-mount)doprintf("1 按影碟名字修改t2 按租賃日期修改n請輸入:");scanf("%d",&u);if(u!=1&&u!=2) printf("你的輸入有誤!請重新輸入!");while(u!=1&&u!=2);i
23、f(u=1)printf("請輸入要刪除影碟名字:");scanf("%sd",&name1);int h=0;while(h<j)if(equal(p->data.CDNameh,name1)=1)while(h<j-1)strcpy(p->data.CDNameh,p->data.CDNameh+1);p->data.CDDatah=p->data.CDDatah+1;h+;h+;if(u=2)printf("請輸入要刪除影碟的租賃日期:");scanf("%d"
24、;,&v);int h=0;while(h<j)if(p->data.CDDatah=v)while(h<j-1)strcpy(p->data.CDNameh,p->data.CDNameh+1);p->data.CDDatah=p->data.CDDatah+1;h+;h+;i+;i=0;printf("修改成功!n");else printf("沒有相應的會員!n");printf("繼續修改 8;其他數字退出修改n請輸入:");scanf("%d",&
25、x);while(x=8);(5)刪除某些租賃者的信息Ø 首先提示用戶選擇相應的刪除方式:按姓名刪除信息、按編號刪除信息。Ø 根據用戶選擇的刪除方式,輸入要刪除租賃信息的租賃者名字或編號,進行查找,若查找成功,則刪除相關租賃信息,同時對租借者數量進行減操作;查找失敗,返回失敗信息。Ø 刪除租賃者信息函數void Del_LinkList(LinkList H)的實現:void main()char ch1;InitNameList(); CreateHashList (); doprintf("D. 顯示哈希表nF. 查找nQ. 退出n請選擇: &quo
26、t;);cin>>&ch1;switch(ch1)case 'D':Display(); cout<<endl;break;case 'F':FindList();cout<<endl;break;case 'Q':exit(0);cout<<"come on !(y/n):"cin>>&ch1;while(ch1!='n'); (6)租賃信息的查找Ø 首先提示用戶選擇相應的查找方式:按姓名查找信息、按編號編號信息。Ø
27、; 根據用戶選擇的查找方式,輸入要查找租賃信息的租賃者名字或編號,進行查找,若查找成功,則輸出相關租賃信息;查找失敗,返回失敗信息。Ø 查找租賃者信息函數LinkList Search(LinkList H)的實現:LinkList Search(LinkList H) /查找功能函數定義int k1,x;LinkList p;char name20;long int num;dop=H;printf("請選擇:t1,按租賃者姓名查詢t2,按租賃者編號查詢t0,退出查詢n");printf("請選擇:");scanf("%ld&quo
28、t;,&k1);if(k1=1) /按租賃者姓名查詢printf("請輸入租賃者姓名:");scanf("%s",name);while(p)if(equal(p->data.Name,name)=1) /查找租賃者姓名printf("查找成功!n");Printff(p);break;elsep=p->next;if(!p)printf("查找失敗,未注冊!n");if(k1=2) /按租賃者編碼查詢printf("請輸入租賃者編碼(數字):");scanf("%
29、ld",&num);while(p)if(p->data.Num=num)printf("查找成功!n");Printff(p);break;elsep=p->next;if(!p)printf("查找失敗,未注冊!n");if(k1=0) return(NULL);printf("繼續查找 8;其他數字退出查找n請輸入:");scanf("%d",&x);while(x=8); return p;(7)按日期查找租賃信息Ø 根據用戶輸入的日期,進行查找,若查找到相關
30、日期有會員注冊或者有影碟租賃出去,則返回相關注冊信息或者租賃信息Ø 按日期查找函數void Search_Time(LinkList H)的實現:void Search_Time(LinkList H) /按日期查詢租賃信息 LinkList p;long int time;int i=0,x,j=0,k=0;dop=H;printf("請輸入日期(格式):");scanf("%ld",&time);while(p) /遍歷查找if(p->data.Data=time)i+; /統計數量Printff(p);if(p->da
31、ta.Data!=time)while(j<p->data.Mount)if(p->data.CDDataj=time)Printff(p);k+;j+;j=0;p=p->next;printf("共有%d人在%ld注冊n",i,time);printf("共有%d人在%ld租借影碟n",k,time);k=0;i=0;printf("繼續按日期查詢 8;其余輸入退出查詢n請輸入:");scanf("%d",&x);while(x=8);(8)顯示所有租賃者的租賃信息Ø 顯
32、示出所有租賃者的租賃信息,包括:租賃者注冊時間、租賃時間、對應時間的租賃影碟的名稱、租賃影碟的數量、租賃押金、租賃者的編號。Ø 函數void browsing(LinkList H)的實現:void browsing(LinkList H) /顯示所有租賃者的信息LinkList p;int k8=1;p=H->next;if(p=NULL) printf("表為空!");while(p)printf("第%d個租賃人信息:n",k8);Printff(p);k8+;p=p->next;(9)輸出函數函數void Printff(L
33、inkList p)的實現:void Printff(LinkList p) /輸出函數int i=0;printf("租賃者姓名: %s 租借影碟數量: %d 押金: %fn注冊日期: %ld 租賃者編號:%ldn",p->data.Name,p->data.Mount,p->data.Price,p->data.Data,p->data.Num);while(i<p->data.Mount)printf("租賃日期:%d 對應的",p->data.CDDatai);printf("影碟名字:%
34、sn",p->data.CDNamei);i+;(10)將內存鏈表以文本文件的形式寫入外存儲器函數void WriteCDdata(LinkList H)的實現:void WriteCDdata(LinkList H)LinkList p;fstream cddata;cddata.open("影碟租賃租賃者管理.txt",ios:out);if(!cddata) printf("文件打開失敗!");elsep=H->next;if(p=NULL) printf("鏈表為空,無法完成信息存入硬盤!");elsew
35、hile(p)cddata.write(char*)&(p->data.Name),sizeof(p->data.Name);cddata.write(char*)&(p->data.Num),sizeof(p->data.Num);cddata.write(char*)&(p->data.Data),sizeof(p->data.Data);cddata.write(char*)&(p->data.Mount),sizeof(p->data.Mount);cddata.write(char*)&(p-&g
36、t;data.Price),sizeof(p->data.Price);cddata.write(char*)&(p->data.CDData),sizeof(p->data.CDData);cddata.write(char*)&(p->data.CDName),sizeof(p->data.CDName);p=p->next;cddata.close();(11)人機交互的實現主函數void main( )的實現:void main( ) / 主函數,菜單形式int key=0; LinkList H;char l;H=Creat_Lin
37、kList( );printf("-歡迎使用影碟租賃者管理系統-n");printf("由于現在沒會員注冊,請先注冊會員:n");Add_LinkList(H);/ 主菜單內容doprintf(" -$-n");printf(" * 0 退出系統 *n");printf(" * 1 查詢租賃者 *n");printf(" * 2 添加新租賃者 *n");printf(" * 3 修改租賃數量 *n");printf(" * 4 刪除租賃者 *n&
38、quot;);printf(" * 5 查看所有租賃者 *n");printf(" * 6 按日期查詢 *n");printf(" * 7 保存成文件 *n");printf(" -$-n");printf("請選擇: ");scanf("%d",&key);printf("n");switch(key)case 0: printf("你選擇退出系統,謝謝使用!n"); return ;break;case 1: Search(
39、H);printf("n");break;case 2: Add_LinkList(H);printf("n");break;case 3: Revise_LinkList(H);printf("n");break;case 4: Del_LinkList(H);printf("n");break;case 5: browsing(H);printf("n");break;case 6: Search_Time(H);printf("n");break;case 7: Wri
40、teCDdata(H);printf("n");break;default: printf("你的選擇有誤!n");printf("繼續Y;退出Nn");printf("請選擇: ");scanf("%s",&l);while(l='Y'|l='y');3.2.3函數模塊模塊調用關系主函數main添加信息模塊刪除信息模塊修改信息模塊文件寫入模塊信息顯示模塊按時間查找信息模塊查找信息模塊3.2.4 程序流程圖本次程序流程圖如下開始添加成員函數0 退出 1查詢
41、 2 添加3 修改 4 刪除 5 查看6. 日期查詢 7 存文件查詢信息添加信息修改信息刪除信息按日期查詢顯示全部信息以文件存入12345678 繼續其他數字,退出88Y繼續N退出其他數字Y結束N4.調試報告4.1調試中的問題經過對影碟租賃和系統的研究后,即進行程序的設計和編碼;將原程序編好后,經過編譯,有如下幾個問題:Ø 鏈表的頭結點不存放信息,僅作鏈表的表示起點,因此每次對鏈表的增加或查找應從第二個結點開始,即從H->next開始。Ø 增加新的租賃者信息的函數void Add_LinkList(LinkList H)中,采用尾插法插入,因此插入點是最后一個結點,而
42、不是第二個結點,開始以第二個結點作為插入點,在插入后沒有將第二個結點后的結點用指針連接起來,導致每次鏈表中都只有兩個結點;最后改成:temp=H->next;while(temp->next) temp=temp->next; q=temp;q既是鏈表尾結點,以q為結點開始插入。Ø 增加新的租賃者信息的函數void Add_LinkList(LinkList H)中,設置了兩個變量i、j作為存儲租出影碟的時間數組和名字數組的下標,由于每次對一個用戶租賃信息的插入時,i、j的值都會改變,但是對下一個插入租賃者,其存儲租出影碟的時間數組和名字數組的下標i、j應該是二者的
43、初始值,不應該是上一次租賃者插入結束后的修改值;經過分析,在每次一個租賃者信息插入結束后修改i、j的值,即i=j=0。Ø 修改租賃信息函數void Revise_LinkList(LinkList H)中,由于對租賃影碟的數量有限制,因此通過判斷語句if(p->next->data.Mount>10)來控制用戶修改租賃影碟的數量,如果要修改的影碟數量超過上限,則要求用戶重新輸入修改值,若沒有超過上限,則進行相關的操作。Ø 在顯示全部租賃者信息的函數void browsing(LinkList H)中,由于空表無法顯示信息,因此要對空表提示失敗信息,通過語句
44、p=H->next;if(p=NULL) printf("表為空!");來實現。Ø 在添加信息函數、刪除信息函數、修改信息函數、查找信息函數中,采用dowhile()語句提供用戶選擇是否繼續相關操作,開始while語句中的判斷條件為:x=Y|x=y;這樣的條件對于主函數中的switch語句中,系統將字符型數據默認為數值0,因此每次上述函數調用結束后,都只執行switch語句中case 0對應的語句;經過分析,對dowhile()語句判斷條件進行修改,判斷條件也改成輸入數字:printf("繼續* 8;其他數字退出*n請輸入:");和whi
45、le(x=8) 。Ø 在把內存里的鏈表信息以文本文件的形式寫入外存儲器時,對應的每個結點里的數據項應分別寫入,開始采用cddata.write(char*)&(p->data),sizeof(p->data);一次寫入文件,最后發現寫入的數據有些數據項為寫入,應將每個數據項單獨寫入,即改成:cddata.write(char*)&(p->data.Name),sizeof(p->data.Name);cddata.write(char*)&(p->data.Num),sizeof(p->data.Num);cddata.wr
46、ite(char*)&(p->data.Data),sizeof(p->data.Data);cddata.write(char*)&(p->data.Mount),sizeof(p->data.Mount)cddata.write(char*)&(p->data.Price),sizeof(p->data.Price);cddata.write(char*)&(p->data.CDData),sizeof(p->data.CDData);cddata.write(char*)&(p->data.CD
47、Name),sizeof(p->data.CDName) 。4.2對設計和編碼的討論和分析算法采用鏈表和數組來存儲數據,結點間為鏈表結構,結點內用數組來存儲租賃者名字、租賃日期和對應的租賃影碟的名字,由于租賃者名字、租賃日期和對應的租賃影碟的名字等信息長度較短,因此選擇數組來存儲,但是由于不同信息的長度不一樣,因此存在內存的浪費。租賃者的信息在程序開始需要用戶輸入,建立一個鏈表,以便在通過人機交互界面進行相關的操作,如果開始鏈表為空,顯然無法執行刪除操作、修改操作、查找操作、文件寫入操作和顯示操作。算法的時間復雜度為:O(n2)。5. 程序運行結果經過對程序錯誤的修改后,程序執行,經過分
48、析,程序運行結果正確,滿足題目要求!運行結果主要截圖如下:Ø 程序開始后,輸入增加租賃者數量為1,輸入姓名:蒲平,租借數量:1,押金:20,注冊時間:20110101,編號:1,租借時間:20110107,租借影碟名:哈利波特7。初始界面為:Ø 添加結束后,選擇1查詢,查詢按姓名,分別輸入:平平、蒲平,只有輸入蒲平時查詢成功;按編號,輸入:1、2,只有輸入1時查詢成功。查詢結果為:Ø 查詢結束后選擇2添加新的租賃者,增加姓名:韓江,租賃數目:1,注冊時間: 20110101,押金:20,編號:2,租借時間:20110109,影碟:天龍八部,結果為:Ø 添
49、加結束后,選擇3,對蒲平的租賃信息進行修改。增加一個租借影碟數目,租借時間為:20110705,名字:海上鋼琴師,結果如下:Ø 添加結束后,選擇5顯示全部租賃者信息:Ø 選擇6,按日期查詢。輸入查詢時間:20110101、20110107、20110109.結果為:Ø 繼續選擇4刪除,刪除韓江的信息:Ø 刪除韓江之后顯示鏈表信息:Ø 刪除韓江的租賃信息之后按日期查詢。輸入時間:20110101、20110107、20110109、20110705。結果為:6.經驗和體會6.1感受和體會面向對象程序設計這門課程是計算機專業一門基礎性學科,重要性可
50、見一般,學好這門課程對以后人生的發展具有深遠的影響。而課程設計便是對學習效果的檢驗。課程設計不僅可以鍛煉我們獨立思考問題、解決問題的能力,而且可以培養我們的整體性思維的能力;通過課程設計,加深了對面向對象程序設計的再認識,鞏固了面向對象程序設計基礎性知識,比如:存儲結構、數據查找、對用戶錯誤輸入的處理、算法分析等。這次課程設計,我明白了對于編寫程序,解題的思路尤為重要。在編寫程序之前,如果沒有比較清晰的思路,根本不可能編出好的程序。就算馬馬虎虎的編出來,程序的邏輯性、健壯性、完善性、合理性也不會很強。在編程之前,我們應反復研究題目要求,對題目涉及的情況進行比較充分的分析,以便編寫出更加符合題意
51、的程序;其次要充分考慮各種臨界情況,對一些錯誤的輸入進行處理。因此在我們編程序之前一定要做好充分的準備,首先要理清自己的思路,然后再將思路分劃成幾個模塊,逐塊的寫好算法,最后再將所有的模塊有機的聯系起來,組成一個完整的程序。在成功通過編譯的情況下,對程序運行的結果進行系統的分析,檢驗其正確性,如果有錯誤,應立即去分析源程序的邏輯錯誤,直到得到正確的結果。在程序編寫的過程中,不僅要對實際問題的各種情況進行充分完全的考慮和分析,還要對各種無法預期的輸入的處理,對于不正確的輸入應該進行相關的排錯處理,程序不僅培養我們的邏輯思維能力,還鍛煉我們整體考慮問題的能力,對解決實際問題應該考慮的方面,鍛煉了我
52、們思考問題的方式和嚴密性,開拓了思考問題的全面性能力。在這次課程設計的過程中,我也遇到了很多難題。在種種的困難中,我明白了在編寫程序時要有耐心。如果你沒有耐心,即使再好的算法思路也不會得到很好的表達,特別是在調試的過程中,對于各種各樣的錯誤,要特別的有耐心去自習分析原因,特別是一些基本的語法錯誤,不能一看到錯誤很多就亂了陣腳,更不能輕易的放棄,半途而廢。比如在調試中沒有定義某些變量的錯誤、基本的輸入輸出錯誤、數據選取不合理的錯誤、變量名前后不一的錯誤、函數返回值的錯誤等等。其實只要有耐心,你就會發現,在你修改了一個錯誤之后,其它有的錯誤也會跟著消失,所以在編譯的時候一定要有耐心。6.2對算法改進的想法本次程序設計采用的存儲結構為鏈表,這樣的存儲結構簡單易操作,節約存儲空間,但是在每個結點內有采用順序存儲結構來存儲租賃者名字、租賃日期和對應的租賃影碟的名字,由于租賃者名字、租賃日期和對應的租賃影碟的名字等信息長度較短,因此選擇數組來存儲,但是由于不同信息的長度不一樣,因此存在內存的浪費。因此可以將結點內的存儲結構也改成鏈式存儲,這樣便不會浪費存儲空間。算法中存在很多對用戶錯誤輸入的處理,有的處理存在雙重循環,在一定程度上增加了時間復雜度,因此可以對錯誤輸入進行再考慮,對主要錯誤輸入盡量用簡單的算法解決,盡量降低程序的時間復雜度。7.租賃信息鏈表內容和源程序7.1租
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農藝師考試要點突出總結試題及答案
- 優化解題思路福建事業單位考試試題及答案
- 2024年花藝師考試中的評審過程與考生心理素質的提升影響研究試題及答案
- 福建事業單位考試常見誤區試題及答案
- 應對考試的心態福建事業單位考試試題及答案
- 探討輔導員工作中開展心理健康教育的意義試題及答案
- 根軌跡法測試題及答案
- 2024年農藝師考試的研究方法與實踐轉換 全面試題及答案
- 農藝師備考強化記憶策略試題及答案
- 監理員面試試題及答案
- 廣東省深圳市2024年七年級下冊地理期中試卷附答案
- 2024年全民國家安全教育日知識競賽考試題庫300題(含答案)
- 艾滋病保密制度
- 兩位數乘一位數計算質量作業口算題
- 認知行為療法講解
- 史丹利行業分析
- 荒山綠化方案
- H3C全系列產品visio圖標庫
- 恩賜測試完整版本
- “科學與文化論著研習”任務群教學:以《改造我們的學習》為例
- canva可畫行業分析
評論
0/150
提交評論