版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)任務(wù)書計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)年級(jí)班設(shè)計(jì)題目教師信息管理系統(tǒng)設(shè)計(jì)教師信息包括教師號(hào)、性別、年齡、學(xué)歷、職稱、工資、住址、等教 師號(hào)不重復(fù)。試設(shè)計(jì)一教師信息管理系統(tǒng),使之能提供以下功能:1系統(tǒng)以菜單方式工作2教師信息錄入功能 輸入3教師信息刪除功能4教師信息瀏覽功能一一輸出5查詢和排序功能:(至少一種查詢方式)一一算法按教師號(hào)查詢按職稱查詢等三、具體要求圍繞課程設(shè)計(jì)的目的和意義,根本要求如下:1 、認(rèn)真閱讀?C語(yǔ)言課程設(shè)計(jì)?指導(dǎo)書,明確課程設(shè)計(jì)的目的、意 義和要求;2 、快速總結(jié)C程序設(shè)計(jì)語(yǔ)言的精華,如:函數(shù)的概念、函數(shù)的設(shè) 計(jì)和函數(shù)的調(diào)用;3、快速熟悉Tuber C或C+勺上機(jī)環(huán)境。能熟練
2、進(jìn)展高級(jí)編輯操 作特別是字塊操作;熟悉步進(jìn)式、斷點(diǎn)跟蹤的程序調(diào)試方法,提高 工作效率。4 、根據(jù)“課程設(shè)計(jì)題目,采用構(gòu)造化的程序設(shè)計(jì)思想,確定系 統(tǒng)的總體設(shè)計(jì)方案、確"定時(shí)間進(jìn)度。如果是多人共一題,那么要首先 完成小組的人員分工及安排,不允許重題現(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ù)并完成對(duì)數(shù)據(jù)庫(kù)的各 種操作;掌握幾種典型算法的應(yīng)用如:冒泡法、選擇排序法和折半 查找法。同時(shí)鍛煉學(xué)生根據(jù)題目進(jìn)展分
3、析、設(shè)計(jì)、編碼、調(diào)試程序和 書寫必要文檔的綜合處理能力,從實(shí)踐中學(xué)習(xí)并體會(huì)程序設(shè)計(jì)的構(gòu)造 化思想和設(shè)計(jì)方法。四、進(jìn)度安排依照教學(xué)方案,課程設(shè)計(jì)時(shí)間為 3周。按照軟件工程的思想,軟件系 統(tǒng)的分析設(shè)計(jì)至關(guān)重要,并要充分重視書寫“文檔。防止甚至杜絕“拿到題目就編碼的現(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)試通過(guò) 的各個(gè)子模塊進(jìn)展集成調(diào)試;第三階段,歸納文檔資料,按要求填寫在 ?課程設(shè)計(jì)說(shuō)明書?上, 并參加辯論。三個(gè)階段時(shí)間分配的大概比例是:
4、35 : 45: 20。五、完成后應(yīng)上交的材料1 課程設(shè)計(jì)的題目、系統(tǒng)的總功能和各子模塊的功能;2題目的設(shè)計(jì)思想或算法簡(jiǎn)述;3 主要程序的框圖要求用 N-S圖;4源程序代碼要求在關(guān)鍵的位置有注釋,從而增加程序的可讀 性;5課程設(shè)計(jì)的總結(jié)報(bào)告,主要包括以下容:1課程設(shè)計(jì)中遇到的主要問(wèn)題和解決方法;2你的創(chuàng)新和得意之處;3設(shè)計(jì)中存在的缺乏及改良的設(shè)想;4本次課程設(shè)計(jì)的感想和心得體會(huì)。以上完成的源程序及相關(guān)文檔,填寫在 ?課程設(shè)計(jì)說(shuō)明書?上,要 求干凈整潔,符合課程設(shè)計(jì)的要求和規(guī)。六、總評(píng)成績(jī)指導(dǎo)教師簽名日期年月日系主任審核日期年月日目錄題目設(shè)計(jì)思想簡(jiǎn)述5.程序的N S圖72.1總程序的N-S圖72
5、.2各子函數(shù)的N 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)行效果圖 334.1登陸界面334.2菜單欄334.3錄入功能344.4瀏覽功能344.5刪除功能354.6查詢功能354.7排序功能36五. 總結(jié)報(bào)告375.1課程設(shè)計(jì)中遇到的主要問(wèn)題和解決方法375.2你的創(chuàng)新和得意之處375.3設(shè)計(jì)中存在的缺乏及改良的設(shè)想375.4本次課程設(shè)計(jì)的感想和心得體會(huì)38.題目設(shè)計(jì)思想簡(jiǎn)述如上圖所示,該教師信息管理系統(tǒng)主要是一個(gè)以動(dòng)態(tài)鏈表的應(yīng)用 為根底來(lái)實(shí)現(xiàn)對(duì)教師信息
6、的錄入,查詢,刪除等功能。定義教師構(gòu)造體如下:struct teacherlong num;/ 教師號(hào)char n ame20;char sex5;/性別int age;/ 年齡char edu20; 學(xué)歷char title20;職稱long wage;/ 工資char addr100; / 地址char telep15; struct teacher *n ext;*head=NULL;主函數(shù)只進(jìn)展口令函數(shù)和菜單欄函數(shù)的調(diào)用,主要工作通過(guò)菜單函數(shù)實(shí)現(xiàn)??诹顬?123456。菜單欄函數(shù)通過(guò)用switch語(yǔ)句實(shí)現(xiàn)不同功能的選擇,不同的功能 用不同的子函數(shù)實(shí)現(xiàn)。錄入教師信息通過(guò)建立動(dòng)態(tài)單鏈表來(lái)實(shí)
7、現(xiàn)。瀏覽教師信息那么通過(guò)將鏈表所有數(shù)據(jù)順序輸出來(lái)實(shí)現(xiàn)。查詢功能只要從鏈表頭開場(chǎng)不斷往下一個(gè)結(jié)點(diǎn)讀取信息跟所要查 找的信息比擬,直到讀取到的信息跟所要查找的信息一樣或鏈表尾為 止,并把此結(jié)點(diǎn)的信息輸出。刪除教師信息的函數(shù)是通過(guò)查找鏈表中有該信息的結(jié)點(diǎn)后將該結(jié) 點(diǎn)移出鏈表,即使該結(jié)點(diǎn)前一個(gè)結(jié)點(diǎn)直接指向該結(jié)點(diǎn)后面的結(jié)點(diǎn)來(lái)到 達(dá)刪除信息的目的。排序函數(shù)是通過(guò)交換結(jié)點(diǎn)在鏈表中的位置來(lái)實(shí)現(xiàn)的,即使得各結(jié) 點(diǎn)在鏈表中的位置便是所要得到的排序該信息應(yīng)在的位置,這樣直接 順序輸出鏈表的信息時(shí)就能按所要的排序輸出了。9 / 40二.程序的N S圖2.1總程序的N S圖說(shuō)明:各功能都是通過(guò)調(diào)用子函數(shù)來(lái)實(shí)現(xiàn)的2.2各
8、子函數(shù)的N S圖子函數(shù)主要包括教師信息錄入,教師信息瀏覽,教師信息刪除, 教師信息查詢和教師信息排序等 5個(gè)。在退出系統(tǒng)時(shí)調(diào)用了一個(gè)保存 信息到文件中的函數(shù),該函數(shù)只是簡(jiǎn)單的應(yīng)用了文件的讀寫功能,在 此不寫出其N S圖。教師信息錄入函數(shù)p仁(struct teacher *)malloc(LEN)輸入一個(gè)教師號(hào) p1->num教師號(hào)為0F鏈表頭為空Head =p1p3=head當(dāng)p3->next不為空p3=p3->n extp3->n ext=p1當(dāng)教師號(hào)不為0輸入教師的某,性別,年齡,學(xué)歷,職稱,月薪,住址,n=n+1廠f錄一一Thead=p1p2->n ext
9、=p1p2=p1p仁(struct teacher *)malloc(LEN)輸入一個(gè)教師號(hào) p1->nump2-> next=NULL說(shuō)明:p仁(struct teacher *)malloc(LEN) 中 LEN是在程序開頭 的宏定義#define LEN sizeof(struct teacher)。其中 n 為全局變量,用來(lái)統(tǒng)計(jì)鏈表的結(jié)點(diǎn)數(shù),以下出現(xiàn)的n都是同一個(gè)。教師信息瀏覽函數(shù)p=head鏈表頭為空顯示“還輸出p所指向的位置中的教師的所有信息未錄入過(guò)信p=p->n ext自"丿 111、直到p為空說(shuō)明:實(shí)際程序中在鏈表頭為空是提供了可以瀏覽之前保存在文
10、件中的信息的功能,中選擇該功能時(shí)就調(diào)用了一個(gè)讀取文件的函數(shù)。 該函數(shù)只是對(duì)文件讀寫的簡(jiǎn)單應(yīng)用,詳細(xì)請(qǐng)看后面第三局部代碼,這 里不寫出其N-S圖。教師信息刪除的函數(shù)卞、鏈表頭一輸出“還 未錄 入過(guò) 教師 信 自"丿 111、輸入要?jiǎng)h除教師信息的教師號(hào)ip仁head當(dāng) i!=p1->numVp1>QeX 為空退出 循環(huán)p2=p1p1=p1- >n exti!=p1->num?一F輸出“已錄入 的教師信息 中沒(méi)有該教 師號(hào)為鏈表頭head=p1- >n ext p2->n ext=p1- >n ext9 / 40n=n-1224教師信息查詢的函數(shù)在
11、查詢方面程序?yàn)橛脩籼峁┝?4種不同方式的查詢,每一種方式 的查詢?yōu)橐粋€(gè)子函數(shù),此時(shí)也是采用一個(gè)菜單欄函數(shù)進(jìn)展選擇查詢方 式并調(diào)用該種方式的函數(shù)。菜單欄函數(shù)跟主程序菜單欄的算法一樣, 此處只給出查詢函數(shù)的N S圖。輸出“還未錄入程序并退出函數(shù)輸入要查找的教師信息的對(duì)應(yīng)方法的對(duì)應(yīng)數(shù)據(jù)ip=head當(dāng)p非空時(shí)應(yīng)信息不等輸出p所指向的位置的教師的所有信息j=j+1p=p->n ext不為 0F輸出“已錄入的信息中不存在符合i的信息的教師說(shuō)明:該N-S圖是對(duì)應(yīng),教師號(hào),職稱,年齡四種查找方式的函 數(shù)的。中選擇教師號(hào)查找時(shí),輸入i的即為教師號(hào),與i做比擬的為p 中的教師號(hào),選擇其他查找方式時(shí)類似。教
12、師信息排序函數(shù)排序也跟查詢一樣給出多種排序方式并采用菜單欄函數(shù),此處也只輸出“還未錄入過(guò)教師信息并退出函數(shù)第二個(gè)結(jié)點(diǎn)為空Fp仁headp2=head->n exti=1當(dāng)i小于n時(shí)j=0當(dāng)j小于n-i時(shí)、p1中的對(duì)應(yīng)信息小過(guò)p2一一TFp3=p1為鏈表頭head=p2p3->n ext=p2p仁p2p4=p2->n extp2->n ext=p1p2=p2-p1- >n ext=p4P3=p2>n extp2=p4p仁headp2=p1- >n ext調(diào)用教師信息瀏覽函數(shù)說(shuō)明:p1,p2指向的結(jié)點(diǎn)用來(lái)比擬,p3, p4是用來(lái)記錄結(jié)點(diǎn)的,中選用的排 序方
13、式不同,p1,p2用來(lái)比擬的信息為所選方式的信息。三.源程序代碼#i nclude <stdio.h>#i nclude <malloc.h>#i nclude <stdlib.h>#include <string.h>#defi ne LEN sizeof(struct teacher)/宏定義構(gòu)造體字節(jié)數(shù)int n=0;struct teacher/定義構(gòu)造體long num;/ 教師號(hào)char n ame20;char sex5;/ 性別int age;/ 年齡char edu20;/ 學(xué)歷char title20;職稱long wage;
14、/ 工資char addr100;/地址char telep15;struct teacher *n ext;/ 指向下一個(gè)結(jié)點(diǎn)17 / 40*head=NULL;void key()口令檢查的函數(shù)int i;long a;for(i=0;i<3;i+)printf("請(qǐng)輸入口令(還可輸入£次):n",3-i);sea nf("%ld",&a);if(a=123456)檢查口令是否正確printf(" 歡送進(jìn)入系統(tǒng)n");break;else printf("口令錯(cuò)誤 n");if(i=3)
15、判斷可以輸入口令的次數(shù)是否用完prin tf("可使用的口令輸入次數(shù)已用完,將自動(dòng)退出!n");exit(0);void save()把數(shù)據(jù)存入文件的函數(shù)FILE *fp;int i;char file name20;struct teacher *p;prin tf("n是否把此次登錄系統(tǒng)錄入和修改后的教師信息保存到文件中n");printf("1:【是】0:【否】n請(qǐng)選擇:");sea nf("%d",&i);while(i!=0)&&( i!=1)判斷輸入的選擇是否有效printf(&
16、quot;選擇無(wú)效,請(qǐng)重新輸入正確選項(xiàng):");sea nf("%d",&i);if(i=1)判斷是否選擇了要保存prin tf("n請(qǐng)輸入要保存數(shù)據(jù)的文件名:");scan f("%s",file name);if(fp=fope n(file name,"wb")=NULL)printf("n無(wú)法翻開文件n");exit(0); for(p=head;p!=NULL;p=p->n ext) if(fwrite(p,sizeof(struct teacher),1,fp)
17、!=1)printf("n此處數(shù)據(jù)有誤n");fclose(fp);exit(0);void read()從文件讀出數(shù)據(jù)的函數(shù)struct teacher teach299,temp;int i=0;FILE *fp;char file name20;prin tf("n請(qǐng)輸入存有教師信息的文件名:");sca nf("%s",file name);if(fp=fope n(file name,"rb")=NULL)printf("n 無(wú)法翻開文件n");exit(0);fseek(fp,-si
18、zeof(struct teacher),2);/*將位置指針從文件末尾后退一個(gè)構(gòu)造體的字節(jié)數(shù)*/fread(&temp,sizeof(struct teacher),1,fp);/*從所指向的文件中讀出數(shù)據(jù)存儲(chǔ)到構(gòu)造體變量temp中*/fseek(fp,0,0);將位置指針移到文件的開頭if(fread(&teachi,sizeof(struct teacher),1,fp)=1)/*判斷文件開頭讀入的數(shù)據(jù)是否為空*/printf("n存有的教師信息如下:n");while(teachi. nu m!=temp. num)/進(jìn)展循環(huán)讀取文件printf(&
19、quot; 教師號(hào):%ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,",teachi. nu m,teachi. name,teachi.sex,teachi.age,);printf("職稱:%sn月薪:%ld,住址:%s,:%sn ",teachi.title,teachi.wage,teachi.addr,teachi.telep);i=i+1;fread(&teachi,sizeof(structteacher),1,fp);/*從文件中讀入數(shù)據(jù)存儲(chǔ)到構(gòu)造體變量teach【i】中*/輸出文件中的最后一個(gè)信息printf(&q
20、uot;教師號(hào):%ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,",teachi. nu m,teachi. name,teachi.sex,teachi.age,);printf("職稱:%sn月薪:%ld,住址:%s,:%sn ",teachi.title,teachi.wage,teachi.addr,teachi.telep);fclose(fp);else printf(”該文件中無(wú)教師信息n");/文件為空時(shí)輸出此void creat()錄入教師信息的函數(shù)struct teacher *p1,*p2,*p3;p1=p2
21、=(struct teacher *)malloc(LEN);/*申請(qǐng)一個(gè)構(gòu)造體字節(jié)數(shù)的空間用來(lái)存儲(chǔ)一個(gè)教師的信息*/printf("請(qǐng)輸入一位教師的教師號(hào)完畢錄入請(qǐng)輸入0");sca nf("%ld",&p1-> nu m);if(p1- >n um!=0)判斷用戶是要完畢錄入還是要存儲(chǔ)信息if(head=NULL) head=p1;/* 判斷鏈表是否為空,是那么將 鏈表頭指向p1*/else /鏈表不為空那么將鏈表尾指向p1p3=head;/p3用來(lái)記錄鏈表的尾部 while(p3->next!=NULL)/* 假設(shè)p3不是
22、鏈表尾那么將p3指向下一個(gè)結(jié)點(diǎn)*/p3=p3->n ext;p3-> next=p1;將最后一個(gè)結(jié)點(diǎn)指向p1while(p1-> num!=0) 判斷用戶是否完畢錄入功能/錄入該教師號(hào)的教師對(duì)應(yīng)的信息prin tf(":");sca nf("%s",p1- >n ame);printf("性別:");21 / 40sea nf("%s",p1->sex);printf("年齡:");sea nf("%d",&p1->age);pri
23、ntf("學(xué)歷:");sea nf("%s",p1->edu);printf("職稱:");sea nf("%s",p1->title);printf("月薪:");sea nf("%ld",&p1->wage);printf("住址:");sea nf("%s",p1->addr);printf(":");sea nf("%s",p1->telep);n=n
24、+1;/給統(tǒng)計(jì)錄入的教師數(shù)n加一/*判斷是否為第一個(gè)錄入的信息,是那么將鏈表頭指向p1,否那么將p2指向p1*/if(n=1) head=p1;else p2->n ext=p1;p2=p1;/p2用來(lái)記錄鏈表的最后一個(gè)結(jié)點(diǎn)p仁(struct teacher *)malloc(LEN);重新申請(qǐng)空間printf("請(qǐng)輸入一位教師的教師號(hào)(完畢錄入請(qǐng)輸入0):");sea nf("%ld",&p1-> nu m);p2->next=NULL;將最后一個(gè)結(jié)點(diǎn)指向空void prin t()輸出教師信息的函數(shù)struct teache
25、r *p;int i;p=head;if(head!=NULL) 判斷鏈表是否為空printf("n這dB教師的信息為:n",n);doprintf(" 教師號(hào):%ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn",p->nu m,p->n ame,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)的首地址賦
26、給 pwhile(p!=NULL);到鏈表尾時(shí)完畢循環(huán)else/鏈表為空時(shí)執(zhí)行以下局部prin tf("n你此次登錄系統(tǒng)還沒(méi)有錄入教師信息,可進(jìn)展以下操作:n");printf("1:【瀏覽以前保存在文件中的教師信息】2:【開場(chǎng)錄入教師信息】n");printf("3:【退出系統(tǒng)】4:【返回菜單】n");printf("請(qǐng)選擇:");sea nf("%d",&i);while(i<1)&&( i>4)printf("選擇無(wú)效,請(qǐng)重新輸入正確選項(xiàng):sc
27、an f("%d",&i);if(i=1) read();/調(diào)用從文件讀取數(shù)據(jù)的函數(shù)if(i=2) creat();調(diào)用錄入信息的函數(shù)if(i=3) exit(O);/退出系統(tǒng)void del()刪除教師信息的函數(shù)struct teacher *p1,*p2;long i;if(head=NULL)判斷鏈表是否為空printf("n還未錄入過(guò)教師信息n");鏈表為空時(shí)輸出return;printf("請(qǐng)輸入要?jiǎng)h除教師信息的教師號(hào):");sca nf("%ld",&i);p仁head;while(i!
28、=p1->num)直到pl指向的結(jié)點(diǎn)是要?jiǎng)h除的信息位置if(p1-> next=NULL) break;/p1的下個(gè)結(jié)點(diǎn)為空那么退出循環(huán)p2=p1;/p2用來(lái)記錄pl的前一個(gè)結(jié)點(diǎn)p1=p1-> next;/p1指向下一個(gè)結(jié)點(diǎn)if(i=p1->num)/判斷pl是否為要?jiǎng)h除的信息if(p1=head) head=p1->next;/* 假設(shè) pl 為頭結(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的教師
29、信息n",i);n=n-1;/記錄教師數(shù)的n要減一p1不是要?jiǎng)h除的信息那么表示要?jiǎng)h除的信息不再鏈表中else printf("n已錄入的教師信息中沒(méi)有教師號(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還未錄入過(guò)教師信息n");return;if(head-> next!=NULL) /判斷是否只有一個(gè)信息/用冒泡法排序p仁head;/p1記錄用來(lái)比擬的兩個(gè)結(jié)點(diǎn)中的前面一個(gè)p2=
30、head-> next;/p2記錄比擬的兩個(gè)結(jié)點(diǎn)中的后面?zhèn)€for(i=1;i<n;i+)實(shí)現(xiàn)n-1趟比擬的外循環(huán)for(j=0;j<n-i;j+)在每一趟中進(jìn)展n-i次比擬的循環(huán)if(p1-> num>p2-> nu m)/*比擬相鄰兩個(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連接到用來(lái)記錄p1前一個(gè)結(jié)點(diǎn)的p3的后 面*/p4=p2->next;/p4 用來(lái)記錄p2后面的結(jié)點(diǎn) p2->next
31、=p1;/p1的結(jié)點(diǎn)換到原來(lái)p2的位置p1->next=p4; 原來(lái)p2后面的結(jié)點(diǎn)連接到p1 p3=p2;/p3記錄下p2的位置p2=p4;/p2指向原來(lái)位置的下一個(gè)結(jié)點(diǎn)else/*p1中教師號(hào)沒(méi)有打過(guò)p2中教師號(hào),那么將pl, p2都指向它們各自位置的下一個(gè)結(jié)點(diǎn)*/p3=p1;記錄pl后移一位后它前個(gè)結(jié)點(diǎn)的位P仁 p2;p2=p2->n ext;p仁head;/p1指向鏈表頭,開場(chǎng)下一趟外循環(huán)的準(zhǔn)備 p2=p1-> next;/p2指向鏈表第二個(gè)結(jié)點(diǎn)prin tf("n按教師號(hào)排序后的教師信息如下:n");prin t();/調(diào)用教師信息瀏覽函數(shù)void
32、 sort2()/按月薪排序的函數(shù),算法跟按教師號(hào)排序的一樣struct teacher *p1,*p2,*p3,*p4;int i,j;if(head=NULL)prin tf("n return;還未錄入過(guò)教師信息n");27 / 40if(head-> next!=NULL)p仁head;p2=head->n ext;for(i=1;i <n ;i+)for(j=0;j <n-i;j+) if(p1->wage>p2->wage)if(p1=head) head=p2; else p3->n ext=p2; p4=p2-
33、>n ext;p2->n ext=p1;p1- >n ext=p4;p3=p2;p2=p4;elsep3=p1;P仁 p2;p2=p2->n ext;p仁head;p2=p1- >n ext;prin tf("n按月薪排序后的教師信息如下:n");prin t();void sort3()按年齡排序的函數(shù),算法跟按教師號(hào)排序的一樣struct teacher *p1,*p2,*p3,*p4;int i,j;if(head=NULL)printf("n還未錄入過(guò)教師信息n");return;if(head-> next!
34、=NULL)p仁head;p2=head->n ext;for(i=1;i <n ;i+)for(j=0;j <n-i;j+)29 / 40if(p1->age>p2->age)if(p1=head) head=p2; else p3->n ext=p2;p4=p2->n ext;p2->n ext=p1;p1- >n ext=p4;p3=p2;p2=p4;elsep3=p1;P仁 p2;p2=p2->n ext;p仁head;p2=p1- >n ext;n");prin tf("n按年齡排序后的教師信
35、息如下:prin t();void choose1()選擇排序方式的函數(shù)int i;printf("排序方式n");printf("1:【按教師號(hào)排序】2:【按年齡排序】n");printf("3:【按月薪排序】n");printf("請(qǐng)選擇:");sea nf("%d",&i);while(i<1)|(i>3)printf("選擇無(wú)效,請(qǐng)重新輸入正確選項(xiàng):");sea nf("%d",&i);switeh(i)ease 1:s
36、ort1();break;ease 2:sort3();break;case 3:sort2();break;void search1()按教師號(hào)查找的函數(shù)struet teaeher *p;long i;存儲(chǔ)用戶輸入的想要?jiǎng)h除的教師號(hào)31 / 40if(head=NULL)printf("n還未錄入過(guò)教師信息n");return;prin tf("請(qǐng)輸入要查找的教師信息的教師號(hào):");scan f("%ld",&i);for(p=head;p!=NULL;p=p->n ext)p順序指向結(jié)點(diǎn)與i比擬,找出有i的數(shù)據(jù)的結(jié)
37、點(diǎn)并輸出if(p->num=i)printf("教師號(hào):ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn",p->nu m,p->n ame,p->sex,p->age,p->edu,p->title);printf("月薪:%ld,住址:%s,:%sn ",p->wage,p->addr,p->telep);return;printf("已錄入的教師信息中不存在該教師號(hào)n");void search2()按查找的函數(shù)struct teacher *p;char
38、 i20;記錄用戶輸入的想要?jiǎng)h除的int j=0;/j用來(lái)記錄找到了多少個(gè)信息33 / 40if(head=NULL)printf("n還未錄入過(guò)教師信息n");return;printf("請(qǐng)輸入要查找的信息的教師:");scan f("%s",i);for(p=head;p!=NULL;p=p->n ext)if(strcmp(p->n ame,i)=0)/比擬p指向的結(jié)點(diǎn)中的跟i的是否一致,是那么輸出printf("教師號(hào):ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn",p-&g
39、t;nu m,p->n ame,p->sex,p->age,p->edu,p->title);printf("月薪:%ld,住址:%s,:%sn ",p->wage,p->addr,p->telep);j=j+1;每輸出一個(gè)教師的信息那么j加一if(j=0) pri ntf("已錄入的教師信息中不存在該的教師n");void search3()按職稱查找的函數(shù),算法與按查找的一樣struct teacher *p;char i20;int j=0;39 / 40printf("n還未錄入過(guò)教師信息
40、n");return;prin tf("請(qǐng)輸入要查找的信息的教師職稱:");scan f("%s",i);for(p=head;p!=NULL;p=p->n ext)if(strcmp(p->title,i)=O)printf("教師號(hào):ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn",p->nu m,p->n ame,p->sex,p->age,p->edu,p->title);printf("月薪:%ld,住址:%s,:%sn",p-&g
41、t;wage,p->addr,p->telep);j=j+1;if(j=0) pri ntf("已錄入的教師信息中不存在該職稱的教師n");void search4()按年齡查找的函數(shù),算法與按教師號(hào)查找的一樣struct teacher *p;int i,j=0;printf("n還未錄入過(guò)教師信息n");return;printf("請(qǐng)輸入要查找的信息的教師年齡:");scan f("%d",&i);for(p=head;p!=NULL;p=p->n ext) if(p->age
42、=i)printf(" 教師號(hào):%ld,:%s,性別:%s,年齡:%d,學(xué)歷:%s,職稱:%sn",p->nu m,p->n ame,p->sex,p->age,p->edu,p->title);printf("月薪:%ld,住址:%s,:%sn ",p->wage,p->addr,p->telep);j=j+1;if(j=0) pri ntf("已錄入的教師信息中不存在該年齡的教師n");void choose2()選擇查找方式的函數(shù)int i;prin tf("查詢方
43、式n");printf("1:【按教師號(hào)查詢】2:【按查詢】n");printf("3:【按職稱查詢】4:【按年齡查詢】n");printf("請(qǐng)選擇:");sea nf("%d",&i);while(i<1)|(i>4)printf("選擇無(wú)效,請(qǐng)重新輸入正確選項(xiàng):");sca nf("%d",&i);switch(i)case 1:search1();break;case 2:search2();break;case 3:search
44、3();break;case 4:search4();break;void me nu() 菜單欄函數(shù)int i;printf("菜單n");printf("1:【教師信息錄入】2:【教師信息輸出】n");# / 40printf("3:【教師信息刪除】41 / 404:【查詢個(gè)人信息】n");printf("5:【排序】6:【退出系統(tǒng)】n");printf(" 請(qǐng)選擇:");sea nf("%d",&i);while(i<1)|(i>6)printf(&
45、quot;選擇無(wú)效,請(qǐng)重新輸入正確選項(xiàng):");sca nf("%d",&i);switch(i)case 1:creat();break;case 2:pri nt();break;case 3:del();break;case 4:choose2();break;case 5:choose1();break;case 6:save();menu();void mai n()主函數(shù)key();menu();四.程序運(yùn)行效果圖4.1登陸界面4.2菜單欄45 / 40弋茂師圍浸譯訝計(jì)、5DebugX2(n(ni4124醫(yī)針I(yè)J呂尸3*聯(lián)犢fi釧5:【冊(cè)序】.*
46、 第 Rill 2 4U ±s- 亠£1 忌八統(tǒng) 師逗出 書退荒單二暮3皆無(wú)*5;渤序f?七滋程序假程時(shí)5DetiLig01<BMl羽庫(kù)舖Lh回1-1=1人統(tǒng) 師詢出 科杳® r k-F kF L3 J 土忌 砸J-f 師詢呂 醫(yī)退 J-1J-擊總備入口知還可艷人12J45C胃迎進(jìn)系統(tǒng)4.3錄入功能1獸二上姍的奶號(hào) 宙屯錄人請(qǐng)輸入町:2 亠4陳星生訓(xùn)男壬甌33邂:番鼬帀匸肝:3000frill:杵山市禪械區(qū)在話一路“號(hào)豈話:347312334韜-tfe師的戯師號(hào)唏京錄人請(qǐng)輸/ 8>: «T甲4.4瀏覽功能-禎5寤臨聲H51Debud201gli±.341 町 -D 一申Tr一龜部 >£薄酉S縛卻血環(huán)謝冷畫“S2-Hbkllb舉zFltST ilr-iiil; 零A沏 匚齊i; 抨zt倒5鰻義嚀譙®HI鹽獨(dú)載摘“荃.嚼“黑賢 燈鄒審®T#iltwL!JsWJIKwil丄曙沖、e時(shí):34234善;H4喬司旨
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣州華商職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年廣東省外語(yǔ)藝術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年廣東工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年廣東南方職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年四川電力職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年中國(guó)直柄鉆市場(chǎng)調(diào)查研究報(bào)告
- 2025年呼和浩特職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年全球及中國(guó)制造業(yè)商業(yè)智能行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025至2031年中國(guó)陶瓷蛋托行業(yè)投資前景及策略咨詢研究報(bào)告
- 專利信息保護(hù)合同:2024年版下載安全細(xì)則
- 河南省濮陽(yáng)市2024-2025學(xué)年高一上學(xué)期1月期末考試語(yǔ)文試題(含答案)
- 割接方案的要點(diǎn)、難點(diǎn)及采取的相應(yīng)措施
- 2025年副護(hù)士長(zhǎng)競(jìng)聘演講稿(3篇)
- 2024年08月北京中信銀行北京分行社會(huì)招考(826)筆試歷年參考題庫(kù)附帶答案詳解
- 原發(fā)性腎病綜合征護(hù)理
- (一模)株洲市2025屆高三教學(xué)質(zhì)量統(tǒng)一檢測(cè) 英語(yǔ)試卷
- 基礎(chǔ)護(hù)理學(xué)導(dǎo)尿操作
- DB11∕T 1028-2021 民用建筑節(jié)能門窗工程技術(shù)標(biāo)準(zhǔn)
- (初級(jí))航空油料計(jì)量統(tǒng)計(jì)員技能鑒定理論考試題庫(kù)(含答案)
- 中國(guó)古代文學(xué)史 馬工程課件(中)24第六編 遼西夏金元文學(xué) 緒論
- 最新交管12123學(xué)法減分題庫(kù)含答案(通用版)
評(píng)論
0/150
提交評(píng)論