




已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言飯卡管理系統(tǒng),代碼超簡單,純c語言基礎(chǔ)知識,本人大一時期自己打的代碼與實驗報告(作圖是直接word,可直接修改,不需安裝visio),上傳只為賺取百度財富值,支持原創(chuàng),請勿下載后再傳播,謝謝!目 錄第1部分 實訓(xùn)題目與要求21. 問題提出22. 功能要求2第2部分 設(shè)計實訓(xùn)題目功能31. 總體設(shè)計32. 算法設(shè)計33. 數(shù)據(jù)結(jié)構(gòu)84. 程序代碼設(shè)計85. 測試與調(diào)試20第3部分 實訓(xùn)總結(jié)211. 個人總結(jié)212. 結(jié)束語21附錄A 程序清單21附錄B 用戶使用說明書35參考文獻36C程序設(shè)計綜合實踐評分表37第1部分 實訓(xùn)題目與要求1. 問題提出學(xué)校等大單位的集體食堂買飯時間非常集中,這時如果飯?zhí)檬褂蔑埰辟I飯,大家就得排長隊等候,而且還要經(jīng)過先去買飯票等麻煩的經(jīng)歷。因此食堂提出使用計算機進行管理,食堂用飯卡買飯,不僅提高了買飯的速度,還更易于管理,減少不必要的麻煩,同時減輕管理人員的工作負擔(dān)。2. 功能要求重復(fù)顯示以下的主菜單,在主菜單中任意選擇一項,均實現(xiàn)其相應(yīng)的功能. 請輸入選擇編號(0-7) . 1、建立飯卡文件 2、買飯 3、續(xù)錢 4、添加新飯卡 5、注銷舊飯卡 6、設(shè)置與解除掛失 7、遍歷 0、退出系統(tǒng) .在主菜單中選擇1:建立名為card.dat的文件,并在其中添加若干人的飯卡號、姓名、金額、掛失信息,要求飯卡號是唯一的。在主菜單中選擇2:要求用戶輸入飯卡號、飯費,然后系統(tǒng)自動從該人的飯卡減去飯錢并分別顯示飯卡前后的金額,如果原來飯卡中的余額不足5元,則你不能買飯,而且顯示“余額不足,請續(xù)錢”,如果掛失信息為真,則顯示“本卡已凍結(jié)”。在主菜單中選擇4:添加新飯卡,此時要求新飯卡卡號和已有的飯卡號不能重號。在主菜單中選擇5:注銷舊飯卡。在主菜單中選擇6:要求用戶輸入飯卡號和掛失信息,然后更新該飯卡的掛失信息。在主菜單中選擇7:遍歷,使用該功能查出你飯卡的余額和查詢個人的信息。在主菜單中選擇0:顯示結(jié)束信息“感謝使用本文件!已正常退出,按任意鍵束?!?第2部分 設(shè)計實訓(xùn)題目功能1. 總體設(shè)計 各函數(shù)的主要功能:main函數(shù):顯示主菜單;void create()函數(shù):創(chuàng)建名為card.dat的飯卡文件,建立個人飯卡信息;void buy()函數(shù):買飯,并在飯卡中扣除飯錢,如有不足五元的顯示“余額不足,請續(xù)錢”;void con()函數(shù):續(xù)錢,輸入續(xù)錢金額并在成功續(xù)錢后顯示續(xù)錢前和續(xù)錢后的金額;void add()函數(shù):添加新飯卡;void mov()函數(shù):注銷舊飯卡;void set()函數(shù):更新飯卡的更新信息,包括掛失和解除掛失;void bianli()函數(shù):訪問飯卡文件的內(nèi)容;主函數(shù) addconbuysetmovcreatbianlii 2. 算法設(shè)計 (1)主函數(shù)(main函數(shù))。顯示主菜單,通過輸入不為0的choice而實現(xiàn)各函數(shù)的功能 顯示主菜單輸入choicechoice!=0? NYreturn 0 (2)void creat()函數(shù),在輸入個人飯卡信息的時候同時判斷飯卡號是否符合要求num=pow(10,15)并檢查其中的卡號是否重合了,該函數(shù)主要是為了將個人的飯卡信息寫入文件中。 打開文件 num!=0? N Y 輸入飯卡信息 將飯卡信息讀入文件中去 、 關(guān)閉文件 (3)void buy()函數(shù),輸入飯前后顯示飯卡余額。 打開文件 輸入卡號 flag=-1? N Y studentflaginfo=1? Y 輸出“本卡已凍結(jié)” N studentflag.moneymtemp? Y 顯示付錢前后的金額 N 輸出“余額不足,請續(xù)錢” 并返回主菜單 關(guān)閉文件(4)con函數(shù)的主要功能是為了續(xù)錢,在續(xù)錢后顯示續(xù)錢前后的飯卡金額。 打開文件 i=0? Y 輸出請先建立飯卡文件! N 輸入卡號 flag=-1? Y “找不到該卡!請重新輸入你的卡號” N Y flag=-1? N S=0? Y 完成續(xù)錢 N 輸出“此卡已經(jīng)凍結(jié)!” 關(guān)閉文件(5)void add()函數(shù)的主要功能是添加新飯卡。 i=0? 輸出“數(shù)據(jù)庫已滿” 打開文件 將個人飯卡信息寫入文件 a=1? 將飯卡信息寫入文件 關(guān)閉文件(6)void mov()函數(shù)的主要功能是為了注銷已經(jīng)不用的飯卡。 打開文件 i=0? Y 輸出“請先建立飯卡文件!” N 輸入飯卡號 flag=-1? Y 輸出“此卡不存在!請重新輸入” NY flag=-1? N 進行移除 將飯卡信息重新寫入文件 關(guān)閉文件(7)void set()函數(shù)的主要功能是為了設(shè)置掛失信息,包括注銷掛失和掛失。 打開文件 i=0? 輸出“請先建立飯卡文件!” 打開文件 輸入卡號 flag=-1? Y 輸出“請先建立飯卡文件!” N Y flag=-1? N 更新掛失信息 重新將飯卡信息寫入文件 關(guān)閉文件(7)void bianli()函數(shù)的主要功能是為了查詢飯卡文件中的信息。 打開文件 從文件中讀入飯卡信息 讀出飯卡信息 關(guān)閉文件3. 數(shù)據(jù)結(jié)構(gòu)struct carddouble num; int info; /表示掛失信息,info=0表示沒有掛失,info=1表示已經(jīng)掛失char name20;double money;student100;在程序首部中定義了一個名為“card”的結(jié)構(gòu)類型,其中的成員分別代表學(xué)生飯卡的基本信息項。int i=0,info;double num;char name20;double money;FILE *fp;在程序首部定義了各項的全局變量,其中包括由int類型定義的變量i和info,分別代表人數(shù)和掛失信息(info=0表示沒有掛失,info=1表示已經(jīng)掛失);double類型定義的變量num和money,分別表示飯卡號和飯卡金額;char類型定義的數(shù)組變量name,表示學(xué)生飯卡的名字;定義文件指針 *fp,用于對文件的操作。4. 程序代碼設(shè)計本程序中共調(diào)用了七個函數(shù),分別為void creat(),void buy(),void con(),void add(),void mov(),void set(),void bianli()。主函數(shù)的代碼如下:int main(void)int choice;do printf(.n); printf( 請輸入選擇編號(0-7) n); printf(.n); printf( 1、建立飯卡文件 n); printf( 2、買飯 n); printf( 3、續(xù)錢 n); printf( 4、添加新飯卡 n); printf( 5、注銷舊飯卡 n); printf( 6、設(shè)置與解除掛失 n); printf( 7、遍歷 n); printf( 0、退出系統(tǒng) n); printf(.n); scanf(%d,&choice); switch(choice) case 0:printf(感謝使用本軟件!已正常退出,按任意鍵結(jié)束n);break; case 1:creat();break; case 2:buy();break; case 3:con();break; case 4:add();break; case 5:mov();break; case 6:set();break;case 7:bianli();break; default:exit(0);while(choice!=0);return 0;void creat()函數(shù)的代碼如下:printf(當(dāng)輸入的卡號為0時停止輸入飯卡信息n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n);scanf(%lf,&num);while(num!=0)while(numpow(10,15)printf(你輸入的卡號超過15位數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num);while(num=0)printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num); studenti.num=num;printf(請輸入你的姓名n); scanf(%s,name);strcpy(,name);printf(請輸入你的飯卡錢n);scanf(%lf,&money);while(money0)printf(輸入的金額必須為正數(shù)!n); printf(請輸入你的飯卡錢n); scanf(%lf,&money);studenti.money=money;printf(請輸入你的掛失信息(0表示沒有掛失,1表示已經(jīng)掛失):n);scanf(%d,&info);=info; fprintf(fp,%.0f%s%.0f%dn,studenti.num,,studenti.money,); i+;do printf(請輸入你的卡號n); scanf(%lf,&num);for(k=0;kpow(10,15)printf(你輸入的卡號超過15位數(shù)!n);printf(請輸入你的卡號,而且卡號不得超過15位數(shù):); scanf(%lf,&num1); while(num10)printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù):); scanf(%lf,&num1); for(j=0;ji;j+)if(studentj.num=num1) flag=j;break; if(flag=-1) /查明是否有該卡count+; printf(找不到該卡!請重新輸入你的卡號:n); if(count=5)printf(你輸入的無效卡號已經(jīng)達到5次,系統(tǒng)將自動返回主菜單!n);return;while(flag=-1);if(=1)printf(本卡已凍結(jié)。n);return;elseif(studentflag.money5)printf(余額不足,請續(xù)錢。n);return;elseprintf(請輸入你的飯費:);scanf(%lf,&mtemp); while(mtempmtemp)printf(之前:%.2f money.n,studentflag.money);studentflag.money=studentflag.money-mtemp;printf(之后:%.2f money.n,studentflag.money); for(k=0;kpow(10,15)printf(你輸入的卡號超過15位數(shù)!n);printf(請輸入你的飯卡號,而且卡號不得超過15位數(shù):); scanf(%lf,&num2); while(num20)printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的飯卡號,而且卡號不得超過15位數(shù):); scanf(%lf,&num2); for(k=0;ki;k+) if(studentk.num=num2) flag=k; break; if(flag=-1) /查明是否有該卡 count+; printf(找不到該卡!請重新輸入你的卡號:n); if(count=5)printf(你輸入的無效卡號已經(jīng)達到5次,系統(tǒng)將自動返回主菜單!n);return;while(flag=-1); if(=0) printf(請輸入你的續(xù)錢額:); scanf(%d,&conmoney); while(conmoney0)printf(輸入的金額必須為正數(shù)!n); printf(請輸入你的續(xù)錢額:); scanf(%d,&conmoney); printf(之前:%.2f money.n,studentflag.money); studentflag.money=studentflag.money+conmoney; printf(之后:%.2f money.n,studentflag.money); for(k=0;kpow(10,15) printf(你輸入的卡號超過15位數(shù)!n);printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num); while(num0) printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num); for(k=0;ki;k+) if(studentk.num=num)a=1;count+;printf(此號已經(jīng)被注冊了!請重新輸入:n);break;else a=0; if(count=5) printf(你輸入的無效卡號已經(jīng)達到5次,系統(tǒng)將自動返回主菜單!n); return;while(a=1);studenti.num=num;printf(請輸入你的姓名n);scanf(%s,name); strcpy(,name);printf(請輸入你的飯卡錢n);scanf(%lf,&money); while(money0)printf(輸入的金額必須為正數(shù)!n);printf(請輸入你的飯卡錢n); scanf(%lf,&money);studenti.money=money;printf(請輸入你的掛失信息(0表示沒有掛失,1表示已經(jīng)掛失):n);scanf(%d,&info);=info;for(k=0;kpow(10,15) printf(你輸入的卡號超過15位數(shù)!n);printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num3); while(num30)printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num3); for(j=0;ji;j+) if(studentj.num=num3) i-; flag=j; break; if(flag=-1) /查明是否有該卡count+; printf(此卡不存在!請重新輸入:n);if(count=5)printf(你輸入的卡號已經(jīng)輸入超過5次,系統(tǒng)將自動返回主菜單!n);return;while(flag=-1);for(k=flag;ki;k+)studentk=studentk+1;for(k=0;kpow(10,15)printf(你輸入的卡號超過15位數(shù)!n);printf(請輸入你的飯卡號,而且卡號不得超過15位數(shù):n); scanf(%lf,&num4); while(num40)printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的飯卡號,而且卡號不得超過15位數(shù):n); scanf(%lf,&num4); for(m=0;mi;m+) if(studentm.num=num4) flag=m; break; if(flag=-1)/查明是否有該卡count+; printf(找不到該卡!請重新輸入:n); if(count=5)printf(你輸入的卡號已經(jīng)輸入超過5次,系統(tǒng)將自動返回主菜單!n);return; while(flag=-1);printf(請輸入你要修改的掛失信息(info=0表示沒有掛失,info=1表示已經(jīng)掛失):n);scanf(%d,&info1); =info1; for(k=0;ki;k+)fprintf(fp,%.0f%s%.0f%dn,studentk.num,,studentk.money,);void set()此函數(shù)為“設(shè)置與解除掛失”,此函數(shù)主要是將所要掛失的用戶,把其數(shù)據(jù)中“info”掛失信息的值“0”(未掛失)改為“1”(已掛失)。函數(shù)首先判斷是否存在該卡號,若存在,將對數(shù)據(jù)進行操作;否則,程序?qū)⑼瞥鱿到y(tǒng)。void bianli()的主要代碼如下:if(i=0)printf(請先建立飯卡文件!n);return;for(l=0;li;l+)fscanf(fp,%lf%s%lf%d,&studentl.num,,&studentl.money,&);if(studentl.num=0)continue;fprintf(%.0f%s%.0f%dn,studentl.num,,studentl.money,);void bianli()此函數(shù)為“遍歷”,主要是將文本的數(shù)據(jù)輸出,再顯示在屏幕上。完整程序請參見附錄A5. 測試與調(diào)試 表1 測試用例測試數(shù)據(jù)類型測試數(shù)據(jù)預(yù)期結(jié)果實測結(jié)果合法數(shù)據(jù)首先輸入1,然后輸入7 輸入各項信息,讀入文件,然后在屏幕顯示飯卡信息 在屏幕上顯示飯卡信息 在沒有建立飯卡文件時,輸入7會在屏幕顯示上次所記錄的飯卡信息屏幕上無顯示非法數(shù)據(jù)輸入卡號時,若輸入的是字母 會顯示由字母構(gòu)成的卡號 形成死循環(huán) 輸入飯卡金額時,若輸入的是字母會顯示由字母構(gòu)成的金額形成死循環(huán)第3部分 實訓(xùn)總結(jié)1. 個人總結(jié)2. 結(jié)束語附錄A 程序清單#include#include#include#includestruct carddouble num; int info; /表示掛失信息,info=0表示沒有掛失,info=1表示已經(jīng)掛失char name20;double money;student100;void creat(); /創(chuàng)建文件void buy(); /買飯void con(); /續(xù)錢void add(); /添加新飯卡void mov(); /注銷舊飯卡void set(); /設(shè)置與解除掛失void bianli(); /遍歷int i=0,info;double num;char name20;double money;FILE *fp;int main(void)int choice;do printf(.n); printf( 請輸入選擇編號(0-7) n); printf(.n); printf( 1、建立飯卡文件 n); printf( 2、買飯 n); printf( 3、續(xù)錢 n); printf( 4、添加新飯卡 n); printf( 5、注銷舊飯卡 n); printf( 6、設(shè)置與解除掛失 n); printf( 7、遍歷 n); printf( 0、退出系統(tǒng) n); printf(.n); scanf(%d,&choice); switch(choice) case 0:printf(感謝使用本軟件!已正常退出,按任意鍵結(jié)束n);break; case 1:creat();break; case 2:buy();break; case 3:con();break; case 4:add();break; case 5:mov();break; case 6:set();break;case 7:bianli();break; default:exit(0);while(choice!=0);return 0;void creat()int a=0,k;i=0;if(fp=fopen(card.dat,w+)=NULL)printf(File open error!n);exit(0);printf(當(dāng)輸入的卡號為0時停止輸入飯卡信息n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n);scanf(%lf,&num);while(num!=0)while(numpow(10,15)printf(你輸入的卡號超過15位數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num);while(num=0)printf(輸入的飯卡號不能為負數(shù)!n); printf(請輸入你的卡號,而且卡號不得超過15位數(shù)n); scanf(%lf,&num); studenti.num=num;printf(請輸入你的姓名n); scanf(%s,name);strcpy(,name);printf(請輸入你的飯卡錢n);scanf(%lf,&money);while(money0)printf(輸入的金額必須為正數(shù)!n); printf(請輸入你的飯卡錢n); scanf(%lf,&money);studenti.money=money;printf(請輸入你的掛失信息(0表示沒有掛失,1表示已經(jīng)掛失):n);scanf(%d,&info);=info; fprintf(fp,%.0f%s%.0f%dn,studenti.num,,studenti.money,); i+;do printf(請輸入你的卡號n);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 患者健康教育方法及技巧
- 老年健康主題演講大綱
- 初中吸煙危害認知與預(yù)防教育
- 健康教育生命教育
- 社戲教學(xué)課件
- 線上教學(xué)反饋課件
- 音樂教學(xué)原創(chuàng)課件圖譜
- 排澇站可行性研究報告
- 教學(xué)課件素材溫柔文案
- 學(xué)校中層干部述職會上校長講話:把職責(zé)扛穩(wěn)把問題剖深把實干抓實
- 直播基地場地管理制度
- 2025年江蘇省公務(wù)員錄用考試公安專業(yè)科目試卷
- 2025-2030年中國空調(diào)行業(yè)市場深度調(diào)研及競爭格局與投資研究報告
- 北京市2025年第一次普通高中學(xué)業(yè)水平合格性考試政治試題(原卷版)
- 2025年天津市南開區(qū)普通高中學(xué)業(yè)水平合格性考試數(shù)學(xué)模擬試題(解析版)
- 2025年陜西、山西、青海、寧夏高考物理試卷真題(含答案解析)
- 2025年心理咨詢師資格考試試題及答案
- 內(nèi)蒙古自治區(qū)赤峰市2023-2024學(xué)年高二下學(xué)期7月期末聯(lián)考數(shù)學(xué)試題 含解析
- 2022-2023學(xué)年廣東省廣州市番禺區(qū)四年級下學(xué)期期末語文真題及答案
- 葉酸培訓(xùn)考試題及答案
- 大慶護理面試題及答案
評論
0/150
提交評論