教師信息管理系統(tǒng)(C語(yǔ)言課程設(shè)計(jì))_第1頁(yè)
教師信息管理系統(tǒng)(C語(yǔ)言課程設(shè)計(jì))_第2頁(yè)
教師信息管理系統(tǒng)(C語(yǔ)言課程設(shè)計(jì))_第3頁(yè)
教師信息管理系統(tǒng)(C語(yǔ)言課程設(shè)計(jì))_第4頁(yè)
教師信息管理系統(tǒng)(C語(yǔ)言課程設(shè)計(jì))_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、計(jì)算機(jī)科學(xué)與技術(shù) 專業(yè) 年級(jí) 班供以下功能:民小字()號(hào)1、認(rèn)真閱讀C語(yǔ)言課程設(shè)計(jì)指導(dǎo)書,明確課程設(shè)計(jì)的目的、意義和要求;2、快速總結(jié) C 程序設(shè)計(jì)語(yǔ)言的精髓,如:函數(shù)的概念、函數(shù)的設(shè)計(jì)和函數(shù)的調(diào)用;、快速熟悉 TuberC 或 C+的上機(jī)環(huán)境。能熟練進(jìn)行高級(jí)編輯操工作效率。4的總體設(shè)計(jì)方案、確定時(shí)間進(jìn)度。如果是多人共一題,則要首先完成小組內(nèi)的人員分工及安排,不允許重題現(xiàn)象。5學(xué)習(xí)并了解良好的程序設(shè)計(jì)風(fēng)格。按質(zhì)、按量、并按時(shí)間完成課程設(shè)計(jì)的任務(wù)。6提供可運(yùn)行的課程設(shè)計(jì)系統(tǒng),參加上機(jī)面試答辯。本次課程設(shè)計(jì)的重點(diǎn)是:學(xué)會(huì)設(shè)計(jì)并編寫函數(shù),掌握好各函數(shù)之間的調(diào)用關(guān)系;利用文件操作函數(shù),建立數(shù)據(jù)庫(kù)并完成

2、對(duì)數(shù)據(jù)庫(kù)的各種操作;掌握幾種典型算法的應(yīng)用(如:冒泡法、選擇排序法和折半書寫必要文檔的綜合處理能力,從實(shí)踐中學(xué)習(xí)并體會(huì)程序設(shè)計(jì)的結(jié)構(gòu)化思想和設(shè)計(jì)方法。四、進(jìn)度安排依照教學(xué)計(jì)劃,課程設(shè)計(jì)時(shí)間為 3周。按照軟件工程的思想,軟件頁(yè)腳內(nèi)容民小字()號(hào)“拿到題目就編碼”的現(xiàn)象。建議將時(shí)間分為三個(gè)階段:第一階段,根據(jù)題目要求,拿出系統(tǒng)的總體設(shè)計(jì)方案:即構(gòu)思各程序模塊的算法,并畫出相應(yīng)的 N-S圖,同時(shí)編寫相應(yīng)的文檔;第二階段,根據(jù) N-S 圖編寫程序代碼并單獨(dú)調(diào)試,再將調(diào)試通過的各個(gè)子模塊進(jìn)行集成調(diào)試;第三階段,歸納文檔資料,按要求填寫在課程設(shè)計(jì)說明書上,并參加答辯。三個(gè)階段時(shí)間分配的大概比例是: :45

3、:20。五、完成后應(yīng)上交的材料1課程設(shè)計(jì)的題目、系統(tǒng)的總功能和各子模塊的功能;2題目的設(shè)計(jì)思想(或算法)簡(jiǎn)述;主要程序的框圖(要求用 N-S4源程序代碼(要求在關(guān)鍵的位置有注釋,從而增加程序的可讀5課程設(shè)計(jì)的總結(jié)報(bào)告,主要包括以下內(nèi)容:(1)課程設(shè)計(jì)中遇到的主要問題和解決方法;(2)你的創(chuàng)新和得意之處;()設(shè)計(jì)中存在的不足及改進(jìn)的設(shè)想;(4)本次課程設(shè)計(jì)的感想和心得體會(huì)。頁(yè)腳內(nèi)容民小字()號(hào)以上完成的源程序及相關(guān)文檔,填寫在課程設(shè)計(jì)說明書上,要求干凈整潔,符合課程設(shè)計(jì)的要求和規(guī)范。六、總評(píng)成績(jī)指導(dǎo)教師系 主 任簽名日期年年月月日日審核日期目錄一題目設(shè)計(jì)思想簡(jiǎn)述5二程序的 S 圖72.1 總程序

4、的 S 圖72.2 各子函數(shù)的 S 圖72.2.1 教師信息錄入函數(shù)82.2.2 教師信息瀏覽函數(shù)82.2.3 教師信息刪除函數(shù)92.2.4 教師信息查詢函數(shù)92.2.5 教師信息排序函數(shù)10三源程序代碼11四程序運(yùn)行效果圖33頁(yè)腳內(nèi)容民小字()號(hào)4.1 登陸界面334.2 菜單欄334.3 錄入功能344.4 瀏覽功能344.5 刪除功能354.6 查詢功能354.7 排序功能36五總結(jié)報(bào)告375.1 5.2 你的創(chuàng)新和得意之處75.3 設(shè)計(jì)中存在的不足及改進(jìn)的設(shè)想75.4 本次課程設(shè)計(jì)的感想和心得體會(huì)8一題目設(shè)計(jì)思想簡(jiǎn)述查詢教師信息的函數(shù)刪除教師信息的函數(shù)瀏覽教師信息的函數(shù)教師信息排序的函

5、數(shù)退出系統(tǒng)教 師信 息的 函數(shù)如上圖所示,該教師信息管理系統(tǒng)主要是一個(gè)以動(dòng)態(tài)鏈表的應(yīng)用為基礎(chǔ)來實(shí)現(xiàn)對(duì)教師信息的錄入,查詢,刪除等功能。頁(yè)腳內(nèi)容民小字()號(hào)定義教師結(jié)構(gòu)體如下:struct teacherlong num;/教師號(hào)char name20;/姓名char sex5;/性別int age;/年齡char edu20;/學(xué)歷char title20;/職稱long wage;/工資char addr100; /地址char telep15;/電話struct teacher *next;*head=NULL;數(shù)實(shí)現(xiàn)??诹顬?123456。菜單欄函數(shù)通過用 switch不同的子函數(shù)實(shí)現(xiàn)。

6、錄入教師信息通過建立動(dòng)態(tài)單鏈表來實(shí)現(xiàn)。瀏覽教師信息則通過將鏈表所有數(shù)據(jù)順序輸出來實(shí)現(xiàn)。查詢功能只要從鏈表頭開始不斷往下一個(gè)結(jié)點(diǎn)讀取信息跟所要查找的信息比較,直到讀取到的信息跟所要查找的信息相同或鏈表尾為止,并把此結(jié)點(diǎn)的信息輸出。刪除教師信息的函數(shù)是通過查找鏈表中有該信息的結(jié)點(diǎn)后將該結(jié)頁(yè)腳內(nèi)容民小字()號(hào)點(diǎn)移出鏈表,即使該結(jié)點(diǎn)前一個(gè)結(jié)點(diǎn)直接指向該結(jié)點(diǎn)后面的結(jié)點(diǎn)來達(dá)到刪除信息的目的。排序函數(shù)是通過交換結(jié)點(diǎn)在鏈表中的位置來實(shí)現(xiàn)的,即使得各結(jié)點(diǎn)在鏈表中的位置便是所要得到的排序該信息應(yīng)在的位置,這樣直接順序輸出鏈表的信息時(shí)就能按所要的排序輸出了。二程序的 S圖2.1 總程序的 S 圖TF退出循環(huán)Ti=3

7、?FTFb=2?F教 師 T b=3?信 息FF錄 入功 能教 師 T b=4?民小字()號(hào)b=5?F教 師 退 出 系信 息 統(tǒng)排 序功 能說明:各功能都是通過調(diào)用子函數(shù)來實(shí)現(xiàn)的。2.2 各子函數(shù)的 S圖子函數(shù)主要包括教師信息錄入,教師信息瀏覽,教師信息刪除,教師信息查詢和教師信息排序等 5 個(gè)。在退出系統(tǒng)時(shí)調(diào)用了一個(gè)保存信息到文件中的函數(shù),該函數(shù)只是簡(jiǎn)單的應(yīng)用了文件的讀寫功能,在此不寫出其 S 圖。2.2.1 教師信息錄入函數(shù)p1=(struct teacher *)malloc(LEN)輸入一個(gè)教師號(hào) p1-numTFT 鏈表頭為空?FHead=p1p3=head當(dāng) p3-next 不為

8、空輸入教師的姓名,性別,年齡,學(xué)歷,職稱,月薪,住址,電話TFp2=p1頁(yè)腳內(nèi)容p1=(struct teacher *)malloc(LEN)輸入一個(gè)教師號(hào) p1-num民小字()號(hào)p2-next=NULL說明:p1=(struct teacher *)malloc(LEN)中 LEN是在程序開頭的宏定義(#define LEN sizeof(struct teacher)。其中 n 為全局變量,用來統(tǒng)計(jì)鏈表的結(jié)點(diǎn)數(shù),以下出現(xiàn)的 n 都是同一個(gè)。2.2.2 教師信息瀏覽函數(shù)p=headTF輸出 p 所指向的位置中的教師的所有信息直到 p 為空說明:實(shí)際程序中在鏈表頭為空是提供了可以瀏覽之前保

9、存在文件中的信息的功能,當(dāng)選擇該功能時(shí)就調(diào)用了一個(gè)讀取文件的函數(shù)。該函數(shù)只是對(duì)文件讀寫的簡(jiǎn)單應(yīng)用,詳細(xì)請(qǐng)看后面第三部分代碼,這里不寫出其 N-S 圖。2.2.3 教師信息刪除的函數(shù)TF輸入要?jiǎng)h除教師信息的教師號(hào) ip1=headTFp2=p1Ti!=p1-num?FFhead=p1-next p2-next=p1-next中沒有該教師號(hào)”n=n-1民小字()號(hào)2.2.4 教師信息查詢的函數(shù)在查詢方面程序?yàn)橛脩籼峁┝?4 種不同方式的查詢,每一種方式的查詢?yōu)橐粋€(gè)子函數(shù),此時(shí)也是采j=0一個(gè)菜單欄函數(shù)進(jìn)行選擇查詢方式并調(diào)用該種方式的函數(shù)。菜單欄函數(shù)跟主程序菜單欄的算法一樣,此處只給出查詢函數(shù)的 S

10、 圖。TFp=headTi跟p中對(duì)應(yīng)信息不等?輸出 p 所指向的位置的教師的所有信息FTj 不為 0?輸出“已錄入的信息中不存在符合 i 的信息的教師F說明:該S 圖是對(duì)應(yīng)姓名,教師號(hào),職稱,年齡四種查找方式的函數(shù)的。當(dāng)選擇教師號(hào)查找時(shí),輸入i 的即為教師號(hào),與i 做比較的為 p 中的教師號(hào),選擇其他查找方式時(shí)類似。2.2.5 教師信息排序函數(shù)T鏈表頭不為空?F民小字()號(hào)給出排序函數(shù)的 S 圖。輸出“還未錄入過教師信息”并退出函數(shù)T第二個(gè)結(jié)點(diǎn)為空?p1=headFp2=head-nexti=1當(dāng) i 小于 n 時(shí)j=0TFTFhead=p2p1=headp2=p1-next調(diào)用教師信息瀏覽函

11、數(shù)頁(yè)腳內(nèi)容民小字()號(hào)三源程序代碼#include #include #include #include #define LEN sizeof(struct teacher)/宏定義結(jié)構(gòu)體字節(jié)數(shù)int n=0;struct teacher/定義結(jié)構(gòu)體long num;/教師號(hào)char name20;/姓名char sex5;/性別int age;/年齡char edu20;/學(xué)歷char title20;/職稱long wage;/工資char addr100;/地址char telep15;/電話頁(yè)腳內(nèi)容民小字()號(hào)struct teacher *next;/指向下一個(gè)結(jié)點(diǎn)*head=NUL

12、L;void key()/口令檢查的函數(shù)int i;long a;for(i=0;inext)if(fwrite(p,sizeof(struct teacher),1,fp)!=1)頁(yè)腳內(nèi)容民小字()號(hào)printf(n此處數(shù)據(jù)有誤n);fclose(fp);exit(0);void read()/從文件讀出數(shù)據(jù)的函數(shù)struct teacher teach299,temp;int i=0;FILE *fp;char filename20;printf(n請(qǐng)輸入存有教師信息的文件名:);scanf(%s,filename);if(fp=fopen(filename,rb)=NULL)printf

13、(n無法打開文件n);exit(0);fseek(fp,-sizeof(struct teacher),2);/*將位置指針從文件末尾后退一個(gè)結(jié)構(gòu)體的字節(jié)數(shù)*/fread(&temp,sizeof(struct teacher),1,fp);/*從所指向的文件中讀出數(shù)據(jù)存儲(chǔ)到結(jié)構(gòu)體變量 temp 中*/fseek(fp,0,0);/將位置指針移到文件的開頭if(fread(&teachi,sizeof(struct teacher),1,fp)=1)/*判斷文件開頭讀入的數(shù)據(jù)是否為空*/頁(yè)腳內(nèi)容民小字()號(hào)printf(n存有的教師信息如下:n);while(teachi.num!=temp.

14、num)/進(jìn)行循環(huán)讀取文件教師號(hào):%ld,姓名:%s,性別:%s,年齡:%d,學(xué)歷:%s,teachi.num,,teachi.sex,teachi.age,);職稱:%sn月薪:%ld,住址:%s,電話:%sn,teachi.title,teachi.wage,teachi.addr,teachi.telep);i=i+1;fread(&teachi,sizeof(struct teacher),1,fp);/*從文件中讀入數(shù)據(jù)存儲(chǔ)到結(jié)構(gòu)體變量 【i】中*/輸出文件中的最后一個(gè)信息printf(教師號(hào):%ld,姓名:%s,性別:%s,年齡:%d,學(xué)歷

15、:%s,teachi.num,,teachi.sex,teachi.age,);printf(職稱:%sn月薪:%ld,住址:%s,電話:%sn,teachi.title,teachi.wage,teachi.addr,teachi.telep);fclose(fp);else printf(該文件中無教師信息文件為空時(shí)輸出此處void creat()/錄入教師信息的函數(shù)struct teacher *p1,*p2,*p3;p1=p2=(struct teacher *)malloc(LEN);/*申請(qǐng)一個(gè)結(jié)構(gòu)體字節(jié)數(shù)的空間用來存儲(chǔ)一個(gè)教師的信息*/頁(yè)

16、腳內(nèi)容民小字()號(hào)printf(請(qǐng)輸入一位教師的教師號(hào)(結(jié)束錄入請(qǐng)輸入 0);scanf(%ld,&p1-num);if(p1-num!=0)/判斷用戶是要結(jié)束錄入還是要存儲(chǔ)信息if(head=NULL) head=p1;/*判斷鏈表是否為空,是則將鏈表頭指向 p1*/else /鏈表不為空則將鏈表尾指向 p1p3=head;/p3用來記錄鏈表的尾部while(p3-next!=NULL)/*若p3不是鏈表尾則將p3指向下一個(gè)結(jié)點(diǎn)*/p3=p3-next;p3-next=p1;/將最后一個(gè)結(jié)點(diǎn)指向 p1while(p1-num!=0)/判斷用戶是否結(jié)束錄入功能/錄入該教師號(hào)的教師對(duì)應(yīng)的信息pr

17、intf(姓名: );scanf(%s,p1-name);printf(性別:);scanf(%s,p1-sex);printf(年齡:);scanf(%d,&p1-age);printf(學(xué)歷:);scanf(%s,p1-edu);printf(職稱:);頁(yè)腳內(nèi)容民小字()號(hào)scanf(%s,p1-title);printf(月薪:);scanf(%ld,&p1-wage);printf(住址:);scanf(%s,p1-addr);printf(電話:);scanf(%s,p1-telep);n=n+1;/給統(tǒng)計(jì)錄入的教師數(shù) n 加一/*判斷是否為第一個(gè)錄入的信息,是則將鏈表頭指向 p1,

18、否則將p2 指向 p1*/if(n=1) head=p1;else p2-next=p1;p2=p1;/p2 用來記錄鏈表的最后一個(gè)結(jié)點(diǎn)p1=(struct teacher *)malloc(LEN);/重新申請(qǐng)空間printf(請(qǐng)輸入一位教師的教師號(hào)結(jié)束錄入請(qǐng)輸入 0): );scanf(%ld,&p1-num);p2-next=NULL;/將最后一個(gè)結(jié)點(diǎn)指向空void print()/輸出教師信息的函數(shù)struct teacher *p;int i;p=head;if(head!=NULL)/判斷鏈表是否為空頁(yè)腳內(nèi)容民小字()號(hào)printf(n這%d位教師的信息為:n,n);do教師號(hào):%

19、ld,姓名:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn,p-num,p-name,p-sex,p-age,p-edu,p-title);printf( 月薪:%ld,住址:%s,電話:%sn,p-wage,p-addr,p-telep);p=p-next;/將下一個(gè)結(jié)點(diǎn)的首地址賦給pwhile(p!=NULL);/到鏈表尾時(shí)結(jié)束循環(huán)else/鏈表為空時(shí)執(zhí)行以下部分printf(n你此次登錄系統(tǒng)還沒有錄入教師信息,可進(jìn)行以下操作:n);printf(1:【瀏覽以前保存在文件中的教師信息】3:【退出系統(tǒng)】2:【開始錄入教師信息】n);printf(4:【返回菜單】n);printf(請(qǐng)

20、選擇:);scanf(%d,&i);while(i4)選擇無效,請(qǐng)重新輸入正確選項(xiàng):);scanf(%d,&i);頁(yè)腳內(nèi)容民小字()號(hào)if(i=1) read();/調(diào)用從文件讀取數(shù)據(jù)的函數(shù)if(i=2) creat();/調(diào)用錄入信息的函數(shù)if(i=3) exit(0);/退出系統(tǒng)void del()/刪除教師信息的函數(shù)struct teacher *p1,*p2;long i;if(head=NULL)/判斷鏈表是否為空printf(n還未錄入過教師信息鏈表為空時(shí)輸出return;printf(請(qǐng)輸入要?jiǎng)h除教師信息的教師號(hào):);scanf(%ld,&i);p1=head;while(i!=

21、p1-num)/直到 p1 指向的結(jié)點(diǎn)是要?jiǎng)h除的信息位置if(p1-next=NULL) break;/p1 的下個(gè)結(jié)點(diǎn)為空則退出循環(huán)p2=p1;/p2 用來記錄 p1 的前一個(gè)結(jié)點(diǎn)p1=p1-next;/p1 指向下一個(gè)結(jié)點(diǎn)if(i=p1-num)/判斷 p1 是否為要?jiǎng)h除的信息頁(yè)腳內(nèi)容民小字()號(hào)if(p1=head) head=p1-next;/*若 p1 為頭結(jié)點(diǎn)則將頭指針指向 p1 的下一個(gè)結(jié)點(diǎn)*/else p2-next=p1-next;/*p1非頭結(jié)點(diǎn)則將p1后面的結(jié)點(diǎn)連接到 p1 前一個(gè)結(jié)點(diǎn)的后面*/printf(n已刪除教師號(hào)為%ld 的教師信息n,i);n=n-1;/記錄教

22、師數(shù)的 n 要減一/p1 不是要?jiǎng)h除的信息則表示要?jiǎng)h除的信息不再鏈表中else printf(n已錄入的教師信息中沒有教師號(hào)為%ld 的n,i);return;void sort1()/按教師號(hào)進(jìn)行排序的函數(shù)struct teacher *p1,*p2,*p3,*p4;int i,j;if(head=NULL)printf(n還未錄入過教師信息n);return;if(head-next!=NULL) /判斷是否只有一個(gè)信息/用冒泡法排序p1=head;/p1記錄用來比較的兩個(gè)結(jié)點(diǎn)中的前面一個(gè)p2=head-next;/p2記錄比較的兩個(gè)結(jié)點(diǎn)中的后面?zhèn)€for(i=1;in;i+)/實(shí)現(xiàn) n-1

23、趟比較的外循環(huán)頁(yè)腳內(nèi)容民小字()號(hào)for(j=0;jnump2-num)/*比較相鄰兩個(gè)結(jié)點(diǎn)中教師號(hào)大小*/當(dāng) p1 的教師號(hào)大時(shí)則對(duì)調(diào)兩個(gè)結(jié)點(diǎn)的位置if(p1=head) head=p2;else p3-next=p2;/*p1為頭結(jié)點(diǎn)時(shí)則將頭指針指向 p2,否則就將 p2 連接到用來記錄 p1 前一個(gè)結(jié)點(diǎn)的 p3 的后面*/p4=p2-next;/p4 用來記錄p2 后面的結(jié)點(diǎn)p2-next=p1;/p1 的結(jié)點(diǎn)換到原來 p2 的位置p1-next=p4;/原來 p2 后面的結(jié)點(diǎn)連接到 p1p3=p2;/p3 記錄下 p2 的位置p2=p4;/p2 指向原來位置的下一個(gè)結(jié)點(diǎn)else/*p1

24、中教師號(hào)沒有打過 p2 中教師號(hào),則將p1,p2 都指向它們各自位置的下一個(gè)結(jié)點(diǎn)*/p3=p1;/記錄 p1 后移一位后它前個(gè)結(jié)點(diǎn)的位置p1=p2;p2=p2-next;p1=head;/p1指向鏈表頭,開始下一趟外循環(huán)的準(zhǔn)備p2=p1-next;/p2 指向鏈表第二個(gè)結(jié)點(diǎn)頁(yè)腳內(nèi)容民小字()號(hào)printf(n按教師號(hào)排序后的教師信息如下:n);print();/調(diào)用教師信息瀏覽函數(shù)void sort2()/按月薪排序的函數(shù),算法跟按教師號(hào)排序的一樣struct teacher *p1,*p2,*p3,*p4;int i,j;if(head=NULL)printf(n還未錄入過教師信息n);re

25、turn;if(head-next!=NULL)p1=head;p2=head-next;for(i=1;in;i+)for(j=0;jwagep2-wage)if(p1=head) head=p2;頁(yè)腳內(nèi)容民小字()號(hào)else p3-next=p2;p4=p2-next;p2-next=p1;p1-next=p4;p3=p2;p2=p4;elsep3=p1;p1=p2;p2=p2-next;p1=head;p2=p1-next;printf(n按月薪排序后的教師信息如下:n);print();void sort3()/按年齡排序的函數(shù),算法跟按教師號(hào)排序的一樣struct teacher *

26、p1,*p2,*p3,*p4;int i,j;頁(yè)腳內(nèi)容民小字()號(hào)if(head=NULL)printf(n還未錄入過教師信息n);return;if(head-next!=NULL)p1=head;p2=head-next;for(i=1;in;i+)for(j=0;jagep2-age)if(p1=head) head=p2;else p3-next=p2;p4=p2-next;p2-next=p1;p1-next=p4;p3=p2;p2=p4;else頁(yè)腳內(nèi)容民小字()號(hào)p3=p1;p1=p2;p2=p2-next;p1=head;p2=p1-next;printf(n按年齡排序后的教師

27、信息如下:n);print();void choose1()/選擇排序方式的函數(shù)int i;printf(排序方式n);2:printf(【按年齡排序】n);printf(: 按教師號(hào)排序】3:【按月薪排序】n);printf(請(qǐng)選擇:);scanf(%d,&i);while(i3)printf(選擇無效,請(qǐng)重新輸入正確選項(xiàng):);scanf(%d,&i);頁(yè)腳內(nèi)容民小字()號(hào)switch(i)case 1:sort1();break;case 2:sort3();break;case 3:sort2();break;void search1()/按教師號(hào)查找的函數(shù)struct teacher

28、*p;long i;/存儲(chǔ)用戶輸入的想要?jiǎng)h除的教師號(hào)if(head=NULL)printf(n還未錄入過教師信息n);return;printf(請(qǐng)輸入要查找的教師信息的教師號(hào):);scanf(%ld,&i);for(p=head;p!=NULL;p=p-next)/p 順序指向結(jié)點(diǎn)與 i 比較,找出有i 的數(shù)據(jù)的結(jié)點(diǎn)并輸出if(p-num=i)教師號(hào):%ld,姓名:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn,p-num,p-name,p-sex,p-age,p-edu,p-title);頁(yè)腳內(nèi)容民小字()號(hào)printf(月薪:%ld,住址:%s,電話:%sn,p-wage,p-a

29、ddr,p-telep);return;printf(已錄入的教師信息中不存在該教師號(hào)n);void search2()/按姓名查找的函數(shù)struct teacher *p;char i20;/記錄用戶輸入的想要?jiǎng)h除的姓名int j=0;/j 用來記錄找到了多少個(gè)信息if(head=NULL)printf(n還未錄入過教師信息n);return;printf(請(qǐng)輸入要查找的信息的教師姓名:);scanf(%s,i);for(p=head;p!=NULL;p=p-next)if(strcmp(p-name,i)=0)/比較 p 指向的結(jié)點(diǎn)中的姓名跟 i 的是否一致,是則輸出教師號(hào):%ld,姓名:

30、%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn,p-num,p-name,p-sex,p-age,p-edu,p-title);printf(月薪:%ld,住址:%s,電頁(yè)腳內(nèi)容民小字()號(hào)話:%sn,p-wage,p-addr,p-telep);j=j+1;/每輸出一個(gè)教師的信息則 j 加一if(j=0) printf(已錄入的教師信息中不存在該姓名的教師n);void search3()/按職稱查找的函數(shù),算法與按姓名查找的一樣struct teacher *p;char i20;int j=0;if(head=NULL)printf(n還未錄入過教師信息n);return;pri

31、ntf(請(qǐng)輸入要查找的信息的教師職稱:);scanf(%s,i);for(p=head;p!=NULL;p=p-next)if(strcmp(p-title,i)=0)教師號(hào):%ld,姓名:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn,p-num,p-name,p-sex,p-age,p-edu,p-title);printf(月薪:%ld,住址:%s,電話:%sn,p-wage,p-addr,p-telep);j=j+1;頁(yè)腳內(nèi)容民小字()號(hào)if(j=0) printf(已錄入的教師信息中不存在該職稱的教師n);void search4()/按年齡查找的函數(shù),算法與按教師號(hào)查找的一

32、樣struct teacher *p;int i,j=0;if(head=NULL)printf(n還未錄入過教師信息n);return;printf(請(qǐng)輸入要查找的信息的教師年齡:);scanf(%d,&i);for(p=head;p!=NULL;p=p-next)if(p-age=i)教師號(hào):%ld,姓名:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn,p-num,p-name,p-sex,p-age,p-edu,p-title);printf(月薪:%ld,住址:%s,電話:%sn,p-wage,p-addr,p-telep);j=j+1;if(j=0) printf(已錄入的教

33、師信息中不存在該年齡的教師n);頁(yè)腳內(nèi)容民小字()號(hào)void choose2()/選擇查找方式的函數(shù)int i;printf(查詢方式n);printf(2:【按姓名查詢】n);printf(1:【按教師號(hào)查詢】3:【按職稱查詢】4:【按年齡查詢】n);printf(請(qǐng)選擇:);scanf(%d,&i);while(i4)printf(選擇無效,請(qǐng)重新輸入正確選項(xiàng):);scanf(%d,&i);switch(i)case 1:search1();break;case 2:search2();break;case 3:search3();break;case 4:search4();break;

34、void menu()/菜單欄函數(shù)頁(yè)腳內(nèi)容民小字()號(hào)int i;printf(菜單n);printf(: 教師信息錄入】: 教師信息刪除】: 排序】2:4:6:【教師信息輸出】n);printf(【查詢個(gè)人信息】n);printf(【退出系統(tǒng)】n);printf(請(qǐng)選擇: );scanf(%d,&i);while(i6)printf(選擇無效,請(qǐng)重新輸入正確選項(xiàng):);scanf(%d,&i);switch(i)case 1:creat();break;case 2:print();break;case 3:del();break;case 4:choose2();break;case 5:c

35、hoose1();break;case 6:save();menu();頁(yè)腳內(nèi)容民小字()號(hào)void main()/主函數(shù)key();menu();四程序運(yùn)行效果圖4.1 登陸界面4.2 菜單欄頁(yè)腳內(nèi)容民小字()號(hào)4.3 錄入功能4.4 瀏覽功能頁(yè)腳內(nèi)容民小字()號(hào)4.5 刪除功能4.6 查詢功能頁(yè)腳內(nèi)容民小字()號(hào)4.7 排序功能頁(yè)腳內(nèi)容民小字()號(hào)五總結(jié)報(bào)告5.1 課程設(shè)計(jì)中遇到的主要問題和解決方法在這次的 C 語(yǔ)言課程設(shè)計(jì)的編程中,由于以前對(duì)鏈表和文件這兩部分的內(nèi)容了解過少,因此在編程中涉及到這兩方面的內(nèi)容時(shí),照成了很大的阻礙,最主要是在對(duì)鏈表的結(jié)點(diǎn)進(jìn)行交換,對(duì)文件某些特殊的讀寫不清楚。而且由于第一次接觸這類比較復(fù)雜一點(diǎn)的題目,在循環(huán)方面的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論