版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、成績(jī) 南京工程學(xué)院 課程設(shè)計(jì)說(shuō)明書(論文) 題 目 通訊錄的制作 課 程 名 稱 軟件技術(shù)基礎(chǔ) 院(系、部、中心) 專 業(yè) 班 級(jí) 學(xué) 生 姓 名 學(xué) 號(hào) 設(shè) 計(jì) 地 點(diǎn) 指 導(dǎo) 教 師 設(shè)計(jì)起止時(shí)間: 目錄1課程設(shè)計(jì)任務(wù)書 32 概要設(shè)計(jì)(各模塊流程圖 ) 82.1 主函數(shù) 82.2 菜單選擇函數(shù) 92.3 建立函數(shù) 102.4 追加數(shù)據(jù)函數(shù) 112.5 數(shù)據(jù)查詢函數(shù) 122.6 數(shù)據(jù)刪除函數(shù) 132.7 數(shù)據(jù)顯示函數(shù) 142.8 數(shù)據(jù)保存函數(shù) 152.9 數(shù)據(jù)裝入函數(shù)163 詳細(xì)設(shè)計(jì) 173.1 主函數(shù)173.2 通訊錄菜單選擇183.3 通訊錄建立 193.4 通訊錄追加數(shù)據(jù)203.5
2、通訊錄數(shù)據(jù)查詢203.6 通訊錄數(shù)據(jù)刪除213.7 通訊錄數(shù)據(jù)顯示223.8 通訊錄數(shù)據(jù)保存223.9 通訊錄數(shù)據(jù)裝入234 調(diào)試報(bào)告 244.1 主函數(shù)244.2 通訊錄菜單選擇254.3 通訊錄建立 264.4 通訊錄追加數(shù)據(jù)284.5 通訊錄數(shù)據(jù)查詢294.6 通訊錄數(shù)據(jù)刪除314.7 通訊錄數(shù)據(jù)顯示314.8 通訊錄數(shù)據(jù)保存324.9 通訊錄數(shù)據(jù)裝入335 改進(jìn)意見(jiàn)及收獲體會(huì) 356 程序清單 367 主要參考文獻(xiàn) 42南京工程學(xué)院課程設(shè)計(jì)任務(wù)書 課 程 名 稱 軟件技術(shù)基礎(chǔ) 院(系、部、中心) 專 業(yè) 班 級(jí) 起 止 日 期 指 導(dǎo) 教 師 1課程設(shè)計(jì)應(yīng)達(dá)到的目的該實(shí)踐教學(xué)是軟件設(shè)計(jì)
3、的綜合訓(xùn)練,包括問(wèn)題分析、總體結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、程序設(shè)計(jì)基本技能和技巧。學(xué)生通過(guò)課程設(shè)計(jì)加深理解課堂教學(xué)內(nèi)容,要求學(xué)生在設(shè)計(jì)中逐步提高程序設(shè)計(jì)和調(diào)試能力,培養(yǎng)學(xué)生解決實(shí)際問(wèn)題的能力,算法分析能力和學(xué)生的科技論文寫作能力。2課程設(shè)計(jì)題目及要求題目:通訊錄的制作1問(wèn)題描述編寫一個(gè)通訊錄管理系統(tǒng), 用數(shù)據(jù)結(jié)構(gòu)中的(雙向)鏈表作數(shù)據(jù)結(jié)構(gòu), 每條信息至少包含 :姓名(NAME )、街道(STREET)、城市(CITY)、郵編(EIP)、國(guó)家(STATE)幾項(xiàng)。2. 基本要求:(1)輸入信息enter()(2)顯示信息display( )(3)查找以姓名作為關(guān)鍵字 search( )(4)刪除信息d
4、elete( )(5)存盤save ( )(6)裝入load( ) 作為一個(gè)完整的系統(tǒng),應(yīng)具有友好的界面和較強(qiáng)的容錯(cuò)能力,上機(jī)能正常運(yùn)行,盡量避免出現(xiàn)操作錯(cuò)誤時(shí)出現(xiàn)死循環(huán)。3課程設(shè)計(jì)任務(wù)及工作量的要求包括課程設(shè)計(jì)計(jì)算說(shuō)明書、圖紙、實(shí)物樣品等要求(1)分析問(wèn)題,給出數(shù)學(xué)模型,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。(2)算法設(shè)計(jì)在已經(jīng)選擇好數(shù)據(jù)結(jié)構(gòu)的前提下,為解決問(wèn)題設(shè)計(jì)算法。² 確定所需模塊對(duì)于稍復(fù)雜的程序設(shè)計(jì),要充分利用模塊化程序設(shè)計(jì)方法,自頂向下,逐步細(xì)化,在整體思路確定的情況下,考慮所需模塊數(shù),各模塊完成功能以及模塊之間的數(shù)據(jù)聯(lián)系和調(diào)用關(guān)系。² 各子模塊功能描述給出主要模塊的算法描述,用
5、流程圖或偽代碼表示。² 模塊之間的調(diào)用關(guān)系給出算法各模塊之間的關(guān)系圖示(3)源程序清單(草稿)為了提高工作效率,充分利用上機(jī)調(diào)試程序的時(shí)間,要求學(xué)生在上機(jī)之前給出源程序清單。(4)用測(cè)試數(shù)據(jù)去驗(yàn)證算法及程序的正確性正序、逆序、隨機(jī)數(shù)(5)算法分析經(jīng)過(guò)上機(jī)調(diào)試,源程序運(yùn)行正確,并且實(shí)現(xiàn)算法要求的功能,解決課程設(shè)計(jì)題目中給出的問(wèn)題后,分析算法的時(shí)間復(fù)雜度和空間復(fù)雜度。(6)提供的主程序可以象一個(gè)應(yīng)用系統(tǒng)一樣有主窗口,通過(guò)主菜單和分級(jí)菜單調(diào)用課程設(shè)計(jì)中要求完成的各個(gè)功能模塊,調(diào)用后可以返回到主菜單,繼續(xù)選擇其他功能進(jìn)行其他功能的選擇。(7)按照課程設(shè)計(jì)說(shuō)明書的格式規(guī)范撰寫課程設(shè)計(jì)說(shuō)明書,其
6、中正文包括: 需求分析:對(duì)系統(tǒng)要實(shí)現(xiàn)的功能進(jìn)行簡(jiǎn)明扼要的描述。 概要設(shè)計(jì):根據(jù)功能描述,建立系統(tǒng)的體系結(jié)構(gòu),即將整個(gè)系統(tǒng)分解成若干子功能模塊,并用框圖表示各功能模塊之間的銜接關(guān)系,并簡(jiǎn)要說(shuō)明各模塊的功能。 詳細(xì)設(shè)計(jì):詳細(xì)說(shuō)明各功能模塊的實(shí)現(xiàn)過(guò)程,算法、技巧等。重點(diǎn)功能部分要加上清晰的程序注釋。 效果及存在問(wèn)題:說(shuō)明系統(tǒng)的運(yùn)行效果(附上運(yùn)行界面圖片)、存在哪些不足以及預(yù)期的解決辦法。 心得體會(huì):談?wù)勛约涸谡n程設(shè)計(jì)過(guò)程中的心得體會(huì)。(8)課程設(shè)計(jì)說(shuō)明書用B5紙統(tǒng)一打印,裝訂按學(xué)校的統(tǒng)一要求完成。(9)課程設(shè)計(jì)的程序以軟盤形式上交,文件夾名稱為學(xué)生姓名及學(xué)號(hào)的組合。未經(jīng)指導(dǎo)教師許可或無(wú)故不到者,缺勤
7、率達(dá)50%的學(xué)生不能參加答辯。 答辯時(shí),設(shè)計(jì)者在5分鐘內(nèi)闡述自己的設(shè)計(jì)過(guò)程和最終結(jié)果,突出設(shè)計(jì)中遇到的主要問(wèn)題和解決方法,然后回答教師提問(wèn)。每位學(xué)生答辯總時(shí)間一般不超過(guò)15分鐘。 4主要參考文獻(xiàn)1 徐士良. 計(jì)算機(jī)軟件技術(shù)基礎(chǔ)M . 北京:清華大學(xué)出版社,2004.2 廖雷C程序設(shè)計(jì)實(shí)踐教程M北京: 高等教育出版社,2003.3 潭浩強(qiáng). C程序設(shè)計(jì)(第三版). 北京:清華大學(xué)出版社,2005.4 潭浩強(qiáng). C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版). 北京:清華大學(xué)出版社,1999.5 廖雷 羅代忠C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)實(shí)踐教程北京: 高等教育出版社,2005.6 廖雷C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)北京: 高等教育
8、出版社,2004.5課程設(shè)計(jì)進(jìn)度安排起 止 日 期工 作 內(nèi) 容2009年12月19日20日2009年12月21 日2009年12月22 日2009年12月23 日2009年12月24 日2009年12月25 日 熟悉任務(wù),設(shè)計(jì)算法,編寫源程序上機(jī)調(diào)試上機(jī)調(diào)試上機(jī)調(diào)試上機(jī)調(diào)試考核驗(yàn)收6成績(jī)考核辦法課程設(shè)計(jì)成績(jī)的評(píng)定:根據(jù)設(shè)計(jì)的完成情況、程序的編制質(zhì)量、獨(dú)立設(shè)計(jì)能力以及答辯情況綜合衡量,由答辯小組討論決定。原則上按以下公式計(jì)算: 課程設(shè)計(jì)成績(jī)工作表現(xiàn)×30%設(shè)計(jì)成果×40%考核測(cè)評(píng)×30% 工作表現(xiàn):獨(dú)立工作能力及設(shè)計(jì)過(guò)程的表現(xiàn)。占總成績(jī)的30%。設(shè)計(jì)成果:設(shè)計(jì)說(shuō)明
9、書(計(jì)算書、論文)、圖紙、程序、作品等的質(zhì)量。占總成績(jī)的40%??己藴y(cè)評(píng):課程設(shè)計(jì)結(jié)束前,指導(dǎo)教師應(yīng)采用考試或答辯等形式對(duì)所指導(dǎo)的學(xué)生進(jìn)行測(cè)評(píng)。測(cè)評(píng)成績(jī)占總成績(jī)的30%。有創(chuàng)新的同學(xué)根據(jù)具體情況適當(dāng)加分。教研室審查意見(jiàn):教研室主任簽字: 年 月 日院(系、部、中心)意見(jiàn):主管領(lǐng)導(dǎo)簽字: 年 月 日2概要設(shè)計(jì)各模塊流程圖(1) main( )開(kāi)始清屏Menu_select退出菜單 1 2 3 4 5 6 7 0刪除記錄查詢記錄追加記錄新建記錄顯示記錄保存記錄讀取記錄 Break Break Break Break Break Break Break Break 結(jié)束(2) menu_select
10、( )開(kāi)始清屏輸出菜單提示信息輸入選擇按鍵選擇數(shù)字<0或數(shù)字>7 Y N Break; 返回菜單 提示:輸入錯(cuò)誤 結(jié)束 (3) linklist create_list( )開(kāi)始生成頭節(jié)點(diǎn),定義指針等清屏頭指針為空headNULL打開(kāi)文件為空 Y N 文件未結(jié)束 動(dòng)態(tài)生成節(jié)點(diǎn)p打開(kāi)文件失敗 Y 讀入文件不是1 Y N 跳出 頭指針為空 p>next=q;p=q; headq;phead;p=q;指針指向下一節(jié)點(diǎn)關(guān)閉文件結(jié)束(4) insert_node()開(kāi)始定義指針p1,p2清屏輸出表頭,輸出“通訊錄信息的追加”動(dòng)態(tài)生成節(jié)點(diǎn)p 輸入追加者姓名p1=head;p2=p1-&g
11、t;next;P2不為空且p2指向的郵編小于p1指向的郵編 假 真 p2=p1;p2=p2->next; 真動(dòng)態(tài)生成節(jié)點(diǎn)p調(diào)用save()函數(shù)結(jié)束(5) search_list( )開(kāi)始定義指針p,數(shù)組name清屏輸出表頭,輸出“按姓名查詢” P指向head下一結(jié)點(diǎn)輸入查詢者姓名P不為空且要查詢姓名與表中姓名不等 真查找下一個(gè) p=p->next結(jié)束(6)del_node()開(kāi)始清屏輸出表頭,輸出“通訊錄信息的刪除”定義數(shù)組name,指針p,q指針后移p=head->next 輸出提示:要?jiǎng)h除者的姓名p不為空且輸入的姓名與表單中的姓名不相等 假 真 指針指向下一節(jié)點(diǎn) 真結(jié)束動(dòng)
12、態(tài)生成節(jié)點(diǎn)p調(diào)用save()函數(shù) (7) display_list( )開(kāi)始清屏輸出提示信息,表頭定義指針pp=head->next 輸出表頭P不為空 真 輸出數(shù)據(jù) 真結(jié)束指針指向下一節(jié)點(diǎn)P=p->next;輸出表尾(8) save ( )開(kāi)始清屏定義指針等輸出提示信息,表頭打開(kāi)文件為空 Y N輸出提示:保存文件 P不為空打開(kāi)文件失敗 將數(shù)據(jù)寫入文件指針指向下一節(jié)點(diǎn) 關(guān)閉文件 結(jié)束提示:保存成功(9) load( )開(kāi)始定義指針等清屏頭指針為空headNULL打開(kāi)文件為空 Y N文件未結(jié)束 動(dòng)態(tài)生成節(jié)點(diǎn)p打開(kāi)文件失敗 讀入文件不是1 Y 跳出 頭指針為空 p>next=q;p
13、=q;headq;phead;p=q;指針指向下一節(jié)點(diǎn)關(guān)閉文件結(jié)束3詳細(xì)設(shè)計(jì)#include<stdio.h> /*頭文件*/ #include<string.h>#include<stdlib.h>#include<conio.h> /*屏幕文件*/typedef struct /*定義結(jié)構(gòu)體*/ char name10; char phone13; char street14; char city10; char eip9; char country10; datatype; /*結(jié)構(gòu)體名*/typedef struct node datat
14、ype data; struct node * next;listnode;typedef listnode * linklist; linklist head;listnode *p;int menu_select( );linklist create_list(void);void insert_node(linklist head,listnode *p);listnode *search_list(linklist head);void del_node(linklist head); /*函數(shù)的說(shuō)明*/void display_list(linklist head); /*函數(shù)的使用
15、要在函數(shù)的定義之后*/void save(linklist *head);listnode *load(); void main() /*主函數(shù)*/ for( ; ; ) switch(menu_select() ) /*進(jìn)入菜單選擇*/ case 1: head=create_list(); /*選擇1,建立鏈表函數(shù)*/ break; case 2: insert_node(load(),p); /*選擇2,追加函數(shù)*/ break; case 3: p=search_list(load(); /*選擇3,查詢函數(shù)*/ if(p!=NULL)printf("n");pri
16、ntf("姓名國(guó) 家城 市街 道郵 編電 話n");printf("n");printf("%-8s%-8s%-8s%-8s%-12s%-12sn",p->,p->data.country,p->data.city,p->data.street,p->data.eip,p->data.phone);printf("n"); /*打印表頭信息*/ else printf("沒(méi)有你要找的人 ! n");getch(); /*提示:若未查到則提示*
17、/ break; case 4: del_node(load(); /*選擇4,刪除函數(shù)*/ break; case 5: display_list(load(); break; /*選擇5,顯示信息函數(shù)*/ case 6: save(head); /*選擇,保存函數(shù)*/ break; case 7: display_list(load(); /*選擇7,裝入文件函數(shù)*/ getch(); break; case 0: printf("t感謝您的使用! n"); /*選擇0,退出菜單*/ return; int menu_select() /*菜單選擇函數(shù)*/ int sn
18、; system("cls"); /*清屏*/ printf(" n"); printf(" n"); printf(" n"); printf(" *通訊錄管理系統(tǒng)*n"); printf(" n"); printf(" n"); printf(" 1.通訊錄鏈表的建立 n"); printf(" n"); printf(" 2.通訊者結(jié)點(diǎn)的插入 n"); printf(" n&quo
19、t;); printf(" 3.通訊錄鏈表的查詢 n"); printf(" n"); printf(" 4.通訊者結(jié)點(diǎn)的刪除 n"); printf(" n"); printf(" 5.通訊錄鏈表的輸出 n"); printf(" n"); printf(" 6.通訊錄鏈表的存盤 n"); printf(" n"); printf(" 7.通訊錄鏈表的裝入 n"); printf(" n");
20、printf(" 0.退出通訊錄管理系統(tǒng) n"); printf(" n"); printf( " 請(qǐng)選擇操作0-7 nn"); /*輸出菜單信息*/ for(; ;) scanf("%d",&sn); /*輸入選擇數(shù)字*/ if(sn<0|sn>7) printf("t輸入錯(cuò)誤n"); /*如果按鍵數(shù)字小于0或者大于7,提示出錯(cuò)*/ else break; return sn;linklist create_list(void) /*建立鏈表函數(shù)*/ linklist he
21、ad=(listnode *)malloc(sizeof(listnode); listnode *p,*rear; int flag=1; /*標(biāo)記1*/ system("cls"); /*清屏*/ printf(" n"); printf(" *n"); printf(" 通訊信息的建立 n"); printf(" *n"); rear=head; while(flag=1) p=(listnode *)malloc(sizeof(listnode); /*動(dòng)態(tài)生成節(jié)點(diǎn)p*/ printf(
22、"n"); printf("姓名國(guó) 家城 市街 道郵 編電 話n"); printf("n"); scanf("%s%s%s%s%s%s",p->,p->data.country,p->data.city,p->data.street,p->data.eip,p->data.phone); rear->next=p; /*指針指向下一節(jié)點(diǎn)*/ rear=p; printf("繼續(xù)建表嗎? (1.是/0.不):"); /*提示是否繼續(xù)建表
23、*/ scanf("%d",&flag); /*輸入選擇*/ if(flag=1) printf("創(chuàng)建成功!n"); /*若選擇1,則提示創(chuàng)建成功*/ rear->next=NULL; return head; /*返回頭節(jié)點(diǎn)*/ getch(); /*按任意鍵返回*/void insert_node(linklist head,listnode *p) /*追加節(jié)點(diǎn)函數(shù)*/ listnode *p1,*p2; system("cls"); /*清屏*/ printf(" *n"); printf(
24、" 訊信息的追加 n"); printf(" *n"); printf("n"); printf("姓名國(guó) 家城 市街 道郵 編電 話n"); printf("n"); p=(listnode *)malloc(sizeof(listnode); scanf("%s%s%s%s%s%s",p->,p->data.country,p->data.city,p->data.street,p->data.eip,p->data.
25、phone); p1=head; p2=p1->next; /*指針指向下一節(jié)點(diǎn)*/ while(p2!=NULL && strcmp(p2->data.eip,p->data.eip)<0) p1=p2; p2=p2->next; p1->next=p; p->next=p2; printf("插入成功!n");save(head); /*提示插入成功,調(diào)用保存函數(shù)*/ getch();listnode * search_list(linklist head) /*查詢函數(shù)/ listnode * p; char
26、name10; system("cls"); printf(" *n"); printf(" 通訊信息的查詢 n"); printf(" *n"); printf("*n"); printf("按姓名查詢n"); /*提示按姓名查詢*/ printf("*n"); p=head->next; printf("請(qǐng)輸入要查詢者的姓名: "); scanf("%s",name); while(p &&
27、 strcmp(p->,name)!=0) /*當(dāng)p不為空且輸入的姓名與信息中的姓名不符時(shí)*/ p=p->next; /*指針指向下一節(jié)點(diǎn)*/ return p;void del_node(linklist head) /*刪除函數(shù)*/ char name10; int jx; listnode *p,*q; system("cls"); /*清屏*/ printf(" *n");printf(" 通訊信息的刪除 n"); printf(" *n"); p=head->next;
28、 printf("請(qǐng)輸入要?jiǎng)h除者的姓名: "); /*按姓名刪除*/ scanf("%s",name); /*輸入姓名*/ while(p && strcmp(p->,name)!=0) p=p->next; if(p=NULL) /*若p為空*/ printf("沒(méi)有要?jiǎng)h除的通訊者!:n"); /*提示沒(méi)有該人*/ return; printf ("真的要?jiǎng)h除該結(jié)點(diǎn)嗎?(1.是/0.不):"); /*確認(rèn)是否刪除*/ scanf("%d",&
29、;jx); if (jx=1) q=head; while(q!=NULL && q->next!=p) q=q->next; q->next=p->next; free(p); printf("通訊者已被刪除!n"); save(head); /*調(diào)用保存函數(shù)*/ getch(); void display_list(linklist head) /*顯示信息函數(shù)*/ listnode * p; system("cls"); printf(" *n"); printf(" 通訊鏈表的輸出 n"); printf(" *n"); p=head->next; printf("n"); printf("姓名國(guó) 家城 市街 道郵 編電 話n"); while(p!=NULL)printf("n"); printf("%-8s%-8s%-8s%-8s%-12s%-12sn"
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 分裂情感性精神病
- 防震疏散演練主題班會(huì)
- 2024年非公路礦用車項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 3.3.2鹽類的水解影響因素及應(yīng)用 課件 高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- 智慧航安培訓(xùn)方案
- 吉林省2024七年級(jí)數(shù)學(xué)上冊(cè)第1章有理數(shù)階段綜合訓(xùn)練范圍1.9~1.14課件新版華東師大版
- 生命安全教育我的煩惱
- 草原上教案及教學(xué)反思
- 食堂食品安全培訓(xùn)
- 水利資源利用審批管理辦法
- 藥物健康宣教
- 哈利波特與混血王子
- 難治性高血壓診治護(hù)理課件
- 2024年南京科技職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 車載紅外熱像儀行業(yè)市場(chǎng)前景分析2024-2030年
- 如何做好醫(yī)院學(xué)科建設(shè)
- 設(shè)備安全調(diào)試維修作業(yè)安全培訓(xùn)
- 干部職工禁毒培訓(xùn)課件
- 景區(qū)服務(wù)提升培訓(xùn)課件
- 《消費(fèi)者八大心理》課件
- 補(bǔ)鉀原則和注意事項(xiàng)
評(píng)論
0/150
提交評(píng)論