




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘 要隨著社會的發展,人們的生活水平逐步得到提高,科學技術的應用也逐步在人們的生活中得到體現。網吧是社會發展的產物之一,它成為了人們業余休閑的又一個場所。網吧管理者要靠人力管理網吧里面眾多的電腦信息顯然很困難,而且存在很多缺陷。科學技術的不斷提高,計算機科學的日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著越來越重要的作用。 作為計算機應用的一部分,使用計算機對網吧的電腦信息進行管理,已成為了必然選擇。 With the social development and peoples living standards improved, science and tech
2、nology applications in peoples lives gradually be reflected. Internet cafes are a product of social development and it has been one of place where people spend their leisure time. It is clearly difficult that Internet cafe managers rely on human management to manage a large number of computers, and
3、there are many defects. With the continuous improvement of science and technology, computer science and the maturing of its powerful features for people to have a profound understanding. It has entered the human society in various fields and is playing an increasingly important role. As part of the
4、computer application, the use of the computer on the management of net-bars computer information has become an inevitable choice.1. 課程設計目的:1.1熟練掌握C語言課程中所學的理論知識;1.2通過綜合C語言的基本知識來解決實際問題;1.3加強分析和解決問題的能力。2. 課程設計題目描述和要求:2.1 題目描述:2.1.1 題目:網吧電腦管理系統。2.1.2 描述:在設計該程序時,要將系統的不同功能分成各個模塊,每個模塊由一個函數定義,整個程序由函數調用來實現。每
5、個模塊是一個子函數,由一個主函數調用各個子函數。在定義子函數時,根據其不同的功能來選擇不同的語句,需要使用循環是可以用“ dowhile ”來實現,需要使用選擇時可以用“ switch ”來實現,需要使用條件時可以用“ if ”來實現等。2.2 要求:2.2.1 電腦信息要求:電腦編號,購買時間,顯示器規格,是否帶攝像頭,每小時資費標準,當前占用情況(B-忙,S-閑)等。2.2.2 系統功能要求:、系統以菜單方式工作,管理員用密碼登陸。、新增電腦信息。 用數組數據類型賦初值的方法或從鍵盤輸入的方法把電腦信息送到各個數組中,然后把它們輸出顯示。、刪除電腦信息。 任意輸入一個電腦編號,將該電腦所有
6、的信息從數組中刪除。、查看電腦信息。 任意輸入一個電腦編號,打印出該電腦的所有相關數據。同時,能提供根據用戶要求的顯示器規格和攝像頭情況,查找未被占用的電腦。、修改電腦信息。 任意輸入一個電腦編號,打印出所有相關信息后,可對某一項信息進行修改并保存。、使用計費。 輸入一個用戶使用的電腦編號、時長,計算該用戶應支付的費用。3.課程設計內容:3.1 各個模塊設計的說明:3.1.1 定義相關變量和子函數的聲明 運用結構體定義每臺電腦的信息。“struct computer”結構體類型包括了每臺電腦不同類型的數據項(電腦編號,購買時間,顯示器規格,是否帶攝像頭,每小時資費標準,當前占用情況(B-忙,S
7、-閑)等);“struct buydate”結構體類型包括了購買時間的月、日、年,再套用到“struct computer”中。 對要調用的函數進行聲明#define N 15 /*定義電腦的臺數上限*/#include #include #include #include struct buydate /*定義結構體*/int month;int day;int year;struct computer /*定義結構體*/int num;struct buydate date;char display10;char camera;float fee;char condition;cmpN;
8、/*定義數組*/int cmp_count=0;/*子函數聲明*/void ma(); void add_cmp_info(); void search_cmp_info();void output_cmp_info();void omit_cmp_info();void motify_cmp_info();void cost_cmp_info();void go_out();3.1.2 主函數輸出顯示歡迎界面,通過函數getch(),printf(*)控制密碼的輸入輸出。密碼正確就進入菜單函數ma();密碼錯誤系統會提醒printf(nn密碼錯誤,按任意鍵重新返回輸入!),錯誤次數達三次時p
9、rintf(對不起!你輸入的密碼錯誤次數已達三次!你無權進入該系統!n),強制推出。 輸出歡迎畫面 j=0 開始循環 當j3 密碼輸入次數 i=0開始循環輸入密碼 strcmp(pass,123456)=0 假 真 密碼錯誤, ma() 重新輸入。 錯誤次數達三次,無權進入。void main() int i,j;char pass10;for(j=0;j3;j+)system(cls); /*清屏*/system(color b0); /*系統背景顏色*/printf(nnnnnn);printf(ttn);printf(tt=n);printf(tt n);printf(tt1 3 歡迎進
10、入網吧電腦管理系統 3 1n); printf(tt n);printf(tt=n);printf(ttn);printf(nn);printf(請輸入登陸密碼:);fflush(stdin);for(i=0;i6;i+) passi=getch(); /*輸入密碼并控制其輸出為星號*/printf(*);pass6=0;if(strcmp(pass,123456)=0) /*判斷輸入密碼是否正確*/ma();else printf(nn密碼錯誤,按任意鍵重新返回輸入!); getch();printf(n);printf(對不起!你輸入的密碼錯誤次數已達三次!你無權進入該系統!n);3.1.
11、3 新增數據函數 while(cont=y | cont=Y) 輸入編號 輸入購買日期 輸入顯示器規格 輸入攝像頭有無 輸入資費標準 輸入占用情況 是否繼續新增cont y/Y =getch() n/N add_cmp_info() ma() 整體用循環結構dowhile 來實現。一組數據輸入完后printf(是否繼續新增?(y/n),判斷while(cont=y | cont=Y)繼續輸入數據。 void add_cmp_info() int i;char cont;system(cls);doprintf(請輸入你要新增的電腦的編號:n); scanf(%d,&i); fflush(std
12、in);cmpi-1.num=i; /*i-1為指針后移*/printf(請輸入第%d臺電腦的購買時間(月,日,年):,i);scanf(%d,%d,%d,&cmpi-1.date.month,&cmpi-1.date.day,&cmpi-1.date.year);fflush(stdin);printf(請輸入第%d臺電腦的顯示器規格(yj17/19或cp17/19):,i);scanf(%s,&cmpi-1.display);fflush(stdin);printf(請輸入第%d臺電腦是否有攝像頭(Y/N):,i);scanf(%c,&cmpi-1.camera);fflush(stdin
13、);printf(請輸入第%d臺電腦的收費標準:,i);scanf(%f,&cmpi-1.fee);fflush(stdin);printf(請輸入第%d臺電腦的占用狀態(S-閑,B-忙):,i);scanf(%c,&cmpi-1.condition); fflush(stdin);printf(是否繼續新增?(y/n)n);fflush(stdin);cont=getchar();while(cont=y | cont=Y); /*判斷是否繼續新增,不分大小寫*/printf(nnn按任意鍵返回菜單。);getch();ma(); /*調用子函數返回主菜單*/各臺電腦的信息如下for(i=0
14、;iN;i+)No.buydatedispalycamerafee condition 按任意鍵getch() ma()3.1.4 顯示數據函數 通過for循環輸出N臺電腦的數據。void ouput_cmp_info() int i;system(cls);printf(n);printf(tt各臺電腦的信息如下:n);printf(No.tbuydatet dispalytcameratfeetconditionn);printf(-n);printf(n);for(i=0;iN;i+)printf(%dt%d-%d-%dt%st%ct%.1ft%cn,cmpi.num,cmpi.date
15、.month,cmpi.date.day,cmpi.date.year,cmpi.display,cmpi.camera,cmpi.fee,cmpi.condition); /*按數組順序依次輸出數據*/printf(nn按任意鍵返回菜單。);getch();ma(); /*調用子函數返回主菜單*/3.1.5 查找數據函數 首先顯示查找菜單界面,查找方式分為兩種:一種是編號查找,一種是要求查找,用選擇結構switch 語句來實現選擇。case 1 編號查找中套用if 語句判斷輸入的編號是否在電腦N上限內,再用for循環找出匹配電腦;case 2 要求查找整體運用for 循環語句和if判斷語句,
16、for循環中再套用if語句和for語句來判斷查找條件是否匹配和找出匹配的電腦,其中定義了一個count記錄找到的匹配電腦的數目,if(count=0)則沒有匹配的電腦。每個case 中是否繼續查找就用自我套用函數search_cmp_info()來實現。 查找菜單 case 1 case 2編號查找num 要求查找displayif(numN) camerafor(i=0;iN;i+) for(i=0;iN;i+)if(cmpi.num=num) if(條件滿足)輸出cmpi各信息 輸出cmpi各信息 是否繼續查找 count+ cont=getch() if(cont=y|cont=Y)se
17、arch_cmp_info()else if(count=0) 無匹配電腦ma() void search_cmp_info()int num;int i,j,flag,count=0;char display10;char cont,camera;system(cls);printf(n);printf(tt*查找菜單*n);printf(tt 1.選擇電腦編號查找方式n);printf(tt 2.選擇根據要求查找方式n);printf(請選擇查找的方式:);scanf(%d,&flag); /*選擇變量*/switch(flag)case 1:printf(tt請輸入你要查找的電腦編號:)
18、;scanf(%d,&num);if(numN) /*編號在查找范圍內就執行*/printf(No.tbuydatetdispalytcameratfeetconditionn); printf(-n); printf(n); for(i=0;iN;i+)if(cmpi.num=num) /*找出要查找編號的電腦信息*/ printf(%dt%d-%d-%dt%st%ct%.1ft%cn,cmpi.num,cmpi.date.month,cmpi.date.day,cmpi.date.year,cmpi.display,cmpi.camera,cmpi.fee,cmpi.condition);
19、printf(n); printf(請問你是否繼續查找(y/n):); cont=getch(); printf(%c,cont);printf(n);if(cont=y|cont=Y)search_cmp_info(); /*函數自我套用,達到循環作用*/elseprintf(nn對不起!無法找到你要查找的電腦編號n); printf(nn按任意鍵返回菜單); getch(); ma();break;case 2:printf(tt請輸入你要查找的電腦的要求(如:yj17或cp17):);scanf(%s,&display);fflush(stdin);printf(tt你要的電腦需要攝像頭
20、不(Y/N)?:);scanf(%c,&camera);fflush(stdin);printf(nn);for(i=0;iN;i+) if(strcmp(cmpi.display,display)=0&(cmpi.camera=camera)&(cmpi.condition=S|cmpi.condition=s) /*匹配條件*/count+; /*記錄匹配電腦數目*/printf(tt第%d臺機子符合要求n,cmpi.num); printf(No.tbuydatetdispalytcameratfeetconditionnprintf(-n); /*輸出匹配電腦的信息*/for(j=0;
21、jN;j+)if(cmpj.num=cmpi.num) printf(%dt%d-%d-%dt%st%ct%.1ft%cn,cmpi.num,cmpi.date.month,cmpi.date.day,cmpi.date.year,cmpi.display,cmpi.camera,cmpi.fee,cmpi.condition);printf(n);printf(請問你是否繼續查找(y/n):);cont=getch();printf(%c,cont);printf(n);if(cont=y|cont=Y) /*是否繼續查找*/search_cmp_info(); /*函數自我套用達到循環*/
22、 printf(n); if(count=0) /*匹配電腦不存在*/printf(nn對不起!無法找到你要查找的電腦編號n);printf(nn按任意鍵返回菜單);getch();ma(); /*調用子函數返回主菜單*/break;printf(nn);printf(按任意鍵返回菜單。);getch();ma(); /*調用子函數返回主菜單*/ 3.1.6 刪除數據函數用if語句判斷輸入的編號是否在范圍內,再用for 語句找出要刪除的電腦信息,進行刪除。其中還用到了一個if語句用來確認是否輸入 If(numN) if(judge=Y|judge=y) for(j=0;jN;j+) 刪除信息
23、ma() if(judge=N|judge=n) ma() elsema()無誤,刪除部分數據是數字的就賦值味“0”,是單個字符的就賦值為空格,字符串就用strcpy復制函數覆蓋原有的字符串。void omit_cmp_info()int j,num;char judge;system(cls);printf(請輸入你要刪除的電腦的編號:n);fflush(stdin);scanf(%d,&num);printf(n);if(numN) /*編號在查找范圍內就執行*/ printf(你確定要刪除的電腦信息的編號是%d嗎?(Y/N)n,num); fflush(stdin); scanf(%c,
24、&judge); if(judge=Y|judge=y) /*確認輸入無誤*/ for(j=0;jN;j+) if(cmpj.num=num) /*找出匹配電腦*/ cmpj.num=0; cmpj.date.month=0; cmpj.date.day=0; cmpj.date.year=0; strcpy(cmpj.display, ); cmpj.camera= ; cmpj.fee=0; cmpj.condition= ; printf(tt刪除完成n); printf(nn按任意鍵返回菜單); getch(); ma(); /*調用子函數返回主菜單*/ if(judge=N|judg
25、e=n) printf(nn按任意鍵返回菜單); getch(); ma(); /*調用子函數返回主菜單*/ elseprintf(nn對不起!無法找到你要刪除的電腦編號n);printf(nn按任意鍵返回菜單);getch(); 輸入要修改的電腦編號num1 for(i=0;iN;i+)if(cmpi.num=num1)輸出該電腦的信息修改項目Switch(flag)case 1 case 2 for(i=0;iN;i+)case 3case 4 if(cmpi.num=num1)case 5 case 6 相應項目的修改default break 是否繼續修改Y/y N/nmodify m
26、a()ma(); /*調用子函數返回主菜單*/3.1.7 修改數據函數輸入要修改電腦的編號(dowhile),選擇要修該的項目(switch語句),修改相關選項(case),修改完后選擇是否繼續修改(while)。void modify_cmp_info()int i,flag,num1;int num2;int month,day,year;char display10;char camera;float fee;char condition;char cont;system(cls);doprintf(tt請輸入你要修改電腦信息的電腦編號:);scanf(%d,&num1);printf(
27、nn該電腦原有信息如下:n); printf(No.tbuydatet dispalytcameratfeetconditionn); printf(-n); printf(n);for(i=0;iN;i+)if(cmpi.num=num1) /*編號的匹配*/printf(%dt%d-%d-%dt%st%ct%.1ft%cn,cmpi.num,cmpi.date.month,cmpi.date.day,cmpi.date.year,cmpi.display,cmpi.camera,cmpi.fee,cmpi.condition); /*輸出匹配電腦的原有信息*/printf(nn);prin
28、tf(tt電腦信息修改的項目如下:n);printf(tt 1.No.n);printf(tt 2.buydaten);printf(tt 3.displayn);printf(tt 4.cameran);printf(tt 5.feen);printf(tt 6.conditionn);printf(tt請選擇你要修改的項目:);scanf(%d,&flag);fflush(stdin);switch(flag) /*選擇修改項目*/case 1:printf(請輸入改動的電腦編號:);scanf(%d,&num2);for(i=0;iN;i+)if(cmpi.num=num1)cmpi.n
29、um=num2;break;case 2:printf(請輸入改動的日期(月/日/年):);scanf(%d,%d,%d,&month,&day,&year);for(i=0;iN;i+)if(cmpi.num=num1)cmpi.date.month=month; cmpi.date.day=day; cmpi.date.year=year;break;case 3:printf(請輸入改動電腦的類型:);scanf(%s,&display);for(i=0;iN;i+)if(cmpi.num=num1) strcpy(cmpnum1-1.display,display);break;cas
30、e 4:printf(請輸入有無攝像頭:);scanf(%c,&camera);for(i=0;iN;i+)if(cmpi.num=num1) cmpnum1-1.camera=camera;break;case 5:printf(請輸入該臺電腦的收費(每小時)標準:);scanf(%f,&fee);for(i=0;iN;i+)if(cmpi.num=num1) cmpnum1-1.fee=fee;break;case 6:printf(請輸入該臺電腦的狀態(B-忙,S-閑):);scanf(%c,&condition);for(i=0;iN;i+)if(cmpi.num=num1) cmpn
31、um1-1.condition=condition;break; default: printf(輸入出錯!n);printf(是否繼續修改?(y/n):);fflush(stdin);cont=getchar();while(cont=y | cont=Y);printf(nnn按任意鍵返回菜單。);getch();ma();3.1.8 計費函數輸入電腦編號和時長 cost=cmpnum-1.fee*time 是否繼續Y/y N/ncost_cmp_info() ma() 輸入電腦編號和時長,用乘法將運算結果賦值給cost,輸出cost。是否繼續計算其它電腦的費用(dowhile)。void
32、 cost_cmp_info()char cont;int num;float cost=0,time;doprintf(請輸入用戶使用的電腦編號和時長:); scanf(%d,%3f,&num,&time); cost=cmpnum-1.fee*time; printf(該用戶需要支付%.1f元!n,cost); printf(是否繼續輸入?(y/n):);fflush(stdin);cont=getchar();while(cont=y | cont=Y);printf(nnn按任意鍵返回菜單。);getch();ma();3.1.9 退出系統函數 該子函數在菜單函數中被套用,從而推出系統
33、exit(0)。 退出界面exit() 退出系統void go_out() system(cls);printf(nnnn);printf(ttn);printf(tt=n);printf(tt n);printf(tt 謝謝您使用電腦信息管理系統! n);printf(tt n);printf(tt * n);printf(tt n);printf(tt=n);printf(ttn);printf(n);exit(0);3.1.10 菜單函數輸出選擇菜單i=1 i=2 i=3 i=4 i=5 i=6 i=7 default add search ouput omit modify cost
34、go_out ma() 顯示出各個菜單選項,用switch語句選擇各菜單,case 中調用相應的子函數。當選擇菜單編號不存在時,提示輸入出錯,自我套用返回菜單函數。void ma() int i;system(cls);printf(n);printf(ttn);printf(tt*n);printf(tt n);printf(tt 選 擇 菜 單 n);printf(tt n);printf(tt 1.新增電腦信息 n);printf(tt 2.查找電腦信息 n);printf(tt 3.顯示電腦信息 n);printf(tt 4.刪除電腦信息 n);printf(tt 5.修改電腦信息 n
35、);printf(tt 6.使用計費情況 n);printf(tt 7.退出系統 n);printf(tt n);printf(tt n);printf(tt*n);printf(ttn);printf(n);printf(選擇菜單(1-7):);scanf(%d,&i);switch(i) case 1:add_cmp_info();break;case 2:search_cmp_info();break; case 3:ouput_cmp_info();break;case 4:omit_cmp_info();break;case 5:modify_cmp_info();break;cas
36、e 6:cost_cmp_info();break; case 7:go_out();break;default: printf(輸入出錯!按任意鍵返回菜單輸入。n);getch();ma();3.2 程序的調試、錯誤分析和完善密碼登陸的調試:以密碼輸入進入系統,密碼正確就進入到主菜單畫面,調試時故意輸入錯誤的密碼,會返回到密碼登陸畫面,無論密碼錯誤幾次都可以,考慮到實際應用密碼錯誤的次數應有限度,在此我運用for 循環控制次數,當密碼登陸界面出現三次后,自動跳出for循環,輸出對不起!你輸入的密碼錯誤次數已達三次!你無權進入該系統!然后強制推出。新增數據的調試:起初我是用for循環依次輸入各
37、臺電腦的相關信息,調試時發現信息的輸入必須按順序依次輸入,一旦刪除了中間的某臺電腦的信息,想要添加新的電腦信息在該數組名中就不能了。針對這一點,我后來改用dowhile循環來完善,編號不是數組名的序列號(cmpi-1.num=i),編號是獨立出來的一組信息,想在哪個空電腦信息的數組上新增都可以編號與數組名的序列號不一定要對應,后面的修改函數還會考慮到這一點。顯示數據的調試:運行顯示菜單,問題出現了很多,費用標準項目顯示的是0.000000,小數點后面的零太多,還有顯示器規格只顯示第一個字母,看來是輸入輸出數據的占位符用錯,將顯示函數中的%f改為%.1f,%c改為%s后問題都解決了。查找數據的調試:運行查找菜單,根據要求查找時,出現條件無法匹配的狀況,原來字符串的對比要用到字符串比較函數strcmp,單個字符用“=”。而且考慮到實際應用中可能出現連續查找的情況,我在兩種查找方式后面增加了一個本身函數的調用來達到循環查找。刪除數據的調試:就只是出現編號和數組名組列號混淆的情況,后來將兩者獨立出來后問題得以解決。考慮到實際操作時可能第一次輸入編號錯誤的情況,在此我用if條件語句增加了確認一項。修改數據的調試:編號的問題在前面其它菜單的調試問題中提到了,修改方法一樣。另外出現了電腦顯示器項目無法修改的問題,原來我將空格賦給原字符串是用的單引號空格,而且不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股票交易成功的秘訣:課件教你精準把握買賣時機下載量破萬
- 高速公路路面施工案例分析:典型課件講解
- 2025年拉薩從業資格證模擬考試-貨運從業資格證考試
- 武昌首義學院《基礎日語上》2023-2024學年第一學期期末試卷
- 南京體育學院《材料加工基礎熱處理原理》2023-2024學年第二學期期末試卷
- 山西省上黨聯盟2024-2025學年高三下學期期末質量檢查英語試題理試題含解析
- 石家莊人民醫學高等專科學校《機場信息系統》2023-2024學年第二學期期末試卷
- 唐山學院《建設工程計量》2023-2024學年第二學期期末試卷
- 上海市浦東新區第一教育署市級名校2025屆初三六校第二次聯考生物試題試卷含解析
- 金華市浦江縣2024-2025學年數學五下期末調研模擬試題含答案
- GA/T 1047-2013道路交通信息監測記錄設備設置規范
- 第一輪復習八年級上第二單元 遵守社會規則 教學案
- 代理授權書模板
- 論語子路篇-論語子路篇講解課件
- 咯血-護理查房課件
- 公路工程施工現場安全檢查手冊
- 黃河上游歷史大洪水市公開課金獎市賽課一等獎課件
- 激光跟蹤儀使用手冊
- 貨物采購服務方案
- 圖紙答疑格式
- DB11-T 1322.64-2019 安全生產等級評定技術規范 第64部分:城鎮供水廠
評論
0/150
提交評論