版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言課程設(shè)計(jì)報(bào)告 題 目:設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器設(shè) 計(jì) 者: 陳玉文專業(yè)班級(jí):通信工程0803學(xué) 號(hào):指導(dǎo)教師: 年 月 日河南理工大學(xué)計(jì)算機(jī)學(xué)院目錄一、 設(shè)計(jì)任務(wù)書(shū)二、 本組課題及本人任務(wù)三、 程序功能簡(jiǎn)介四、 主要內(nèi)容1、 設(shè)計(jì)分析2、 程序結(jié)構(gòu)3、 各模塊功能及程序說(shuō)明4、 源程序5、 操作方法6、 實(shí)驗(yàn)結(jié)果7、 設(shè)計(jì)體會(huì)5、 附錄6、 參考文獻(xiàn)一、設(shè)計(jì)任務(wù)書(shū)該程序編譯的是通訊錄,可以實(shí)現(xiàn)一般主要功能有:有建立通訊錄的個(gè)人信息功能,如記錄該人姓名信息,地址信息,出生日期信息,所在城市信息,以及其城市的郵編信息等,刪除個(gè)人信息,通訊錄個(gè)人的信息列表,個(gè)人的信息查詢,個(gè)人的信息保存,以及個(gè)人
2、的信息提取的功能,最后可以直接退出通訊錄。當(dāng)然實(shí)行不同的功能需要定義不同的功能函數(shù),在記錄個(gè)人信息定義不同的結(jié)構(gòu)體,每一個(gè)成員的信息可以是一個(gè)基本類(lèi)型或者是一個(gè)夠造類(lèi)型,對(duì)結(jié)構(gòu)體變量的應(yīng)用,其中包括賦值,輸入,輸出,運(yùn)算等方式來(lái)實(shí)現(xiàn)結(jié)構(gòu)變量的成員。當(dāng)然也可以執(zhí)行該程序應(yīng)用了函數(shù)的調(diào)用,自定義函數(shù)以及文件的存儲(chǔ)與調(diào)用等。個(gè)人的信息保存在這個(gè)問(wèn)題上,這信息可以動(dòng)態(tài)的分配到內(nèi)存空間,每一次分配一塊空間用來(lái)存放一個(gè)人的個(gè)人信息的數(shù)據(jù),定義兩個(gè)域,一個(gè)是數(shù)據(jù)域,用來(lái)存放各種實(shí)際的數(shù)據(jù),如個(gè)人姓名信息,個(gè)人地址信息,出生日期等等數(shù)據(jù)。在編輯程序,用到了基本的循環(huán)、選擇、排序的算法,使用數(shù)組或數(shù)組元素的指針
3、和指針變量,對(duì)結(jié)構(gòu)體及其元素用指針或指針變量來(lái)指向。并且使用多種預(yù)處理功能,如宏定義、文件包含、條件編譯等。來(lái)進(jìn)行程序的修改、閱讀、移植和調(diào)試,也有利于實(shí)現(xiàn)模塊化程序設(shè)計(jì)。程序員在程序中用預(yù)處理命令來(lái)調(diào)用這些功能。通訊錄的個(gè)人信息數(shù)據(jù)的編輯、存儲(chǔ)、列表、刪除、查詢、提取等實(shí)行運(yùn)用,在程序中存儲(chǔ)二百人的個(gè)人信息空間,日期不能超過(guò)兩個(gè)字符。在運(yùn)行后,程序自動(dòng)給出提示選擇,給出你所需要執(zhí)行的功能,在選擇后會(huì)給出相應(yīng)的顯示和下一步的提示,在編輯個(gè)人信息時(shí)必須有姓名,否者會(huì)返回上一選擇菜單,有部分信息可以不填。在編輯完后,就可以實(shí)行其他功能,將給出其他選擇,如將個(gè)人信息刪除、將個(gè)人信息列表、保存?zhèn)€人信息
4、、提取個(gè)人信息等等的功能。最后在執(zhí)行完后就可直接根據(jù)提示選擇退出。就實(shí)現(xiàn)了整個(gè)通訊錄的流程。2、 本組課題及本人任務(wù)本組總共兩個(gè)人,一個(gè)是我,令一個(gè)是通信三班的劉瑩()。該組設(shè)計(jì)的是一個(gè)通訊錄,我主要完成的任務(wù)是建立通訊錄的個(gè)人信息,如姓名,地址,出生日期,城市,郵編等;查找個(gè)人信息。三、程序功能簡(jiǎn)介該程序主要功能有:有建立通訊錄的個(gè)人信息,如姓名,地址,出生日期,城市,郵編等。也可以執(zhí)行刪除個(gè)人信息,通訊錄信息列表,信息查詢,信息保存,以及信息提取的功能,最后可以退出通訊錄。該程序應(yīng)用了函數(shù)的調(diào)用,自定義函數(shù)以及文件的存儲(chǔ)與調(diào)用等,使用數(shù)組或數(shù)組元素的指針和指針變量,對(duì)結(jié)構(gòu)體及其元素用指針或
5、指針變量來(lái)指向。4、 主體內(nèi)容 1、設(shè)計(jì)分析以無(wú)歧義的陳述說(shuō)明程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么1)輸入的形式和輸入值得范圍;2)輸出的形式;3)程序所能達(dá)到的功能; 4)測(cè)試數(shù)據(jù):包括正確的輸入結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果; 2、程序結(jié)構(gòu)開(kāi) 始輸 入輸入結(jié)構(gòu)體各元素輸出結(jié)構(gòu)體中各元素結(jié) 束3、 各模塊的功能及程序說(shuō)明1、輸入保存結(jié)構(gòu) 該結(jié)構(gòu)實(shí)現(xiàn)的功能主要是從鍵盤(pán)輸入個(gè)人的信息,如電話號(hào)碼,地址,出生日期,城市,郵編等,然后保存,以方便以后的查詢。程序說(shuō)明:(1)輸入個(gè)人信息:名字,地址,日期,郵政編碼void enter(void)struct address *info;for(;)
6、info=(struct address *)malloc(sizeof(struct address);if(!info)printf("nout of memory");return;inputs("please enter name:",info->name,30);if(!info->name0) break;/*stop entering*/inputs("please enter street:",info->street,40);inputs("please enter city:"
7、,info->city,20);inputs("please enter state:",info->state,3);inputs("please enter zip:",info->zip,10);dls_store(info,&start,&last);/*entry loop*/如果超過(guò)給定內(nèi)存,將給出提示,輸入太長(zhǎng):void inputs(char *prompt,char *s,int count)char p225;do printf(prompt);fgets(p,254,stdin);if(strlen
8、(p)>count)printf("nToo Longn"); while(strlen(p)>count);pstrlen(p)-1=0;/* remove newline character */strcpy(s,p);(2)制作列表,對(duì)輸入的個(gè)人信息進(jìn)行存儲(chǔ)與排列void dls_store(struct address *i,/*new element*/struct address *start,/*first element in list*/struct address *last/*last element in list*/)struct ad
9、dress *old,*p;if(*last=NULL)/*first element in list*/i->next=NULL;i->prior=NULL;*last=i;*start=i;return;p=*start;/*start at top of list*/old=NULL;while(p)if(strcmp(p->name,i->name)<0)old=p;p=p->next;elseif(p->prior)p->prior->next=i;i->next=p;i->prior=p->prior;p-&g
10、t;prior=i;return;i->next=p;/*new first element*/i->prior=NULL;p->prior=i;*start=i;return;old->next=i;/*put on end*/i->next=NULL;i->prior=old;*last=i;2、 查詢功能模塊 該結(jié)構(gòu)主要實(shí)現(xiàn)的功能是從鍵盤(pán)輸入人的信息,如地址,出生日期等,然后查找出他的通信方式。 程序說(shuō)明:(2)從其內(nèi)存中查找某個(gè)名字,并進(jìn)行輸出,如果沒(méi)有就輸出沒(méi)有發(fā)現(xiàn)名字struct address *find(char *name)struct a
11、ddress *info;info=start;while(info)if(!strcmp(name,info->name ) return info;info = info->next; /* get next address */printf("Name not found.n");return NULL; /*not found*/(3)將通訊錄中所有個(gè)人信息分別列出void list(void)struct address *info;info=start;while(info)display(info);info = info->next; /*
12、 get next address */printf("nn");(4)分別輸出個(gè)人信息void display(struct address *info)printf("%sn",info->name);printf("%sn",info->street);printf("%sn",info->city);printf("%sn",info->state);printf("%sn",info->zip);printf("nn"
13、;);(5)根據(jù)其個(gè)人信息的存儲(chǔ)地址來(lái)查找個(gè)人名字信息void search(void)char name40;struct address *info;printf("Enter name to find:");gets(name);info = find(name);if(!info) printf("Not Foundn");else display(info);3、修改、刪除結(jié)構(gòu) 該結(jié)構(gòu)主要是在查找的基礎(chǔ)之上,把原來(lái)的信息進(jìn)行修改或刪除操作。4、保存、提取結(jié)構(gòu)該結(jié)構(gòu)能動(dòng)態(tài)的分配內(nèi)存空間,每一次分配一塊空間用來(lái)存放一個(gè)人的個(gè)人信息的數(shù)據(jù),定義兩個(gè)域
14、,一個(gè)是數(shù)據(jù)域,用來(lái)存放各種實(shí)際的數(shù)據(jù),如個(gè)人姓名信息,個(gè)人地址信息,出生日期等等,必要的時(shí)候還能提取出個(gè)人的信息。4、源程序 #include"stdio.h" #include"stdlib.h" #include"string.h" struct addresschar name30;char street40;char city20;char state3;char zip11;struct address *next;struct address *prior;struct address *start;struct add
15、ress *last;struct address *find(char *);void enter(void),search(void),save(void);void load(void),list(void);void mldelete(struct address *,struct address *);void dls_store(struct address *i,struct address *start,struct address *last);void inputs(char *,char*,int),display(struct address *);int menu_s
16、elect(void);int main(void)start=last=NULL;for(;)switch(menu_select()case 1:enter();break;case 2:mldelete(&start,&last);break;case 3:list();break;case 4:search();break;case 5:save();break;case 6:load();break;case 7:exit(0);return 0;int menu_select(void)char s80;int c;printf("*tongxunlu*n
17、");printf("*1.Enter a name *n");printf("*2.delete a name *n");printf("*3.list the file *n");printf("*4.search *n"); printf("*5.save the file *n");printf("*6.load the file *n");printf("*7.Quit *n"); printf("*n");do p
18、rintf("nplease enter your choice:");gets(s);c=atoi(s);while(c<0|c>7);return c; /*Enter names and address.*/void enter(void)struct address *info;for(;)info=(struct address *)malloc(sizeof(struct address);if(!info)printf("nout of memory");return;inputs("please enter name
19、:",info->name,30);if(!info->name0) break;/*stop entering*/inputs("please enter street:",info->street,40);inputs("please enter city:",info->city,20);inputs("please enter state:",info->state,3);inputs("please enter zip:",info->zip,10);dls_
20、store(info,&start,&last);/*entry loop*/*/void inputs(char *prompt,char *s,int count)char p225;do printf(prompt);fgets(p,254,stdin);if(strlen(p)>count)printf("nToo Longn"); while(strlen(p)>count);pstrlen(p)-1=0;/* remove newline character */strcpy(s,p);/*Create a doubly linked
21、 list in sorted order */void dls_store(struct address *i,/*new element*/struct address *start,/*first element in list*/struct address *last/*last element in list*/)struct address *old,*p;if(*last=NULL)/*first element in list*/i->next=NULL;i->prior=NULL;*last=i;*start=i;return;p=*start;/*start
22、at top of list*/old=NULL;while(p)if(strcmp(p->name,i->name)<0)old=p;p=p->next;elseif(p->prior)p->prior->next=i;i->next=p;i->prior=p->prior;p->prior=i;return;i->next=p;/*new first element*/i->prior=NULL;p->prior=i;*start=i;return;old->next=i;/*put on end*/
23、i->next=NULL;i->prior=old;*last=i;/*Remove an element from the list*/void mldelete(struct address *start,struct address *last)struct address *info;char s80;inputs("Enter name:",s,30);info=find(s);if(info)if(*start=info)*start=info->next;if(*start)(*start)->prior=NULL;else *last
24、=NULL;elseinfo->prior->next=info->next;if(info!=*last)info->next->prior=info->prior;else*last=info->prior;free(info); /*return memory to system*/*Find an address.*/struct address *find(char *name)struct address *info;info=start;while(info)if(!strcmp(name,info->name ) return i
25、nfo;info = info->next; /* get next address */printf("Name not found.n");return NULL; /*not found*/* Display the entire list */void list(void)struct address *info;info=start;while(info)display(info);info = info->next; /* get next address */printf("nn");/* this function actua
26、lly prints the fields in each address.*/void display(struct address *info)printf("%sn",info->name);printf("%sn",info->street);printf("%sn",info->city);printf("%sn",info->state);printf("%sn",info->zip);printf("nn");/* Look for
27、 a name in the list */void search(void)char name40;struct address *info;printf("Enter name to find:");gets(name);info = find(name);if(!info) printf("Not Foundn");else display(info);/* Save the file to disk */void save(void)struct address *info;FILE *fp;fp = fopen("mlist"
28、;,"wb");if(!fp)printf("Cannot open file.n");exit(1);printf("nSaving Filen");info = start;while(info)fwrite(info,sizeof(struct address),1,fp);info = info->next ; /* get next address */fclose(fp);/* Load the address file. */void load()struct address *info;FILE *fp;fp=f
29、open("mlist","rb");if(!fp)printf("Cannot open file.n");exit(1);/* free any previously allocated memory */while(start)info=start->next;free(info);start=info;/* reset top and bottom pointers */start=last=NULL;printf("nLoading Filen");while(!feof(fp)info=(struct address *) malloc(sizeof(struct address);if(!in
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑料板的三維成型技術(shù)考核試卷
- 出租車(chē)行業(yè)服務(wù)流程優(yōu)化考核試卷
- 2025年度展覽館布展施工合同協(xié)議書(shū)版
- 2025年度年度智能倉(cāng)儲(chǔ)物流商標(biāo)使用許可合同
- 初等教育的音樂(lè)欣賞任務(wù)考核試卷
- 2025年度稅務(wù)顧問(wèn)勞動(dòng)合同
- 2025年度移動(dòng)支付系統(tǒng)電子協(xié)議與支付安全協(xié)議合同
- 2025年度非全日制用工合同個(gè)稅計(jì)算與稅收籌劃與合規(guī)指導(dǎo)合同
- 中藥飲片批發(fā)質(zhì)量控制考核試卷
- 地質(zhì)勘探設(shè)備在地震勘探中的數(shù)據(jù)管理策略考核試卷
- GB/T 18476-2001流體輸送用聚烯烴管材耐裂紋擴(kuò)展的測(cè)定切口管材裂紋慢速增長(zhǎng)的試驗(yàn)方法(切口試驗(yàn))
- GA 1551.5-2019石油石化系統(tǒng)治安反恐防范要求第5部分:運(yùn)輸企業(yè)
- 拘留所教育課件02
- 沖壓生產(chǎn)的品質(zhì)保障
- 《腎臟的結(jié)構(gòu)和功能》課件
- 2023年湖南聯(lián)通校園招聘筆試題庫(kù)及答案解析
- 上海市徐匯區(qū)、金山區(qū)、松江區(qū)2023屆高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 護(hù)士事業(yè)單位工作人員年度考核登記表
- 天津市新版就業(yè)、勞動(dòng)合同登記名冊(cè)
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 人教版八年級(jí)上冊(cè)地理全冊(cè)單元測(cè)試卷(含期中期末試卷及答案)
評(píng)論
0/150
提交評(píng)論