




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
蘇州市職業(yè)大學(xué)實(shí)習(xí)(實(shí)訓(xùn))報(bào)告名稱程序邏輯設(shè)計(jì)與編程規(guī)范實(shí)訓(xùn)2014年6月8日至學(xué)院(部)計(jì)算機(jī)工程學(xué)院班級(jí)計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)姓名xxxxx學(xué)院(部)負(fù)責(zé)人xxxx系主任xxxx指導(dǎo)教師xxxxxxxx目錄一、實(shí)訓(xùn)目的與要求 3二、題目說(shuō)明 3三、總體設(shè)計(jì) 43.1.軟件模塊結(jié)構(gòu)圖 43.2.程序流程圖: 4四、詳細(xì)設(shè)計(jì)和實(shí)施 54.1.函數(shù)詳解與代碼 54.2運(yùn)行結(jié)果,圖片顯示: 15五、遇到的問(wèn)題和解決方法 17六、實(shí)訓(xùn)總結(jié) 18七、參考文獻(xiàn) 18附錄(源程序代碼) 18一、實(shí)訓(xùn)目的與要求1、實(shí)訓(xùn)目的:利用《程序邏輯設(shè)計(jì)與編程規(guī)范》課程中所學(xué)到的編程知識(shí)和編程技能,完成達(dá)到規(guī)定難度和工作量的程序設(shè)計(jì)題目,幫助掌握編程、調(diào)試的基本技能。通過(guò)親自設(shè)計(jì)程序,熟悉c語(yǔ)言操作,更熟練的掌握c語(yǔ)句。初步體會(huì)編程的過(guò)程,為將來(lái)的程序深入學(xué)習(xí)打下基礎(chǔ)和培養(yǎng)興趣。2、實(shí)訓(xùn)要求:在實(shí)訓(xùn)過(guò)程中要求態(tài)度認(rèn)真、重視實(shí)訓(xùn)環(huán)節(jié),用嚴(yán)謹(jǐn)、科學(xué)和踏實(shí)的工作態(tài)度對(duì)待實(shí)訓(xùn)的每一項(xiàng)任務(wù);按照實(shí)訓(xùn)的題目要求,獨(dú)立地完成各項(xiàng)任務(wù),不允許相互抄襲;按時(shí)到機(jī)房上機(jī),并接受教師的檢查。認(rèn)真編寫實(shí)訓(xùn)報(bào)告。編輯c語(yǔ)言需要細(xì)心、耐心,還必須有鉆研精神。在調(diào)試程序時(shí)需要反復(fù)的修改代碼,以確保運(yùn)行結(jié)果正確。二、題目說(shuō)明職工信息管理系統(tǒng)設(shè)計(jì)職工信息包括職工號(hào)、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號(hào)不重復(fù))。試設(shè)計(jì)一職工信息管理系統(tǒng),使之能提供以下功能:1、系統(tǒng)以菜單方式工作2、職工信息錄入功能--輸入3、職工信息瀏覽功能--輸出4、職工信息查詢功能--算法查詢方式:按學(xué)歷查詢等;按職工號(hào)查詢等;5、職工信息刪除、修改功能(可選項(xiàng))三、總體設(shè)計(jì)3.1.軟件模塊結(jié)構(gòu)圖顯顯示主菜單輸入函數(shù)寫入函數(shù)導(dǎo)出函數(shù)瀏覽函數(shù)查詢函數(shù)刪除函數(shù)添加函數(shù)3.2.程序流程圖:開(kāi)始開(kāi)始顯示菜單輸入功能代碼input()display()search()del()add()exit(0)結(jié)束四、詳細(xì)設(shè)計(jì)和實(shí)施4.1.函數(shù)詳解與代碼1、定義頭文件、主函數(shù):main()先聲明所有將會(huì)調(diào)用到的函數(shù)名。再運(yùn)用選擇函數(shù)switch即可根據(jù)使用者所輸入的功能代號(hào)進(jìn)入對(duì)應(yīng)的功能程序。定義一個(gè)全局指針變量*p和全局變量a。a表示當(dāng)前系統(tǒng)中職工人數(shù),p指向a的地址,追蹤人數(shù)變化,這樣在添加或者刪除導(dǎo)致人數(shù)變化后,瀏覽函數(shù)display()能夠正確顯示出當(dāng)前人數(shù)的職工信息。宏定義defineN指定首次輸入的職工人數(shù),可根據(jù)需要更改,變化。#include<stdio.h>#include<string.h>#include<conio.h>#defineN3structemployee{intnumber,age,wage;charname[20],sex[10],address[30],xueli[20];longinttelephone;}em[N];inta=N;int*p=&a;main(){voidsearch();voidsearch_name();voidsearch_xueli();voidsearch_number();voidload();voiddisplay();voiddel();voidinput();voidadd();voidsave();intn;printf("\n");printf("******************職工信息管理****************\n");printf("\n");printf("1.錄入職工信息\n");printf("2.瀏覽職工信息\n");printf("3.查詢職工信息\n");printf("4.刪除職工信息\n");printf("5.添加職工信息\n");printf("6.退出\n");printf("\n");scanf("%d",&n);switch(n){ case1:printf("輸入職工信息\n");printf("\n");input();main();break; case2:printf("瀏覽職工信息\n");printf("\n");display(*p);main();break;case3:printf("查詢職工信息\n");printf("\n");search();break; case4:printf("刪除職工信息\n");printf("\n");del(p);break; case5:printf("添加職工信息\n");printf("\n");add(p);break; case6:exit(0);break; default:break;}}2.輸入函數(shù)voidinput()用for語(yǔ)句來(lái)循環(huán)輸入職工的信息,printf語(yǔ)句提示需要輸入的內(nèi)容,scanf語(yǔ)句輸入相應(yīng)的信息。輸入結(jié)束再用保存函數(shù)save(N)將輸入的信息放入指定的文件d:\\abc.txtvoidinput(){inti;for(i=0;i<N;i++){printf("請(qǐng)輸入職工號(hào):");scanf("%d",&em[i].number);printf("請(qǐng)輸入姓名:");scanf("%s",em[i].name);printf("請(qǐng)輸入性別:");scanf("%s",&em[i].sex);printf("請(qǐng)輸入年齡:");scanf("%d",&em[i].age);printf("請(qǐng)輸入學(xué)歷:");scanf("%s",em[i].xueli);printf("請(qǐng)輸入工資:");scanf("%d",&em[i].wage);printf("請(qǐng)輸入住址:");scanf("%s",em[i].address);printf("請(qǐng)輸入電話:");scanf("%d",&em[i].telephone);printf("\n");}printf("\n創(chuàng)建完畢!\n");save(N);}3.保存函數(shù)voidsave(intm)定義整形變量i,文件指針,fopen打開(kāi)指定的文件。先用if語(yǔ)句判斷文件是否打開(kāi)成功,若返回值為0,則繼續(xù)操作。用for循環(huán)通過(guò)fprintf語(yǔ)句將數(shù)組em中的內(nèi)容保存在文件中。voidsave(intm){inti;FILE*fp;if(!(fp=fopen("d:\\abc.txt","w"))){printf("打開(kāi)失敗");exit(0);}for(i=0;i<m;i++)fprintf(fp,"%d%5s%5s%d%s%d%s%ld\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);fclose(fp);}4.導(dǎo)出函數(shù)voidload(intb)定義整形變量i和文件指針,先用if語(yǔ)句判斷文件是否打開(kāi)成功,若返回值為0,則繼續(xù)操作。用for循環(huán)通過(guò)fscanf語(yǔ)句將文件中的信息取出放到數(shù)組em中。voidload(intb){inti;FILE*fp;if(!(fp=fopen("d:\\abc.txt","r"))){printf("打開(kāi)失敗");exit(0);}elsefor(i=0;i<b;i++)fscanf(fp,"%d%5s%5s%d%s%d%s%ld\n",&em[i].number,&em[i].name,&em[i].sex,&em[i].age,&em[i].xueli,&em[i].wage,&em[i].address,&em[i].telephone);fclose(fp);}5.瀏覽函數(shù)voiddisplay(inta)聲明整形變量i和b,其中i記錄輸出的職工序數(shù),b用來(lái)接收調(diào)用瀏覽函數(shù)時(shí)所傳遞過(guò)來(lái)的實(shí)參,接著將其值傳遞給導(dǎo)出函數(shù)load(b),使得導(dǎo)出的職工人數(shù)與瀏覽的職工人數(shù)保持一致。通過(guò)調(diào)用load函數(shù),用for循環(huán)輸出每個(gè)職工的各種信息。voiddisplay(inta){inti,b=a;load(b);printf("\n職工號(hào)姓名性別年齡學(xué)歷工資住址電話\n");for(i=0;i<a;i++)printf("%d%5s%5s%d%s%d%s%ld\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);printf("\n");}6.查詢函數(shù)voidsearch()聲明整形變量t,先用printf語(yǔ)句顯示查詢菜單,用scanf輸入選擇的查詢方式代號(hào),用switch(t)進(jìn)入所選擇的具體查詢函數(shù),包括按職工號(hào)查詢、按姓名查詢、按學(xué)歷查詢?nèi)N方式.voidsearch(){intt;printf("\n按職工號(hào)查詢按1\n按姓名查詢請(qǐng)按2");printf("\n按學(xué)歷查詢請(qǐng)按3\n返回主菜單請(qǐng)按4\n");scanf("%d",&t);switch(t){case1:printf("\n按職工號(hào)查詢\n");search_number();break;case2:printf("\n按姓名查詢\n");search_name();break;case3:printf("\n按學(xué)歷查詢\n");search_xueli();break;case4:main();break;default:printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n");search();break;}}7.三種方式查詢職工信息:按職工號(hào)查詢;按姓名查詢;按學(xué)歷查詢。按職工號(hào)查詢voidsearch_number()聲明整形變量i,number,調(diào)用導(dǎo)出函數(shù)load(*p)。用scanf語(yǔ)句輸入要查詢的職工號(hào),用for循環(huán)判斷em.number中是否有輸入的職工號(hào),若有,則輸出相應(yīng)信息,跳出循環(huán)。若沒(méi)有,則輸出“查無(wú)此人”,返回查詢菜單。voidsearch_number(){inti,number;load(*p);printf("\n請(qǐng)輸入要查詢的職工號(hào):");scanf("%d",&number);for(i=0;i<*p;i++)if(number==em[i].number){printf("\n該職工信息如下:\n");printf("\n職工號(hào)姓名性別年齡學(xué)歷工資住址電話\n");printf("%d%5s%5s%d%s%d%s%ld\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);printf("\n");break;}if(i==*p)printf("\n查無(wú)此人\n");search();}按姓名查詢voidsearch_name()聲明整形變量i和字符型數(shù)組name[20],調(diào)用導(dǎo)出函數(shù)load(*p)。用scanf語(yǔ)句輸入要查詢的職工名字,用for循環(huán),if語(yǔ)句判斷中是否有輸入的職工信息,若有,則輸出相應(yīng)信息;若無(wú),則輸出“查無(wú)此人”,返回查詢菜單。voidsearch_name(){inti;charname[20];load(*p);printf("\n請(qǐng)輸入要查詢的姓名:");scanf("%s",name);for(i=0;i<*p;i++)if(!strcmp(em[i].name,name)){printf("\n該職工信息如下:\n");printf("\n職工號(hào)姓名性別年齡學(xué)歷工資住址電話\n");printf("%d%5s%5s%d%s%d%s%ld\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);printf("\n");break;}if(i==*p)printf("\n查無(wú)此人\n");search();}按學(xué)歷查詢voidsearch_xueli()聲明整形變量i,k,字符型數(shù)組xueli[20]。調(diào)用導(dǎo)出函數(shù),用scanf輸入要查詢的職工學(xué)歷,查詢時(shí)可能有多個(gè)職工有相同的學(xué)歷,采用另一種方法,判斷并執(zhí)行一次后繼續(xù)循環(huán),找出所有相同學(xué)歷的職工;解決輸入錯(cuò)誤提示“查無(wú)此人”,還得需要一段for循環(huán),通過(guò)k記錄循環(huán)的次數(shù),若最后仍無(wú)結(jié)果,則輸出“查無(wú)此人”,返回查詢菜單。voidsearch_xueli(){inti,k=0;charxueli[20];load(*p);printf("\n請(qǐng)輸入要查詢的學(xué)歷:");scanf("%s",xueli);for(i=0;i<*p;i++)if(!strcmp(em[i].xueli,xueli)){printf("職工號(hào)姓名性別年齡學(xué)歷工資住址電話\n");printf("%d%5s%5s%d%s%d%s%ld\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);}for(i=0;i<*p;i++){if(!strcmp(em[i].xueli,xueli))break;elsek++;}if(k==*p)printf("\n查無(wú)此人\n");search();}8.刪除函數(shù)voiddel(int*b)聲明整形變量i,j,t,m,a和char形數(shù)組name[20]。調(diào)用瀏覽函數(shù)display(a),顯示所有職工信息。用printf語(yǔ)句提示“輸入要?jiǎng)h除的職工名字”,用scanf語(yǔ)句輸入刪除對(duì)象名字。用for循環(huán),先判斷中是否存在所輸入的名字。若存在,printf語(yǔ)句提示是否確認(rèn)刪除,用scanf語(yǔ)句輸入確認(rèn)指令,再用for循環(huán)從要?jiǎng)h除的這個(gè)職工開(kāi)始,依次用后一個(gè)職工的信息覆蓋前一個(gè)的。循環(huán)結(jié)束后當(dāng)前職工人數(shù)a自減1,并保存,跳出大循環(huán);若不存在,輸出“輸入錯(cuò)誤,無(wú)此人”。再將a的新值附給*b,實(shí)參p所指的人數(shù)地址中的人數(shù)也隨即改變刪除后的人數(shù)。printf提示下一步操作“繼續(xù)刪除請(qǐng)按1\n瀏覽信息請(qǐng)按2\n返回主菜單請(qǐng)按3”。switchvoiddel(int*b){inti,t,j,m;inta=*b;charname[20];printf("\n所有職工信息:\n");display(a);printf("\n請(qǐng)輸入要?jiǎng)h除職工的名字:");scanf("%s",name);for(i=0;i<a;i++){if(!strcmp(em[i].name,name)){printf("\n確認(rèn)刪除請(qǐng)按1\n取消請(qǐng)按2\n");scanf("%d",&t);if(t==1){for(j=i;j<a-1;j++){em[j].age=em[j+1].age;em[j].wage=em[j+1].wage;em[j].number=em[j+1].number;em[j].telephone=em[j+1].telephone;strcpy(em[j].xueli,em[j+1].xueli);strcpy(em[j].name,em[j+1].name);strcpy(em[j].address,em[j+1].address);strcpy(em[j].sex,em[j+1].sex);}a--;save(j);break;}if(t==2)break;}}if(i==a)printf("\n輸入錯(cuò)誤,無(wú)此人\n");*b=a;printf("\n繼續(xù)刪除請(qǐng)按1\n瀏覽信息請(qǐng)按2\n返回主菜單請(qǐng)按3\n");scanf("%d",&m);switch(m){case1:del(p);break;case2:display(*b);main();break;case3:main();break;default:break;}}9.添加函數(shù)voidadd(int*a)聲明整形變量i,n,m,定義指針文件fp,追加打開(kāi)文件,若打開(kāi)失敗,則退出;若成功,則繼續(xù)操作,用for循環(huán)輸入要添加的信息,再用另外一個(gè)for循環(huán)將輸入的信息寫入文件中,關(guān)閉文件。再調(diào)用switch語(yǔ)句選擇下一步操作,并連接到相應(yīng)函數(shù)。voidadd(int*a){inti,n,m;FILE*fp;if(!(fp=fopen("d:\\abc.txt","a"))){printf("打開(kāi)失敗");exit(0);}printf("\n請(qǐng)輸入想添加的人數(shù):\n");scanf("%d",&n);for(i=*a;i<n+(*a);i++){printf("請(qǐng)輸入職工號(hào):");scanf("%d",&em[i].number);printf("請(qǐng)輸入姓名:");scanf("%s",em[i].name);printf("請(qǐng)輸入性別:");scanf("%s",&em[i].sex);printf("請(qǐng)輸入年齡:");scanf("%d",&em[i].age);printf("請(qǐng)輸入學(xué)歷:");scanf("%s",em[i].xueli);printf("請(qǐng)輸入工資:");scanf("%d",&em[i].wage);printf("請(qǐng)輸入住址:");scanf("%s",em[i].address);printf("請(qǐng)輸入電話:");scanf("%d",&em[i].telephone);printf("\n");}printf("\n添加完畢\n");for(i=*a;i<n+(*a);i++)fprintf(fp,"%d%5s%5s%d%s%d%s%ld\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);fclose(fp);*a=*a+n;printf("\n瀏覽新信息請(qǐng)按1\n返回主菜單請(qǐng)按2\n");scanf("%d",&m);switch(m){case1:display(*a);main();break;case2:main();break;default:break;}}4.2運(yùn)行結(jié)果,圖片顯示:五、遇到的問(wèn)題和解決方法整個(gè)程序代碼是分塊書(shū)寫的,每個(gè)函數(shù)都可以獨(dú)立運(yùn)行。只有輸入函數(shù)查詢菜單函數(shù)寫得很順利,一次性就能夠成功運(yùn)行,其他函數(shù)在調(diào)試過(guò)程中或多或少都出現(xiàn)了問(wèn)題。1、保存函數(shù)save()在調(diào)試和鏈接的時(shí)候都沒(méi)有出現(xiàn)錯(cuò)誤提示,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 回收煙盒合同范本
- 2025至2030年中國(guó)塑料門窗焊接清角生產(chǎn)線數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 商鋪?zhàn)赓U費(fèi)用合同范例
- 會(huì)務(wù)發(fā)布合同范本
- 廠房搬運(yùn)合同范本
- 可合并堆類算法的函數(shù)式建模及其機(jī)械化驗(yàn)證研究
- led屏搬遷合同范本
- 體外模擬消化及酵解對(duì)黃芪多糖APS-Ⅱ結(jié)構(gòu)和免疫活性影響的研究
- 公益林合同范本
- 商標(biāo)無(wú)償使用合同范本
- 新教科版四年級(jí)上冊(cè)科學(xué)全冊(cè)重點(diǎn)題型練習(xí)課件(含答案)
- 防災(zāi)減災(zāi)地質(zhì)災(zāi)害防御應(yīng)對(duì)講座培訓(xùn)課件ppt
- 2023年天津高考英語(yǔ)聽(tīng)力試題及原文
- 火力發(fā)電廠OVATION 與西門子控制系統(tǒng)之間通訊實(shí)現(xiàn)
- 家庭節(jié)約用水
- 電噴系統(tǒng)原理及故障維修手冊(cè)
- 電力事業(yè)部崗位職責(zé)
- 走進(jìn)現(xiàn)代舞智慧樹(shù)知到答案章節(jié)測(cè)試2023年浙江大學(xué)
- 同濟(jì)大學(xué)數(shù)據(jù)庫(kù)課程期末考核試卷(A卷)
- 深基坑變形監(jiān)測(cè)方案
- 公司首件確認(rèn)表
評(píng)論
0/150
提交評(píng)論