




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄1 問題定義 .32 系統(tǒng)設(shè)計 321 總體設(shè)計422 詳細(xì)設(shè)計42.2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計 52.2.2 主控流程 62.2.3 輸入記錄模塊 62.2.4 查詢記錄模塊 .62.2.5 更新記錄模塊 62.2.6 輸出記錄模塊 .72.2.7 數(shù)據(jù)功能描述 .83 系統(tǒng)實現(xiàn) 83.1 編碼 83.1.1 程序預(yù)處理 . 93.1.2 主函數(shù)main() . 93.1.3 主菜單界面 .103.1.4 刪除用戶記錄.113.1.5 查詢用戶記錄 .123.1.6 插入用戶記錄.153.1.7 保存用戶數(shù)據(jù).173.1.8 從文件讀數(shù)據(jù).183.1.9 追加學(xué)生記錄.193.1.10 排序
2、用戶記錄.213.2 測試與調(diào)試 213.2.1 概述 .213.2.2 程序測試 .224 系統(tǒng)維護(hù) 245 歸納總結(jié) 255.1 開發(fā)經(jīng)驗 255.2 實訓(xùn)中遇到的問題及解決方法 255.3 設(shè)計中的不足之處255.4 感想和心得體會 266 參考資料 26簡易手機號碼管理系統(tǒng)本題目設(shè)計目的是訓(xùn)練用戶的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件及各種語句的運用如for();switch();if.else等方面的知識。通過本程序的訓(xùn)練,使用戶能對C語言的文件操作有一個更深刻的了解,初步掌握鏈表的一些結(jié)構(gòu)及構(gòu)成。掌握利用
3、單鏈表存儲結(jié)構(gòu)實現(xiàn)對用戶成績管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅實的基礎(chǔ)。1、問題定義創(chuàng)建一個簡易手機號碼管理系統(tǒng)。假設(shè)系統(tǒng)中每個號碼記錄包括電話號碼,姓名,話費,地址,是否掛失。2,剩余金額3,手機繳費,掛失,發(fā)信息,注銷,保存。及用戶信息,課程信息,用戶信息的修改、刪除和查詢等程序的運行效果如下圖所示,選擇任意菜單后,實現(xiàn)相應(yīng)功能。在問題定義階段要考慮題目的可行性和需求分析,接下來進(jìn)入開發(fā)階段,完成系統(tǒng)設(shè)計和系統(tǒng)實現(xiàn)的任務(wù)。2、系統(tǒng)設(shè)計21 總體設(shè)計采用模塊化的程序設(shè)計方法,即將較大的任務(wù)按照一定的原則分為一個個較小的任務(wù),然后分別設(shè)計各個小任務(wù)。需要注意的是劃分出來的模塊
4、應(yīng)該相對獨立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述。 簡易手機號碼管理系統(tǒng)輸入記錄模塊查詢記錄模塊更新記錄模塊輸出記錄模塊從文件讀入從鍵盤輸入按號碼查詢按姓名查詢追加記錄刪除記錄插入記錄排序記錄掛失記錄輸出至文件輸出至屏幕 圖2.1簡易手機號碼管理系統(tǒng)功能模塊圖本號碼管理系統(tǒng)要求采用單鏈表實現(xiàn),如圖2.1所示,它由如下四大功能模塊組成:l 輸入記錄模塊。完成將數(shù)據(jù)存入單鏈表的工作。記錄可以從以二進(jìn)制形式存儲的數(shù)據(jù)文件中讀入,也可從鍵盤逐個輸入客戶記錄。客戶記錄由客戶的基本信息和話費使
5、用信息字段構(gòu)成。當(dāng)從數(shù)據(jù)文件中讀入記錄時,也就是把在以記錄為單位存儲的數(shù)據(jù)文件中,將記錄逐條復(fù)制到單鏈表中。l 查詢記錄模塊。完成在單鏈表中查找滿足相關(guān)條件的客戶記錄。在此號碼管理系統(tǒng)中,用戶可以按照自己的號碼或姓名在單鏈表中進(jìn)行查找。若找到該用戶的記錄,則返回指向該用戶的記錄的指針。否則返回一個值為NULL的空指針,并打印出未找到該用戶記錄的提示信息。l 更新記錄模塊。完成對用戶記錄的維護(hù)。在此手機號碼管理系統(tǒng)中,它實現(xiàn)了對用戶記錄的追加、刪除、插入和排序操作,并將追加后的數(shù)據(jù)存入源數(shù)據(jù)文件。l 輸出記錄模塊。一是實現(xiàn)對用戶記錄的存盤,即將記錄寫入數(shù)據(jù)文件中;二是實現(xiàn)將記錄信息以表格的形式在
6、屏幕上打印出來。 22 詳細(xì)設(shè)計2.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計l 單鏈表node結(jié)構(gòu)體 struct arr /*定義數(shù)據(jù)結(jié)構(gòu)*/char PhoneNumber40;char name40; float telephonefare;char address40;int ok;int xinxi;caller100;這樣就定義了一個單鏈表的結(jié)構(gòu),結(jié)構(gòu)體struct arr 將用于存儲用戶的基本信息,它將作為單鏈表的數(shù)據(jù)結(jié)構(gòu)。2.2.2 主控main()函數(shù)執(zhí)行流程開始進(jìn)入主函數(shù)調(diào)用菜單函數(shù)進(jìn)入do-while主循環(huán)輸入06中的一個數(shù)值,選擇相應(yīng)操作調(diào)用函數(shù)Save(),進(jìn)行存數(shù)據(jù)操作結(jié)束輸入是否為0
7、?是否已對追加進(jìn)行了存盤盤是是否否判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能圖2.2 主控函數(shù)執(zhí)行流程圖本手機號碼管理系統(tǒng)執(zhí)行主流程如圖2.2所示。它先以可讀寫的方式打開數(shù)據(jù)文件,此文件默認(rèn)為“C:”,若該文件不存在,則新建此文件。當(dāng)打開文件操作成功后,從文件中一次讀出一條記錄,添加到新建的單薄鏈表中,然后執(zhí)行顯示主菜單和進(jìn)入主循環(huán)操作,調(diào)用dowhile函數(shù)。在判斷鍵值時,有效的輸入為本0至6之間的任意數(shù)值,其他輸入都被視為錯誤按鍵。若輸入為0,它會跳出系統(tǒng)操作。若選擇1,則調(diào)用input_message()函數(shù),執(zhí)行輸入用戶信息操作;若選擇2,則調(diào)用find_message(caller)函數(shù),
8、執(zhí)行查找用戶記錄操作;若選擇3,則調(diào)用delete_all(caller)函數(shù),執(zhí)行將用戶記錄全部刪除;若選擇4,則調(diào)用modify(caller)函數(shù),執(zhí)行查詢用戶記錄及修改信息,繳費,掛失等操作;若選擇5,則調(diào)用write(caller)函數(shù),執(zhí)行將用戶記錄存入數(shù)據(jù)文件的操作;若選擇6,則調(diào)用read1(caller)函數(shù),執(zhí)行讀文件操作,讀出用戶信息;2.2.3 輸入記錄模塊輸入記錄模塊主要實現(xiàn)將數(shù)據(jù)存入單鏈表中。當(dāng)從數(shù)據(jù)文件中讀出記錄時,調(diào)用fread(p,sizeof(caller),1,fp)文件讀取函數(shù),執(zhí)行一次從文件中讀取一條用戶使用記錄信息存入指針變量p所指的節(jié)點中的操作,并
9、且該操作在main()函數(shù)中執(zhí)行,即當(dāng)手機號碼管理系統(tǒng)進(jìn)入顯示菜單界面時,該操作已經(jīng)執(zhí)行了。若該文件中沒有數(shù)據(jù),系統(tǒng)會提示單鏈表為空,沒有任何用戶記錄可操作,此時,用戶應(yīng)選擇1,調(diào)用input_message()函數(shù),進(jìn)行用戶記錄的輸入,即完成在單鏈表l中添加記錄的操作。值得一提的是,這里的字符串和數(shù)值的輸入分別采用了函數(shù)來實現(xiàn),在函數(shù)中完成輸入數(shù)據(jù)任務(wù),并對數(shù)據(jù)進(jìn)行條件判斷,直到滿足條件為止,這樣一來,大大減少了代碼的重復(fù)和冗余,符合模塊化程序設(shè)計的特點。2.2.4 查詢記錄模塊查詢記錄模塊主要實現(xiàn)了在單鏈表中按電話號碼或姓名查找滿足相關(guān)條件的用戶記錄。在用戶選擇2,調(diào)用查詢函數(shù)find_m
10、essage(caller)中,根據(jù)提示輸入,就可以查到信息,如果輸入錯誤,小河會讓你從新輸入直到輸入正確為止,若找到該記錄,則返回指向該節(jié)點的指針;否則,返回一個空指針。2.2.5 更新記錄模塊此模塊主要實現(xiàn)了對用戶記錄的追加、刪除、插入和排序操作。因為用戶記錄是以單鏈表的結(jié)構(gòu)形式存儲的,所以這些操作都在單鏈表中完成。下面分別介紹著4個功能模塊。 追加記錄。該操作需要對單鏈表中目標(biāo)節(jié)點的數(shù)據(jù)域中的值進(jìn)行追加,它分兩步完成。第一步,追加要輸入的電話號碼,輸入后調(diào)用modify(caller)函數(shù),把該用戶的電話號碼和姓名及花費金額輸入;第二步,若輸入該用戶記錄,追加除電話號碼字段之外的各字段值
11、,并將存盤標(biāo)記變量save(),表示已經(jīng)對記錄進(jìn)行了追加,但還未執(zhí)行存盤操作。 刪除記錄。該操作完成刪除指定電話號碼或姓名的用戶記錄,它也分兩步完成。第一步,輸入要刪除的電話號碼或姓名,輸入后調(diào)用刪除函數(shù)delete all(),在單鏈表中逐個對節(jié)點數(shù)據(jù)域中電話號碼或姓名字段的值進(jìn)行比較,直到找到該電話號碼或姓名的用戶記錄,則返回指向該用戶記錄的節(jié)點指針;第二步,若找到該用戶記錄,將該用戶記錄所在節(jié)點的前驅(qū)節(jié)點的指針域,指向目標(biāo)節(jié)點的后繼節(jié)點,則系統(tǒng)會顯示你已成功刪除的電話號碼或姓名。 排序記錄。有關(guān)排序的算法很多,如冒泡排序、插入排序等。針對單鏈表結(jié)構(gòu)的特點,我們采用插入排序算法實現(xiàn)按總分的
12、從高到低對用戶記錄進(jìn)行排序,排序完成之后,即可按順序給名次字段賦值。在單鏈表中,實現(xiàn)插入排序的基本步驟如下:1) 新建一個單鏈表l,用來保存排序結(jié)果,其初始值為待排序單鏈表中的頭節(jié)點。2) 從待排序單鏈表中取出下一個節(jié)點,將其總分字段值與單鏈表l中的各節(jié)點中總分字段的值進(jìn)行比較,直到在鏈表l中找到總分小于它的節(jié)點。若找到此節(jié)點,系統(tǒng)將待排序鏈表中取出的節(jié)點插入此節(jié)點前,作為其前驅(qū)。否則,將取出的節(jié)點放在單鏈表l的尾部。3) 重復(fù)第二步,直到從待排序鏈表中取出的節(jié)點的指針域為NULL,即此節(jié)點為鏈表的尾部節(jié)點,排序完成。2.2.6 輸出記錄模塊當(dāng)把記錄輸出至文件時,調(diào)用FILE *fp;函數(shù),將
13、p指針?biāo)腹?jié)點中的各字段值,寫入文件指針fp所指的文件。當(dāng)把記錄輸出至屏幕時,用戶記錄信息以表格的形式在屏幕上打印出來。2.2.7 函數(shù)功能描述 l void delete_all(struct arr f4)/*注銷手機用戶信息*/delete_all()函數(shù)用于先在單鏈表l中找到滿足條件的用戶記錄的節(jié)點,然后刪除該節(jié)點。l save()函數(shù)原型:void save()save()函數(shù)用于將單鏈表l中的數(shù)據(jù)寫入磁盤中的數(shù)據(jù)文件。 l void read1(struct arr f6);函數(shù)原型:read1(;read1(struct arr f6);函數(shù)用于在單鏈表l中讀出用戶記錄。 l f
14、ind_message(struct arr f3) find_message(struct arr f3)函數(shù)用于菜單的查找。函數(shù)用于查找用戶的電話號碼或姓名,從而找到該用戶的信息。l void input_message(); input_message();函數(shù)用于用戶輸入信息。l 主函數(shù)main()整個手機號碼管理系統(tǒng)控制部分,其詳細(xì)說明可參考圖二。完成在上述系統(tǒng)設(shè)計后,即可著手進(jìn)行系統(tǒng)實現(xiàn)的工作,開始程序代碼的編寫。3、系統(tǒng)實現(xiàn)31 編碼3.1.1 程序預(yù)處理包括加載頭文件,定義結(jié)構(gòu)體、常量和變量,并對它們進(jìn)行初始化工作。#include<stdio.h>/*主函數(shù)*/#
15、include<string.h>#include<stdlib.h>int i,w,j=0;/*定義全局變量*/struct arrchar PhoneNumber40;char name40; float telephonefare;char address40;int ok;int xinxi;caller100; void input_message();/*添加手機用戶信息*/ void find_message(struct arr f3); /*查找信息*/ void delete_all(struct arr f4); /*注銷信息*/ void mod
16、ify(struct arr f5); /*修改手機用戶信息及繳費及掛失*/ void read1(struct arr f6); /*/ void save();main() int a,z=1;/*int a為你要輸入的數(shù)字*/ do printf("t*n"); printf("tttt手機用戶信息管理系統(tǒng)nn"); printf("已有的客戶人數(shù):%d n",j); printf("t功能選擇:nttt1.添加手機用戶信息nttt2.查找手機用戶信息nttt3.注銷nttt4.手機繳費,信息修改,掛失,發(fā)信息nttt
17、5.保存信息nttt6.讀入用戶信息nttt0.退出tn"); printf("t*n"); printf("nnn請輸入 0,1,2,3,4,5,6選擇:"); scanf("%d",&a); switch (a) case 0: z=0;break;/*退出*/ case 1: input_message();break;/*添加手機用戶信息*/ case 2: find_message(caller);break;/*查找手機用戶信息*/ case 3: delete_all(caller);break;/*刪
18、除手機用戶信息 */ case 4: modify(caller);break;/*修改手機用戶信息*/ case 5: write(caller);break; case 6: read1(caller);break; default: printf("你的輸入有誤,請重新輸入!n"); z=1; system("cls"); while(z=1);3.1.2 主函數(shù)main()main()函數(shù)主要實現(xiàn)了對整個程序的運行控制,以及相關(guān)功能模塊的調(diào)用。詳細(xì)分析可參考圖2。main() int a,z=1;/*int a為你要輸入的數(shù)字*/ do prin
19、tf("t*n"); printf("tttt手機用戶信息管理系統(tǒng)nn"); printf("已有的客戶人數(shù):%d n",j); printf("t功能選擇:nttt1.添加手機用戶信息nttt2.查找手機用戶信息nttt3.注銷nttt4.手機繳費,信息修改,掛失,發(fā)信息nttt5.保存信息nttt6.讀入用戶信息nttt0.退出tn"); printf("t*n"); printf("nnn請輸入 0,1,2,3,4,5,6選擇:"); scanf("%d&qu
20、ot;,&a); switch (a) case 0: z=0;break;/*退出*/ case 1: input_message();break;/*添加手機用戶信息*/ case 2: find_message(caller);break;/*查找手機用戶信息*/ case 3: delete_all(caller);break;/*刪除手機用戶信息 */ case 4: modify(caller);break;/*修改手機用戶信息*/ case 5: write(caller);break; case 6: read1(caller);break; default: prin
21、tf("你的輸入有誤,請重新輸入!n"); z=1; system("cls"); while(z=1);3.1.3 主菜單界面用戶進(jìn)入手機號碼管理系統(tǒng)時,需要顯示主菜單,提示用戶進(jìn)行選擇,完成相應(yīng)任務(wù)。此代碼被main()函數(shù)調(diào)用。int i,w,j=0;/*定義全局變量*/struct arrchar PhoneNumber40;char name40; float telephonefare;char address40;int ok;int xinxi;caller100; void input_message();/*添加手機用戶信息*/ vo
22、id find_message(struct arr f3); /*查找信息*/ void delete_all(struct arr f4); /*注銷信息*/ void modify(struct arr f5); /*修改手機用戶信息及繳費及掛失*/ void read1(struct arr f6); /*/ void save();main() int a,z=1;/*int a為你要輸入的數(shù)字*/ do printf("t*n"); printf("tttt手機用戶信息管理系統(tǒng)nn"); printf("已有的客戶人數(shù):%d n&q
23、uot;,j); printf("t功能選擇:nttt1.添加手機用戶信息nttt2.查找手機用戶信息nttt3.注銷nttt4.手機繳費,信息修改,掛失,發(fā)信息nttt5.保存信息nttt6.讀入用戶信息nttt0.退出tn"); printf("t*n"); printf("nnn請輸入 0,1,2,3,4,5,6選擇:"); scanf("%d",&a); switch (a) case 0: z=0;break;/*退出*/ case 1: input_message();break;/*添加手機用
24、戶信息*/ case 2: find_message(caller);break;/*查找手機用戶信息*/ case 3: delete_all(caller);break;/*刪除手機用戶信息 */ case 4: modify(caller);break;/*修改手機用戶信息*/ case 5: write(caller);break; case 6: read1(caller);break; default: printf("你的輸入有誤,請重新輸入!n"); z=1; system("cls"); while(z=1);3.1.4 刪除用戶記錄在
25、刪除操作中,系統(tǒng)會按用戶要求先找到該用戶記錄,然后從單鏈表中刪除該節(jié)點。void delete_all(struct arr f4)/*注銷手機用戶信息*/ int h,z=0;/*int h對結(jié)構(gòu)體是作循環(huán)操作*/ char ch,xh215; printf("n請輸入你要注銷的手機號碼:"); scanf("%s",xh2); for(i=0;i<j;i+)/*通過查找循環(huán)整體賦值來進(jìn)行刪除 */ if(strcmp(xh2,f4i.PhoneNumber)=0) for(h=i;h<j;h+) f4h=f4h+1; z=1; if(z=
26、1) j-;/*刪除手機用戶數(shù)量減 1 */ printf("刪除完畢"); if(z=0) printf("沒有查找到該手機用戶!nn"); save(); printf("請按任意鍵返回!"); fflush(stdin); getch();3.1.5 查詢用戶記錄當(dāng)用戶執(zhí)行此查詢?nèi)蝿?wù)時,系統(tǒng)會提示用戶進(jìn)行查詢字段的選擇,即按電話號碼或姓名進(jìn)行查詢。若此用戶記錄存在,則會打印輸出此用戶記錄的信息。void find_message(struct arr f3)/*查找信息*/ char xm15,ch,xh15; int a,b=
27、1,z=0; do printf("按姓名查找選擇1,按手機號碼查找選擇2n"); printf("請選擇:"); scanf("%d",&a);/*輸入查找方式 */ if(a!=1&&a!=2) printf("你的輸入有錯請重新選擇!n"); continue; else break; while(b=1); switch (a) case 1: printf("查找手機用戶姓名姓名:"); fflush(stdin); scanf("%s",&
28、amp;xm); printf("n手機號碼tt姓名tt話費tt地址tt掛失tt信息數(shù)n"); for(i=0;i<=j;i+) if(strcmp(,xm)=0)/*比較查找到姓名相同的手機用戶 */ if(f3i.ok=0) printf("%-stt%-stt%.2ftt%-stt未掛失tt%dn",f3i.PhoneNumber,,f3i.telephonefare,f3i.address,f3i.xinxi); else printf("你的帳號已經(jīng)掛失!"); z=1; printf(
29、"n"); if(z=0) printf("t沒有找到!nn"); break; case 2: printf("查找手機用戶手機號碼:"); fflush(stdin); scanf("%s",&xh); printf("n手機號碼tt姓名tt話費tt地址tt掛失tt信息數(shù)n"); for(i=0;i<=j;i+) if(strcmp(calleri.PhoneNumber,xh)=0)/*比較查找到手機號碼相同的手機用戶 */ if(f3i.ok=0) printf("
30、;%-stt%-stt%-.2ftt%-stt未掛失tt%dn",f3i.PhoneNumber,,f3i.telephonefare,f3i.address,f3i.xinxi); else printf("你的帳號已經(jīng)掛失!"); z=1; printf("n"); if(z=0) printf("t沒有找到!nn"); break; save(); printf("請按任意鍵返回!"); fflush(stdin); getch();3.1.6 插入用戶記錄在插入用戶記錄操作中,系統(tǒng)
31、會先按電話號碼查找到要插入的節(jié)點的位置,然后在該電話號碼之后插入一個新節(jié)點。在此手機號碼管理系統(tǒng)中,若數(shù)據(jù)文件為空,則從單鏈表的頭部開始插入用戶記錄節(jié)點;否則,將此生記錄節(jié)點添加在單鏈表的尾部。void modify(struct arr f5)/*插入,修改手機用戶信息及繳費及掛失*/ int b,z=0;/*定義z做為判斷 */ char xh315,ch,ch2; double money; do printf("請輸入要服務(wù)的手機用戶的手機號碼!nn輸入:"); scanf("%s",&xh3); for(i=0;i<j;i+) i
32、f(strcmp(xh3,f5i.PhoneNumber)=0)/*通過比較手機用戶的信息 */ if(f5i.telephonefare<10); printf("你的花費為 %f ,已經(jīng)小于10元,請迅速繳費",f5i.telephonefare); do printf("選擇所要進(jìn)行所要的服務(wù):ntt1.更換手機號碼tt2.修改姓名信息tt3.繳費nntt4.更改地址tt5.掛失tt6.發(fā)送信息n"); fflush(stdin); printf("選擇:"); fflush(stdin); scanf("%d&
33、quot;,&b); switch (b) case 1: printf("更換手機號碼為:"); fflush(stdin); scanf("%s",&f5i.PhoneNumber); printf("更換成功n"); break; case 2: printf("修改姓名信息為:"); fflush(stdin); scanf("%s",&); printf("修改成功n"); break; case 3: printf(&quo
34、t;繳納話費數(shù)量:"); fflush(stdin); scanf("%f",&money); f5i.telephonefare+=money; printf("繳費成功,你現(xiàn)在的花費為: %.2lfn",f5i.telephonefare); break; case 4: printf("更改地址為:"); fflush(stdin); scanf("%s",&f5i.address); printf("更改成功n"); break; case 5: printf(
35、"掛失:"); fflush(stdin); f5i.ok=1; printf("掛失成功,你的帳號已經(jīng)被凍結(jié)n"); break; case 6: printf("發(fā)信息:"); fflush(stdin); if(f5i.telephonefare<=1) printf("你的花費為 %.2lf ,已經(jīng)小于10元,請迅速繳費",f5i.telephonefare); else f5i.ok+=1; printf("發(fā)送成功n"); break; default: printf(&quo
36、t;你的選擇有誤,請重新選擇!n"); z=1; break; save(); if(z!=1) printf("n請問還要繼續(xù)本手機的服務(wù)嗎?(y/n)"); fflush(stdin); ch2=getchar(); while(z=1|ch2='y'); printf("n請問還要繼續(xù)其它服務(wù)嗎?(y/n)"); fflush(stdin); ch=getchar(); else printf("找不該手機用戶n"); fflush(stdin); while(ch='y'); save
37、(); printf("請按任意鍵繼續(xù)!"); ch=getchar();3.1.7保存用戶數(shù)據(jù)到文件在保存用戶記錄操作中,系統(tǒng)會將單鏈表中的數(shù)據(jù)寫入磁盤數(shù)據(jù)文件中,若用戶對數(shù)據(jù)已追加過但沒有專門進(jìn)行存盤操作,那么在退出系統(tǒng)時,系統(tǒng)會提示用戶是否存盤。void save()/*將文件保存 */ char ch; FILE * fp; if(fp=fopen("record.txt","ab+")=NULL) printf("can't open file"); exit(1); for(i=w;i<j
38、;i+)/*j為已經(jīng)存在的手機用戶數(shù)量 */ fprintf(fp,"%s %s %f %s %dn",calleri.PhoneNumber,,calleri.telephonefare,calleri.address,calleri.ok,calleri.xinxi); fclose(fp); printf("保存完畢!請按任意鍵繼續(xù)!"); fflush(stdin); getch();3.1.8從文件讀用戶數(shù)據(jù)void read1(struct arr f6)/*對手機用戶信息進(jìn)行從文件讀入,并排序顯示 */ int h;
39、 char ch; struct arr temp; FILE *fp; fp=fopen("record.txt","rb");/*打開文件 */ j=0; while(fscanf(fp,"%s %s %s %f %d %d",&callerj.PhoneNumber,&,&callerj.telephonefare,&callerj.address,&callerj.ok,&callerj.xinxi)!=-1) j+; printf("n手機號碼
40、ttt姓名ttt話費ttt地址ttt掛失n"); for(i=0;i<j;i+) for(h=i+1;h<j;h+) if(strcmp(f6i.PhoneNumber,f6h.PhoneNumber)>0) temp=f6h; f6h=f6i; f6i=temp; for(i=0;i<j;i+) printf("%-stt%-sttt%.2fttt%-sttt%dttt%dn",f6i.PhoneNumber,,f6i.telephonefare,f6i.address,f6i.ok); printf("讀入文件完畢,請按任意鍵繼續(xù)!"); fflush(stdin); getch(); 3.1.9追加用戶記錄,修改,繳費,掛失等并存到文件為方便添加用戶的各種信息,調(diào)用void input_
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能化系統(tǒng)安裝工程合同書
- 水利水電工程勞務(wù)承包合同
- 土地使用權(quán)征收補償合同協(xié)議
- 影視劇本供應(yīng)與購買合同書版
- 規(guī)范化離婚合同文本范文
- 采購合同簡版-鋼材專項
- 婦科培訓(xùn)課件模板
- 小學(xué)生唱音階課件圖片
- 公證員網(wǎng)絡(luò)知識產(chǎn)權(quán)考核試卷
- 墨水制備實驗室建設(shè)與管理考核試卷
- 中小學(xué)領(lǐng)導(dǎo)班子包級包組包班制度
- 汽車掛靠經(jīng)營合同協(xié)議書模板
- 基坑土方開挖專項施工方案(完整版)
- 電網(wǎng)工程設(shè)備材料信息參考價(2024年第四季度)
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 數(shù)據(jù)中心運維服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 2024-2025學(xué)年山東省濰坊市高一上冊1月期末考試數(shù)學(xué)檢測試題(附解析)
- 2024年湖南鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析word版
- 2023年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫含答案解析
- 供應(yīng)鏈管理課件第5章供應(yīng)鏈合作伙伴選擇與評價
- 4D現(xiàn)場管理培訓(xùn)ppt課件(PPT 45頁)
評論
0/150
提交評論