




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、河南理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院課程設(shè)計報告課程名稱:高級語言程序設(shè)計設(shè)計題目:班級通訊錄學(xué)生姓名:楊傳華學(xué) 號:專業(yè)班級:信管1002班指導(dǎo)教師:于金霞2021年 09 月 10 日一、設(shè)計題目及要求設(shè)計題目:班級通訊錄對象:信管10級一、技術(shù)參數(shù)和設(shè)計要求:1. 該系統(tǒng)主要處理通訊錄的相關(guān)信息。2. 通訊錄信息主要包括:姓名、班級、 、家庭 、電子郵件、通訊錄地址、 等內(nèi)容。3. 完成以下的操作:實現(xiàn)通訊錄信息的添加、修改、刪除和查詢。二、設(shè)計內(nèi)容與步驟1. 分析并建立滿足上述要求的數(shù)據(jù)結(jié)構(gòu)2. 算法
2、設(shè)計與分析3. 程序設(shè)計、實現(xiàn)、調(diào)試4. 課程設(shè)計說明書二、算法設(shè)計分析因為一個班級里面有很多學(xué)生,而且每個學(xué)生又包含很多信息如姓名、學(xué)號、 、郵箱等,這些信息又分別屬于不同的數(shù)據(jù)類型,但是每個學(xué)生所包含的數(shù)據(jù)信息成分相同,所以要用到構(gòu)造數(shù)據(jù)類型:結(jié)構(gòu)體。用到結(jié)構(gòu)體,應(yīng)為要能實現(xiàn)查找、修改、刪除等,所以又要用到鏈表的知識!要實現(xiàn)這些功能,要用到模塊化設(shè)計思想,用函數(shù)來解決問題!三、具體函數(shù)分析一、插入新結(jié)點在插入新結(jié)點之前,先創(chuàng)立一個只有指針域的頭結(jié)點,又指針p掃描全鏈表,實現(xiàn)尾插法,并返回頭指針。二、刪除結(jié)點用連個指針p,q掃描全鏈表,先通過學(xué)號找到要刪除的結(jié)點q,然后將q結(jié)點從鏈表中刪除,
3、然后釋放此結(jié)點!三、修改結(jié)點內(nèi)容通過學(xué)號找到此學(xué)生,通過switch語句選擇要修改的工程,然后進行修改。四、查找并輸出通過學(xué)號找到此學(xué)生,然后分別訪問并輸出此結(jié)點各項內(nèi)容。五、輸出通訊錄順序訪問鏈表各個結(jié)點,并輸出結(jié)點信息。六、保存為文件現(xiàn)在d盤里面創(chuàng)立一個讀寫類型文件“,然后通過文件類型指針fp訪問此文件并寫入通訊錄信息。七、釋放結(jié)點并結(jié)束程序從頭結(jié)點開始,使頭結(jié)點不斷后移,并將前面的結(jié)點釋放。四、算法流程圖goto:start開始start:輸入操作符czcz=?1新建2刪除3修改4查詢5輸出7退出系統(tǒng)結(jié)束6保存五、 函數(shù)運行情況及局部代碼一、主函數(shù)框架主函數(shù)要用到根本輸入輸出、switc
4、h語句轉(zhuǎn)換操作命令,然后用goto語句實現(xiàn)循環(huán)操作。具體如下:int main()int cz;/操作符struct stu *head,*q;head=(struct stu*)malloc(sizeof(struct stu);head->next=NULL;system("color 2e");/修改dos窗口前背景色,用兩個十六進制數(shù)表示printf("n*C語言課程設(shè)計*n");printf(" *班級通訊錄*nnn");printf("*1:新建通訊錄*n");printf("*2:刪除
5、通訊錄*n");printf("*3:修改通訊錄*n");printf("*4:查詢通訊錄*n");printf("*5:顯示全部記錄*n");printf("*6:保存為文件*n");printf("*7:釋放鏈表并結(jié)束程序*n");printf("*n");start :printf("輸入操作符1-7:");scanf("%d",&cz);switch(cz)case 1:q=(struct stu *)mall
6、oc(sizeof(struct stu);printf("t輸入姓名:");scanf("%s",q->name);printf("t輸入學(xué)號:");scanf("%d",&q->xh);printf("t輸入班級:");scanf("%d",&q->grade);printf("t 號:");scanf("%s",q->cel);printf("t家庭 :");scanf(
7、"%s",q->tel);printf("t輸入電子郵件:");scanf("%s",q->mail);printf("t通訊錄地址:");scanf("%s",&q->add);printf("t輸入 :");scanf("%s",&q->post);charu(head,q);printf("插入成功!n");break;case 2:/刪除head=del(head); break;case
8、 3:change(head);break;case 4:search(head);break;case 5:printall(head);break;case 6:printf("n");baoc(head); break;case 7:sf(head);exit (0);default: printf("輸入操作錯誤,重新"); goto start;return 0;其中用到輸出*來美化系統(tǒng)運行頁面,然后用system("color 2e");語句來修改dos界面前背景顏色,如; 二、插入函數(shù)struct stu *charu(
9、struct stu *head,struct stu *q)/插入新結(jié)點struct stu *p;for(p=head;p->next!=NULL;p=p->next);p->next=q;q->next=NULL;return head;運行界面如圖:本局部采用尾插法。三、刪除結(jié)點代碼如下:struct stu *del(struct stu *head)/刪除結(jié)點struct stu *p,*q;int a;/要刪除學(xué)生的學(xué)號if(head->next=NULL)printf("*通訊錄為空!*nnn");elseprintf(&quo
10、t;t輸入要刪除學(xué)生學(xué)號:");scanf("%d",&a);for(p=head,q=p->next;q->xh!=a&&q->next!=NULL;)p=p->next;q=p->next;if(q->xh=a)p->next=q->next;free(q);printf("刪除成功!n");else printf("no people have found!");return head;運行界面:通訊錄為空時:不為空時:四、查找輸入要查找學(xué)生學(xué)號,
11、找到后將其輸出,如圖:五修改學(xué)生信息先通過學(xué)號找到該學(xué)生,然后用switch語句選擇修改項,再用switch和goto語句實現(xiàn)是否循環(huán),運行如圖:六、保存文件在D:盤中創(chuàng)立一個讀寫文件,順序?qū)⒏鞴?jié)點信息保存進去,代碼為:struct stu *baoc(struct stu *head)/保存文件FILE *fp;struct stu *p=head;if(head->next=NULL)printf("*通訊錄為空!*nnn");else if(fp=fopen("D:班級通訊錄.txt","w")=NULL)printf(&
12、quot;can't open file!n");exit(0);while(p->next!=NULL)fwrite(p->next,sizeof(struct stu),1,fp);p=p->next;fclose(fp);printf("保存文件成功!nn");return head;運行如圖:七、釋放結(jié)點退出系統(tǒng)用指針p掃描鏈表,頭指針逐步后移,釋放結(jié)點p,代碼如下:void sf(struct stu *head)struct stu *p=head ;printf("釋放鏈表:n");while(p!=NU
13、LL)head=head->next;free(p);p=head;printf("釋放鏈表成功!n");運行如圖; 六、附錄:完整原代碼#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>struct stu char name100;/姓名int xh;/學(xué)號int grade;/年級char cel15;/ char tel50;/ char mail50;/郵件char add100;/地址char post15;/ st
14、ruct stu *next;struct stu *charu(struct stu *head,struct stu *q)/插入新結(jié)點struct stu *p;for(p=head;p->next!=NULL;p=p->next);p->next=q;q->next=NULL;return head;void search(struct stu *head)/查找結(jié)點并輸出struct stu *p;int a;/要查找學(xué)生的學(xué)號if(head->next=NULL)printf("*通訊錄為空!*nnn");elseprintf(&q
15、uot;t輸入要查詢學(xué)生學(xué)號:");scanf("%d",&a);for(p=head->next;p->next!=NULL;p=p->next)if(p->xh=a)printf(" 要查找的學(xué)生信息為:n");printf(" 姓名:");puts(p->name);printf("t學(xué)號: ");printf("%d",p->xh);printf("t年級:");printf("%dn",p-&
16、gt;grade);printf("t :");puts(p->cel);printf("t :");puts(p->tel);printf("t郵箱:");puts(p->mail);printf("t地址");puts(p->add);printf("t :");puts(p->post);printf("t查找成功!"):printf("nnn");break;if(p->xh=a)printf(" 要查
17、找的學(xué)生信息為:n");printf(" 姓名:");puts(p->name);printf("t年級:");printf("%dn",p->grade);printf("t :");puts(p->cel);printf("t :");puts(p->tel);printf("t郵箱:");puts(p->mail);printf("t地址");puts(p->add);printf("t :&q
18、uot;);puts(p->post);printf("t查找成功!"):printf("nnn");else printf("no people have found!n");struct stu *del(struct stu *head)/刪除結(jié)點struct stu *p,*q;int a;/要刪除學(xué)生的學(xué)號if(head->next=NULL)printf("*通訊錄為空!*nnn");elseprintf("t輸入要刪除學(xué)生學(xué)號:");scanf("%d&quo
19、t;,&a);for(p=head,q=p->next;q->xh!=a&&q->next!=NULL;)p=p->next;q=p->next;if(q->xh=a)p->next=q->next;free(q);printf("刪除成功!n");else printf("no people have found!");return head;struct stu *change(struct stu *head)/修改結(jié)點內(nèi)容int b,a,c;struct stu *p;if(
20、head->next=NULL)printf("*通訊錄為空!*nnn");elseprintf(" 輸入要修改學(xué)生學(xué)號:");scanf("%d",&a);for(p=head->next;p!=NULL;p=p->next)if(p->next->xh=a)start:printf(" 輸入想要修改什么?n");printf("ttt1:修改姓名n");printf("ttt2:修改學(xué)號n");printf("ttt3:修改
21、年級n");printf("ttt4: n");printf("ttt5: n");printf("ttt6:郵件n");printf("ttt7:地址n");printf("ttt8: n");printf(" 請輸入你的選擇:");scanf("%d",&b);switch(b)case 1:printf("t輸入新姓名:");scanf("%s",p->name);break;case
22、2:printf("t輸入新學(xué)號:");scanf("%d",&p->xh);break;case 3:printf("t輸入新的班級:");scanf("%d",&p->grade);break;case 4:printf("t輸入新的 號:");scanf("%s",p->cel);break;case 5:printf("t輸入新的 號:");scanf("%s",p->tel);break
23、;case 6:printf("t輸入新的郵箱:");scanf("%s",p->mail);break;case 7:printf("t輸入新的地址:");scanf("%s",p->add);break;case 8:printf("t輸入新的 ;");scanf("%s",p->post);break;default: printf("輸入操作錯誤,請重新輸入:"); printf("修改成功!n");print
24、f(" 是否要修改其他項? 1:是 2:否n");printf(" 請輸入你的選擇:");scanf("%d",&c);switch(c)case 1:goto start;case 2:break;return head;void printall(struct stu *head)/輸出全部通訊錄struct stu *p=head->next;while(1)if(p=NULL) printf("*通訊錄為空!*nnn");break;else if(p->next=NULL)printf
25、(" 姓名:");puts(p->name);printf("t學(xué)號:");printf("%dn",p->xh);printf("t年級:");printf("%dn",p->grade);printf("t :");puts(p->cel);printf("t :");puts(p->tel);printf("t郵箱:");puts(p->mail);printf("t地址:"
26、);puts(p->add);printf("t :");puts(p->post);printf("輸出成功!n");printf("nnn");break;else printf(" 姓名:");puts(p->name);printf("t學(xué)號:");printf("%dn",p->xh);printf("t年級:");printf("%dn",p->grade);printf("t :&q
27、uot;);puts(p->cel);printf("t :");puts(p->tel);printf("t郵箱:");puts(p->mail);printf("t地址:");puts(p->add);printf("t :");puts(p->post);printf("n");p=p->next;continue;printf("輸出成功!n");struct stu *baoc(struct stu *head)/保存文件FILE
28、 *fp;struct stu *p=head;if(head->next=NULL)printf("*通訊錄為空!*nnn");else if(fp=fopen("D:班級通訊錄.txt","w")=NULL)printf("can't open file!n");exit(0);while(p->next!=NULL)fwrite(p->next,sizeof(struct stu),1,fp);p=p->next;fclose(fp);printf("保存文件成功!n
29、n");return head;void sf(struct stu *head)struct stu *p=head ;printf("釋放鏈表:n");while(p!=NULL)head=head->next;free(p);p=head;printf("釋放鏈表成功!n");int main()int cz;/操作符struct stu *head,*q;head=(struct stu*)malloc(sizeof(struct stu);head->next=NULL;system("color 2e");/修改dos窗口前背景色,用兩個十六進制數(shù)表示printf("n*C語言課程設(shè)計*n");printf(" *班級通訊錄*nnn");printf("*1:新建通訊錄*n");printf("*2:刪除通訊錄*n");printf("*3:修改通訊錄*n");printf("*4:查詢通訊錄*n");printf("*5:顯示全部記錄*n");print
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河北省安全員-C證考試題庫
- 2025湖南省安全員《C證》考試題庫及答案
- 南京審計大學(xué)《數(shù)學(xué)學(xué)科與教學(xué)指導(dǎo)實踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南醫(yī)學(xué)院《數(shù)字時代品牌傳播》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱城市職業(yè)學(xué)院《會計電算化實訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 做賬實操-保險行業(yè)的賬務(wù)處理示例
- 2025青海省建筑安全員A證考試題庫附答案
- 南京城市職業(yè)學(xué)院《主任工作技能》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北國土資源職業(yè)學(xué)院《精神分析理論與技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 徐州工業(yè)職業(yè)技術(shù)學(xué)院《三維建模與貼圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年南京機電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 投標技術(shù)服務(wù)和質(zhì)保期服務(wù)計劃
- 2023年全國高考體育單招考試英語試卷試題真題(精校打印版)
- 音樂欣賞與實踐(中職音樂)全套教學(xué)課件
- 粵語活動策劃方案模板范文相關(guān)7篇
- 蘇教版三年級數(shù)學(xué)下冊教學(xué)計劃及進度表
- 中國春節(jié)ppt英文版 Chinese New Year
- 高中數(shù)學(xué)《6.2 排列與組合》課件與導(dǎo)學(xué)案
- 腸道健康講座活動策劃
- 小學(xué)三年級下冊數(shù)學(xué)教案3篇
- 《云南紅色旅游》課件
評論
0/150
提交評論