版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言的課程設(shè)計報告語言的設(shè)計目標(biāo)是供給一種能以簡略的方式編譯、辦理初級儲存器、產(chǎn)生少許的機(jī)器碼以及不需要任何運(yùn)轉(zhuǎn)環(huán)境支持便能運(yùn)轉(zhuǎn)的編程語言。下邊是小編想跟大家分享的C語言的課程設(shè)計報告,歡迎大家閱讀。經(jīng)過親身設(shè)計程序,能夠令我們熟習(xí)c語言操作,更熟練的掌握c語句。初步領(lǐng)會編程的過程,為未來的程序深入學(xué)習(xí)打下基礎(chǔ)和培育興趣。2.1題目簡介能夠向文件中寫入、刪除、增添員工信息,也能夠從文件中導(dǎo)出來閱讀2.2設(shè)計要求員工信息包含員工號、姓名、性別、年紀(jì)、學(xué)歷、薪資、地址、電話等。試設(shè)計員工信息管理系統(tǒng),使之能供給以下功能:系統(tǒng)以菜單方式工作。員工信息錄入功能(員工信息用文件保留)--輸入員工信息閱讀功能--輸出查問和排序功能:(起碼一種查問方式)--算法按員工號查問按學(xué)歷查問等員工信息刪除、增添功能3.2詳盡設(shè)計:1、主函數(shù):main( )顯示系統(tǒng)工作菜單,排列該系統(tǒng)全部功能。先申明全部將會調(diào)用到的函數(shù)名。再運(yùn)用選擇函數(shù)switch即可依據(jù)使用者所輸入的功能代號進(jìn)入對應(yīng)的功能程序。亮點:定義一個全局指針變量*p和全局變量a。此中a表示目前系統(tǒng)中員工人數(shù),p指向a的地點,追蹤人數(shù)變化,這樣在增添或許刪除致使人數(shù)變化后,閱讀函數(shù)display( )能夠正確顯示出目古人數(shù)的員工信息。宏定義defineN指定初次輸入的員工人數(shù),可依據(jù)不同需要隨時改正。3、保留函數(shù):voidsave定義文件指針fp,用fopen"只寫"翻開指定在D盤的“d://”文本文件。第一用if語句判斷文件能否翻開成功,若fopen返回值不為0,則可持續(xù)下邊操作。用for循環(huán)經(jīng)過fprintf語句將構(gòu)造數(shù)組em中的內(nèi)容寫入保留在D盤的文本文件里面。形參m指需要寫入文件的員工人數(shù)。最后封閉文件。4、導(dǎo)出函數(shù):voidload(intb)第一判斷fopen"只讀"翻開“d://”能否成功,若其返回值不為零,持續(xù)下邊操作。用for循環(huán)經(jīng)過fscanf語句將文件中的員工信息拿出放到em構(gòu)造數(shù)組里面。形參b指需要導(dǎo)出的員工人數(shù)。最后封閉文件。5、閱讀函數(shù)voiddisplay(inta)申明整形變量i和b,此中i記錄輸出的員工序數(shù),b用來接收調(diào)用閱讀函數(shù)時所傳達(dá)過來的實參,接著將其值傳達(dá)給導(dǎo)出函數(shù)load(b),使得導(dǎo)出的員工人數(shù)與閱讀的員工人數(shù)保持一致。經(jīng)過調(diào)用load函數(shù)后,用for循環(huán)輸出每個員工的各樣信息。8、按姓名查問voidsearch_name( )申明整形變量i和字符形數(shù)組name,調(diào)用導(dǎo)出函數(shù)load,用scanf語句輸入要查問的員工名字放在數(shù)組name里面。用for循環(huán),循環(huán)主體是先判斷中能否有輸入的員工姓名,假如有,用printf語句輸出與員工名字相對應(yīng)的該員工所有信息,再跳出循環(huán);假如沒有,輸出“查無這人”,并調(diào)用search返回查問菜單。流程圖同上9、按學(xué)歷查問voidsearch_xueli( )申明整形變量i,k=0,char形數(shù)組xueli。調(diào)用導(dǎo)出函數(shù)load(*P),用scanf語句輸入要查問的員工學(xué)歷放在數(shù)組xueli里面??紤]到與前兩種查問方式不同樣的是,可能有多個員工擁有同樣的學(xué)歷,因此循環(huán)主體較從前稍有變化。即在判斷并履行第一次后不用break,而是持續(xù)循環(huán),直到找出全部該學(xué)歷的員工。為解決輸入錯誤而提示“查無這人”的問題,就需要再寫一段for循環(huán)代碼,經(jīng)過計量數(shù)k記錄循環(huán)的次數(shù),若直到循環(huán)到最后一次仍無結(jié)果輸出,則表示輸入錯誤,這時用printf輸出“查無這人”,并調(diào)用search返回查問菜單。流程圖同上10、,刪除函數(shù)voiddel(int*b)申明整形變量i,j,t,m,a和char形數(shù)組name。此中給a附初始值a=*b,表示目前員工人數(shù)。第一調(diào)用閱讀函數(shù)display(a),顯示全部員工信息,便于使用者批閱需刪除的對象。用printf語句提示“輸入要刪除的員工名字”,接著用scanf語句輸入刪除對象名字。用for循環(huán),循環(huán)主體是先判斷中能否存在所輸入的名字。若存在,printf語句提示能否確認(rèn)刪除,用scanf語句輸入確認(rèn)指令,再用for循環(huán)從要刪除的這個員工開始,挨次用后一個員工的信息覆蓋前一個的。循環(huán)結(jié)束后目前員工人數(shù)a自減1,并保留,跳出大循環(huán);若不存在,輸出“輸入錯誤,無這人”。再將a的新值附給*b,實參p所指的人數(shù)地點中的人數(shù)也隨即改變刪除后的人數(shù)。printf提示下一步操作“持續(xù)刪除請按1瀏覽信息請按2返回主菜單請按3”。switch依據(jù)鍵盤輸入的指令代號選擇下一步連結(jié)的函數(shù)。11、增添函數(shù)voidadd申明整形變量i,n,m,定義文件指針fp,用追加的方式翻開文件"d://",若翻開失敗,退出。若成功,持續(xù)下邊操作。printf提示“輸入要增添的人數(shù)”scanf輸入要增添的人數(shù)寄存在n。用for循環(huán)輸入要增添的員工信息,再用另一個for循環(huán)將輸入的新信息追加寫入"d://"文件保留。封閉文件。再調(diào)用switch語句選擇下一步操作,并連結(jié)到相應(yīng)函數(shù)。流程圖與刪除函數(shù)近似。3.3調(diào)試與測試:。碰到最大的問題是全部程序代碼編完放在一同后,固然能夠成功運(yùn)轉(zhuǎn),但使用時假如員工人數(shù)發(fā)生變化,會致使文件后部出現(xiàn)亂碼。若要使每次運(yùn)轉(zhuǎn)都正常,一定在人數(shù)改變退后出程序,改正宏定義N的值。這樣很不方便,不可以夠連續(xù)運(yùn)轉(zhuǎn)。為解決這一大問題,最后我想到了定義一個全局指針變量,用來追蹤最新的人數(shù)。特別是刪除和增添這兩個會致使人數(shù)變化的函數(shù)中,全局指針變量
p起了很大作用。經(jīng)過一邊改正一邊調(diào)試,最后能夠成功的用
p串連整個函數(shù),在連續(xù)運(yùn)轉(zhuǎn)時,總能依據(jù)最新的人數(shù)調(diào)用各個函數(shù)。此外在串連全部函數(shù)時,調(diào)試提示犯錯:有幾個函數(shù)“redefinition;differentbasictypes”解決:在函數(shù)名前加void指明類型。整個程序代碼是分塊書寫的,每個函數(shù)都能夠獨(dú)立運(yùn)轉(zhuǎn)。只有輸入函數(shù)查問菜單函數(shù)寫得很順利,一次性就可以成功運(yùn)轉(zhuǎn),其余函數(shù)在調(diào)試過程中或多或少都出現(xiàn)了問題。1、保留函數(shù)save( )在調(diào)試和鏈接的時候都沒有出現(xiàn)錯誤提示,但在運(yùn)轉(zhuǎn)的時候出現(xiàn)了問題。寫入指定地點的文件,翻開后總會有亂碼。與c語言課本上的例題比較后發(fā)現(xiàn),我寫的fopen("d://bbb","w")沒有指定文件的儲存種類。解決方法:在文件名bbb后邊加上.txt后即可。2、導(dǎo)出函數(shù)load( )碰到兩個問題。1是為圖方便直接將保留函數(shù)復(fù)制過來進(jìn)行改正時,忘了改正文件的翻開方式,不可以運(yùn)轉(zhuǎn)。經(jīng)多次檢查后終于發(fā)現(xiàn)了,解決:將只寫"w"改為只讀"r"。2是用fscanf語句時,漏寫地點符。調(diào)試和鏈接都沒問題,但點擊運(yùn)轉(zhuǎn)后,總出現(xiàn)一個提示犯錯的藍(lán)色小窗口。經(jīng)老師提時候發(fā)現(xiàn)了錯誤所在。解決:在等從前加上地點符。3、閱讀函數(shù)display( )碰到的問題固然不大,但解決起來很麻煩。理想的運(yùn)轉(zhuǎn)結(jié)果是雅觀齊整。即下邊的員工信息分別與第一個printf輸出的中文項目提示對齊。解決方法:不停改正空格個數(shù),不停運(yùn)轉(zhuǎn)觀察成效。4、按學(xué)歷查問函數(shù)search_xueli( ),要考慮輸入一種學(xué)歷,可能對應(yīng)出好多員工,這就不可以延用按姓名和員工號查問中判斷能否輸入錯誤的方法了。為了顯示出全部擁有該學(xué)歷的員工,就需要讓for循環(huán)向來運(yùn)轉(zhuǎn)到最后一個為止。這時計量數(shù)i一直會等于員工人數(shù),不可以再用i來判斷能否不存在這人。這就需要再定一個整形變量k,用來計量獨(dú)自的一個循環(huán)次數(shù)。5、刪除函數(shù)del( )的難點在于多次刪除。即在刪除去第一個人此后,現(xiàn)有員工人數(shù)發(fā)生改變,而宏定義中的N倒是不變的。最開始我想到了用static定義一個整形變量a來計量目古人數(shù)。這在獨(dú)自運(yùn)轉(zhuǎn)刪除函數(shù)時,能夠成功的連續(xù)刪除。最后全部函數(shù)串在一同時,有了更好的解決方法,全局指針。6、增添函數(shù)add( )碰到的問題是用printf輸入新員工信息后,保留到文件里面,發(fā)現(xiàn)原有的信息不見了。解決:文件翻開方式改用"a"追加寫入。經(jīng)過一學(xué)期的C語言學(xué)習(xí),我們掌握了C語言的基礎(chǔ)知識,能夠讀懂他人用c語言設(shè)計的程序。平常的程序設(shè)計大多是以填空的形式出現(xiàn),固然有所接觸,但都不完好。而這兩周的課程設(shè)計,卻讓我們完完好全用自己學(xué)到的知識編寫一個完好的體統(tǒng)程序。這是一個新的挑戰(zhàn),也是一種新的學(xué)習(xí)。我們組選擇的是備選題目中的第一個——員工信息管理系統(tǒng)。這需要我們自己設(shè)計一個系統(tǒng),能夠輸入信息,保留到文件里,再從文件里調(diào)出來,使之顯示在屏幕上,進(jìn)行刪除、增添等對信息的改正。初看到這個題目感覺很簡單,但當(dāng)我做到電腦前準(zhǔn)備開始編寫代碼的時候才發(fā)現(xiàn)無從下手。經(jīng)過去圖書室查找程序設(shè)計有關(guān)的書本,和上網(wǎng)參照古人編寫的近似程序,我腦中才有了一個大體方向。終于開始著手寫下了第一段輸入函數(shù)的代碼,由于這是我們平常講堂上用的最多最熟的printf語句,寫了很長一大段,調(diào)式運(yùn)轉(zhuǎn)居然成功了,立時信心倍增。于是我開始迫不及待的開始寫第二段保留函數(shù)。我記得第一天下來,我只寫好了這兩個函數(shù),但仍是很高興,由于這是我編的第一個小系統(tǒng)的成功的開始!接下來幾日都在宿舍整個下午的對著電腦不停的編譯、調(diào)試、改正,每次編好一個能夠成功運(yùn)轉(zhuǎn)的程序,都會感覺很寬慰,并增添持續(xù)下去的信心。自然此中也有碰到困難的時候。好幾次碰到編好的程序調(diào)試沒有錯誤,卻恰恰不可以運(yùn)轉(zhuǎn)這類狀況,自己編的程序自己很難發(fā)現(xiàn)中間的錯誤,而電腦又沒有提示,這時候就很受打擊,也會焦急。頻頻檢查都找不出缺點來的時候就會有想要放棄的念想。有時就直接關(guān)機(jī)去做其余事情,等再開始做程序的時候,才發(fā)現(xiàn)先前的錯誤所在。這時候會有一種“峰回路轉(zhuǎn)又一村”的寬慰感覺??傊龅嚼щy,能夠先放一放,讓腦子歇息一下,忘記錯誤的記憶。也許等過段時間再回過頭來,就會很簡單的發(fā)現(xiàn)從前的錯誤了。跟著編好的程序越多,積累的經(jīng)驗也越多,查找錯誤就越快了。還有會發(fā)現(xiàn)好多程序有好多相像之處,能夠經(jīng)過復(fù)制改正的發(fā)式來編寫。固然題目要求只要要一種查問方式,但當(dāng)我編出規(guī)律以后自然就想多寫兩個,寫完就會有很大的成就感了。在課程設(shè)計的過程中,還有一件很倒運(yùn)的事。7月5號清晨我們有一門考試,靠前還需要復(fù)習(xí)的那種。因此我打算4號清晨寫會兒程序,從下午開始就復(fù)習(xí)次日要考的科目,結(jié)果從清晨開始寫刪除函數(shù)的代碼,一邊調(diào)試,一邊改正,愈來愈靠近成功,越激動越投入,等最后終于達(dá)成的時候猛然發(fā)現(xiàn)已經(jīng)下午4點多了。乘著興致高,一口氣把增添函數(shù)也寫出來了。固然只好把復(fù)習(xí)擠到晚長進(jìn)行,但由于編好了兩個很難的程序代碼,感覺這天仍是很有成就感的,很高興。結(jié)果不幸的是,等我次日考完試回來打算持續(xù)編的時候,才發(fā)現(xiàn)從前辛辛苦苦編的兩段代碼沒有保留。沒方法,只好從頭寫。當(dāng)全部功能函數(shù)都編好后,我用主函數(shù)將他們串起來,這是碰到最大的問題就是經(jīng)過刪除、增添后員工人數(shù)會發(fā)生變化。想了好久,又翻從前的講堂筆錄,最后想到了定義全局指針變量來解決這個問題。這個問題的成功解決預(yù)示著我們的員工信息管理系統(tǒng)大功成功!總之,經(jīng)過這一次的課程設(shè)計,我們領(lǐng)會到了難過與快樂同存的感覺。當(dāng)最后一次成功串連運(yùn)轉(zhuǎn)全部函數(shù)時,真的很高興。經(jīng)過此次實踐,我們能夠更嫻熟掌握C語言,特別是循環(huán)和文件,當(dāng)時在講堂上沒有學(xué)太清楚的,這個程序設(shè)計以后都很理解了。同時增添了我們對程序設(shè)計的興趣,暑期回家我還會試試著做一些其余的小系統(tǒng)。#include#include#defineN6structemployee{intnumber,age,wage;charname,sex,address,xueli;longinttelephone;}em;inta=N;int*p=&a;main( ){voidsearch( );voidsearch_name( );voidsearch_xueli( );voidsearch_number( );voidload( );voiddisplay( );voiddel( );voidinput( );voidadd( );voidsave( );intn;printf("");printf("******************員工信息管理****************");printf("");printf("1.錄入員工信息");printf("2.閱讀員工信息");printf("3.查問員工信息");printf("4.刪除員工信息");printf("5.增添員工信息");printf("6.退出");printf("");scanf("%d",&n);switch(n){case1:printf("◆◆◆輸入職工信息◆◆◆");printf("");input( );main( );break;case2:printf("◆◆◆閱讀職工信息◆◆◆");printf("");display(*p);main( );break;case3:printf("◆◆◆查問職工信息◆◆◆");printf("");search( );break;case4:printf("工信息◆◆◆");printf("");del(p);break;case5:printf("
◆◆◆刪除職◆◆◆增添職工信息◆◆◆");printf("");add(p);break;case6:exit(0);break;default:break;}}voidinput( ){inti;for(i=0;i{printf("請輸入員工號:");scanf("%d",&em.number);printf("請輸入姓名:");scanf("%s",);printf("請輸入性別:");scanf("%s",&em.sex);printf("請輸入年紀(jì):");scanf("%d",&em.age);printf("請輸入學(xué)歷:");scanf("%s",em.xueli);printf("請輸入薪資:");scanf("%d",&em.wage);printf("請輸入地址:");scanf("%s",em.address);printf("請輸入電話:");scanf("%d",&em.telephone);printf("");}printf("創(chuàng)立完成!");save(N);}voidsave(intm){inti;FILE*fp;if(!(fp=fopen("d://","w"))){printf("
翻開失敗
");exit(0);}for(i=0;i
fprintf(fp,"M%8s%5s]%8s]%8s",em.number,,em.sex,em.age,em.xueli,em.wage,em.address,em.telephone);fclose(fp);}voidload(intb){inti;FILE*fp;if(!(fp=fopen("d://","r"))){printf("翻開失敗");exit(0);}elsefor(i=0;ifscanf(fp,"%8s%5s]%8s]%8s",&em.number,&,&em.sex,&em.age,&em.xueli,&em.wage,&em.address,&em.telephone);fclose(fp);}voiddisplay(inta){inti,b=a;load(b);printf("
員工號
姓名
性別
年紀(jì)
學(xué)歷薪資
地址
電話
");for(i=0;iprintf("%d%8s%s%d%8s%d%s%d",em.number,,em.sex,em.age,em.xueli,em.wage,em.address,em.telephone);printf("");}voidsearch( ){intt;printf("按員工號查問按1按姓名查問請按2");printf("按學(xué)歷查問請按3返回主菜單請按4");scanf("%d",&t);switch(t){case1:printf("按員工號查問");search_number( );break;case2:printf("按姓名查問");search_name( );break;case3:printf("按學(xué)歷查問");search_xueli( );break;case4:main( );break;default:printf("輸入錯誤,請從頭輸入!");search( );break;}}voidsearch_number( ){inti,number;load(*p);printf("請輸入要查問的員工號:");scanf("%d",&number);for(i=0;iif(number==em.number){printf("
該員工信息以下
:");printf("
員工號
姓名
性別
年紀(jì)
學(xué)歷薪資
地址
電話");printf("%d%8s%s%d%8s%d
%s%d",em.number,,em.sex,em.age,em.xueli,em.wage,em.address,em.telephone);printf("");break;}if(i==*p)printf("查無這人");search( );}voidsearch_name( ){inti;charname;load(*p);printf("請輸入要查問的姓名:");scanf("%s",name);for(i=0;iif(!strcmp(,name)){printf("
該員工信息以下
:");printf("
員工號
姓名
性別
年紀(jì)
學(xué)歷薪資
地址
電話");printf("%d%8s%s%d%8s%d
%s%d",em.number,,em.sex,em.age,em.xueli,em.wage,em.address,em.telephone);printf("");break;}if(i==*p)printf("查無這人");search( );}voidsearch_xueli( ){inti,k=0;charxueli;load(*p);printf("請輸入要查問的學(xué)歷:");scanf("%s",xueli);for(i=0;iif(!strcmp(em.xueli,xueli)){printf("
員工號
姓名
性別
年紀(jì)
學(xué)歷薪資
地址
電話
");printf("%d%8s%s%d%8s%d%s
%d",em.number,,em.sex,em.age,em.xueli,em.wage,em.address,em.telephone);}for(i=0;i{if(!strcmp(em.xueli,xueli))break;elsek++;}if(k==*p)printf("查無這人");search( );}voiddel(int*b){inti,t,j,m;inta=*b;charname;printf("全部員工信息:");display(a);printf("請輸入要刪除員工的名字:");scanf("%s",name);for(i=0;i{if(!strcmp(,name)){printf("確認(rèn)刪除請按1撤消請按2");scanf("%d",&t);if(t==1){for(j=i;j{em.age=em.age;em.wage=em.wage;em.number=em.number;em.telephone=em.telephone;strcpy(em.xueli,em.xueli);strcpy(,);strcpy(em.address,em.address);strcpy(em.sex,em.sex);}a--;save(j);break;}if(t==2)break;}}if(i==a)printf("輸入
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康照護(hù)師常識強(qiáng)化考核試卷含答案
- 安全防范系統(tǒng)安裝維護(hù)員測試驗證知識考核試卷含答案
- 2026年湖南常德市高三一模高考數(shù)學(xué)試卷試題(含答案詳解)
- 抗生素酶裂解工崗前班組考核考核試卷含答案
- 自然保護(hù)區(qū)巡護(hù)監(jiān)測員安全培訓(xùn)評優(yōu)考核試卷含答案
- 橋梁基礎(chǔ)知識培訓(xùn)
- 酒店客房服務(wù)規(guī)范與操作流程優(yōu)化制度
- 車站人員考勤管理制度
- 濟(jì)南冬天課件創(chuàng)作說明
- 經(jīng)支氣管鏡封堵兒童支氣管胸膜瘺
- 2025年淮北職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案解析
- 安全生產(chǎn)九個一制度
- 2025北京西城區(qū)初一(下)期末英語試題及答案
- (更新)成人留置導(dǎo)尿護(hù)理與并發(fā)癥處理指南課件
- 2026.01.01施行的《招標(biāo)人主體責(zé)任履行指引》
- DB11∕T 689-2025 既有建筑抗震加固技術(shù)規(guī)程
- 2025年湖南公務(wù)員《行政職業(yè)能力測驗》試題及答案
- 巨量引擎《2026巨量引擎營銷IP通案》
- 2026屆高考化學(xué)沖刺復(fù)習(xí)化學(xué)綜合實驗熱點題型
- 電纜接駁施工方案(3篇)
- 提前招生面試制勝技巧
評論
0/150
提交評論