數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告—學(xué)生管理_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告—學(xué)生管理_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告—學(xué)生管理_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告—學(xué)生管理_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告—學(xué)生管理_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上中南大學(xué)“數(shù)據(jù)結(jié)構(gòu)”課程設(shè)計(jì)(學(xué)生管理系統(tǒng))專(zhuān)業(yè): 計(jì)算機(jī)類(lèi) 班級(jí): 姓名: 學(xué)號(hào): 完成日期:二一年七月六日目錄: 學(xué)生信息管理系統(tǒng)1.問(wèn)題描述設(shè)計(jì)一個(gè)學(xué)生信息管理系統(tǒng),實(shí)現(xiàn)對(duì)學(xué)生基本信息的添加、刪除、修改和查詢等操作。2.基本要求: 程序采用圖形界面下進(jìn)行交互的工作方式,完成如下功能:(1) 多種方式建立學(xué)生信息l 每個(gè)學(xué)生信息由學(xué)號(hào)、姓名、數(shù)學(xué)、英語(yǔ)和語(yǔ)文組成;l 可以通過(guò)手工錄入每個(gè)學(xué)生信息,并在StudentFile.txt保存;l 也可以導(dǎo)入某個(gè)路徑下存放學(xué)生信息的文本文件。(2) 瀏覽所有學(xué)生信息。(3) 按照學(xué)號(hào)對(duì)所有學(xué)生信息進(jìn)行升序、降序排列,并輸出

2、l 可選用冒泡、選擇、快速排序等算法;l 不僅輸出屏幕顯示,還需要寫(xiě)入存放學(xué)生信息的文件。(4) 按姓名、學(xué)號(hào)等方式,實(shí)現(xiàn)對(duì)學(xué)生信息精確查詢、模糊查詢,并輸出屏幕顯示 l 精確查詢結(jié)果演示查詢“姓名是劉梅”同學(xué)信息,則輸出 學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 . 劉梅 88 90 78 .l 模糊查詢結(jié)果演示查詢“姓劉”的同學(xué)信息,則輸出 學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 . 劉梅 88 90 78 . 劉強(qiáng) 87 80 98 . 劉星 86 70 58 .l 能夠?qū)崿F(xiàn)連續(xù)多次查詢 (5) 學(xué)生信息的插入、刪除、修改。l 通過(guò)插入、刪除和修改后,保持所有學(xué)生信息的有序性;l 插入、刪除和修改后,對(duì)存放所

3、有學(xué)生信息的文件及時(shí)更新。(6) 數(shù)據(jù)的統(tǒng)計(jì)功能l 統(tǒng)計(jì)每個(gè)學(xué)生的平均分和總分;l 統(tǒng)計(jì)每個(gè)科目的平均分和最高分、最低分;l 將上述統(tǒng)計(jì)結(jié)果,寫(xiě)入存放學(xué)生信息的文件。3系統(tǒng)分析與設(shè)計(jì)流程圖:打開(kāi)系統(tǒng)結(jié)束case 1文件內(nèi)有數(shù)據(jù)主菜單選擇case 2case 3case 4case 5case 6case 7插入并排序修改刪除查詢輸出統(tǒng)計(jì)輸出退出導(dǎo)入系統(tǒng)學(xué)生信息由一個(gè)學(xué)生結(jié)構(gòu)體保存其個(gè)人信息。學(xué)生結(jié)構(gòu)體存放于一個(gè)結(jié)構(gòu)體數(shù)組中,即線性表。各個(gè)學(xué)生按照學(xué)號(hào)排序,此處用到了直接插入排序。從數(shù)組的第一個(gè)元素開(kāi)始存放學(xué)生結(jié)構(gòu)體,0號(hào)做“哨兵”。信息的模糊查詢:可通過(guò)學(xué)號(hào)或者姓名進(jìn)行查詢,用字符串的匹配完成

4、這一功能。信息的刪除:精確查詢到該學(xué)生信息的存儲(chǔ)位置,然后逐個(gè)將后面的信息前移一個(gè)位置,實(shí)現(xiàn)刪除功能。輸出時(shí)的結(jié)果為順序排列后的信息。啟動(dòng)系統(tǒng),插入信息后,會(huì)在C盤(pán)根目錄下生成一個(gè)STUDENTF的文件,學(xué)生信息保存在這里,進(jìn)行刪除或者插入后會(huì)實(shí)時(shí)更新文件內(nèi)容。重新打開(kāi)系統(tǒng),程序會(huì)首先載入文件內(nèi)容,即上次更新后的信息。我們也可以到C盤(pán)根目錄下找到保存文件,查看其中內(nèi)容。選擇退出項(xiàng)后,退出系統(tǒng)。4 測(cè)試數(shù)據(jù)及結(jié)果 本程序以TC為編譯運(yùn)行環(huán)境。輸入信息后,輸出學(xué)生信息:修改號(hào)成績(jī)?yōu)?50.150.150后:文件內(nèi)容:刪除:刪除這三個(gè)信息后輸出:可以看到,原來(lái)有7組記錄,刪除3組記錄后,剩余4組記錄

5、,且有序。此時(shí)文件內(nèi)容為:統(tǒng)計(jì)結(jié)果:主菜單:5總結(jié):本學(xué)期學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程,在學(xué)習(xí)算法的同時(shí),也在不斷鞏固著我們C語(yǔ)言的基礎(chǔ)知識(shí)功底。本次實(shí)驗(yàn)使我深化理解了數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識(shí)。對(duì)于線性表,排序,查找,串的匹配等算法在實(shí)際中的應(yīng)用有了更深一步的了解。真正認(rèn)識(shí)到通用算法的作用,理解并應(yīng)用這些算法,不但大大提高了編程的速度。同時(shí)這些算法的高效性,也使程序能夠更有效的運(yùn)行,時(shí)間復(fù)雜度更低。實(shí)驗(yàn)過(guò)程中應(yīng)當(dāng)注意一些細(xì)節(jié)性的問(wèn)題,主要有,=與=經(jīng)常寫(xiě)錯(cuò)。循環(huán)條件的臨界位置,是大于等于或者小于等于還是大于或小于,一不小心便會(huì)出錯(cuò)。 通過(guò)本次課程設(shè)計(jì),我體會(huì)到了編程能力的中很重要的兩點(diǎn):良好的編程習(xí)慣。有一

6、個(gè)良好的編程習(xí)慣是很重要的,例如一個(gè)好的命名習(xí)慣,可以讓變量所表示的數(shù)據(jù)很明顯,寫(xiě)程序時(shí)結(jié)構(gòu)分明,適當(dāng)?shù)奶砑幼⑨尅2坏阌诤推渌酥g的交流,而且在日后重新看自己這段代碼的時(shí)候,也易于看懂。否則,一段時(shí)間后,自己寫(xiě)的代碼也需要花費(fèi)很多時(shí)間才能看懂。學(xué)習(xí)一些算法很重要。雖然隨著科技發(fā)展,計(jì)算機(jī)速度越來(lái)越快,程序的運(yùn)行速度的影響已經(jīng)大大不如從前。但是,一個(gè)好的算法,能提高程序運(yùn)行速度。而且,理解掌握好的算法,不但可以使人養(yǎng)成良好的編程思想,還能提高編程時(shí)的速度。 另外的一點(diǎn)體會(huì)是,不但要提高自己的編程能力,而且還要注意培養(yǎng)自己的表達(dá)能力。能夠?qū)⒁粋€(gè)程序的功能以一種簡(jiǎn)單明了的方式表達(dá)出來(lái)很重要?,F(xiàn)在

7、對(duì)著老師講,尚且講不好,將來(lái),面對(duì)客戶呢?這是通過(guò)本次實(shí)驗(yàn),我意識(shí)到的又一個(gè)很重要的問(wèn)題。6附錄(源代碼):#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#include "graphics.h"typedef struct Student long key; char num11; char name20; int english; int math; int chinese; int total;STU;typedef s

8、truct STU *stu; int length;List;void initgr(void) /* BGI初始化 */ int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */ initgraph(&gd, &gm, "");void flash(int x1,int y1,int x2,int y2) int i; setcolor(YELLOW); rectangle(x1,y1,x2,y2); for(i=0;i<15;+i) delay(50000); setcolor(BLACK)

9、; rectangle(x1,y1,x2,y2); for(i=0;i<10;+i) delay(50000); void flash_circle(int x,int y,int r) int i; setcolor(YELLOW); circle(x,y,r); for(i=0;i<15;+i) delay(50000); setcolor(BLACK); circle(x,y,r); for(i=0;i<15;+i) delay(50000); int Index(char T1,char T2) unsigned int i; for(i=0;(i<strlen

10、(T1)&&(i<strlen(T2);+i) if(T1i!=T2i) break; if(strlen(T2) = i) return 1;/*1說(shuō)明匹配成功*/ else return 0;int main(void) float aver_math,aver_english,aver_chinese; long all_math=0,all_english=0,all_chinese=0; int top_math,low_math,top_english,low_english,top_chinese,low_chinese; int choose; List

11、L; int i; int j;FILE *fp_stu; char search_num11; char yn; L.stu = (STU *)malloc(100*sizeof(STU); L.length = 0; if(1) if(fp_stu = fopen("c:StudentFile.txt","rb") = NULL) printf("the first time to use the system, please input information"); goto gotostar; for(j=1;!feof(fp

12、_stu);+j) fscanf(fp_stu,"%s%s%d%d%d",&L.stuj.num,&L.,&L.stuj.math,&L.stuj.english,&L.stuj.chinese); +L.length; -L.length;gotostar:printf("%dn",L.length); while(1) char kbkey='1' int choose; initgr(); /* BGI初始化 */ setbkcolor(BLACK); setcolor(BL

13、UE); setfillstyle(SOLID_FILL,BLUE);/*這句話的作用,可以不為BLUE*/ rectangle(120,80,500,160); floodfill(162,82,BLUE); /*必須和邊框顏色相同*/ rectangle(80,210,240,260); floodfill(82,212,BLUE); rectangle(400,210,560,260); floodfill(402,212,BLUE); rectangle(80,310,240,360); floodfill(82,312,BLUE); rectangle(400,310,560,360

14、); floodfill(402,312,BLUE); rectangle(80,410,240,460); floodfill(82,412,BLUE); rectangle(400,410,560,460); floodfill(401,413,BLUE); setcolor(LIGHTRED); setfillstyle(SOLID_FILL,LIGHTRED); circle(320,240,25); /*畫(huà)圓*/ floodfill(320,240,LIGHTRED); setcolor(YELLOW); settextjustify(1,1); settextstyle(1,0,1

15、); outtextxy(320,120,"Student Information Management System"); outtextxy(160,235,"1.Insert"); outtextxy(480,235,"2.alter"); outtextxy(160,335,"3.detele"); outtextxy(480,335,"4.search"); outtextxy(160,435,"5.output all"); outtextxy(480,435,&

16、quot;6.statistics"); outtextxy(320,240,"7.exit"); outtextxy(320,50,"Author:Zhao Yingnan"); while(1) switch(kbkey) case '1': while(!kbhit() flash(75,205,245,265); break; case '2': while(!kbhit() flash(395,205,565,265); break; case '3': while(!kbhit() f

17、lash(75,305,245,365); break; case '4': while(!kbhit() flash(395,305,565,365); break; case '5': while(!kbhit() flash(75,405,245,465); break; case '6': while(!kbhit() flash(395,405,565,465); break; case '7': while(!kbhit() flash_circle(320,240,28); break; default:break;

18、 if(kbkey%48<=7) choose = kbkey%48; kbkey = getch(); if('n' = kbkey|'r'=kbkey) break; /*getch();*/ /* 暫停一下,看看前面繪圖代碼的運(yùn)行結(jié)果 */ closegraph(); /* 恢復(fù)TEXT屏幕模式 */ printf("choose=%dn",choose); fflush(stdin); switch(choose) case 1:while(1) i=L.length+1; printf("num:"); g

19、ets(L.stui.num); printf("name:"); gets(L.); printf("math:"); scanf("%d",&L.stui.math);fflush(stdin); printf("english:"); scanf("%d",&L.stui.english);fflush(stdin); printf("chinese:"); scanf("%d",&L.stui.chines

20、e);fflush(stdin); L.stu0 = L.stui; for(;i>=0;-i) L.stui.key = atol(L.stui.num); for(j=L.length;L.stu0.key<L.stuj.key;-j) L.stuj+1 = L.stuj; L.stuj+1 = L.stu0; +L.length; if(fp_stu = fopen("c:StudentFile.txt","wb") = NULL) printf("Cannot open file strike any key exit!&q

21、uot;); getch(); exit(1); for(j=1;j<=L.length;+j) fprintf(fp_stu,"%st%st%dt%dt%drn",L.stuj.num,L.,L.stuj.math,L.stuj.english,L.stuj.chinese); fclose(fp_stu); printf("continue?(y/n)"); if(yn = getchar()='y') fflush(stdin);continue; else break; break; case 2:whil

22、e(1) printf("input the num to alter:"); gets(search_num); for(i=1;i<=L.length;+i) if(0 = strcmp(L.stui.num,search_num) printf("query is completed!the student's information:n"); printf("numtnametMathtEnglishtChinesen"); printf("%st%st%dt%dt%dn",L.stui.nu

23、m,L.,L.stui.math,L.stui.english,L.stui.chinese); break; printf("i=%d,length=%dn",i,L.length); if(i>L.length) printf("not find!nre");continue; printf("input info to change:n"); printf("Math:"); scanf("%d",&L.stui.math); printf("En

24、glish:"); scanf("%d",&L.stui.english); printf("Chinese:"); scanf("%d",&L.stui.chinese); if(fp_stu = fopen("c:StudentFile.txt","wb") = NULL) printf("Cannot open file strike any key exit!"); getch(); exit(1); for(j=1;j<=L.leng

25、th;+j) fprintf(fp_stu,"%st%st%dt%dt%drn",L.stuj.num,L.,L.stuj.math,L.stuj.english,L.stuj.chinese); fclose(fp_stu); fflush(stdin); printf("continue?(y/n)"); if(yn = getchar()='y') fflush(stdin);continue; else break; break; case 3: while(1) printf("enter num t

26、o delete:"); gets(search_num); for(i=1;i<=L.length;+i) if(0 = strcmp(L.stui.num,search_num) break; if(i>L.length) printf("no num to delete!n"); else for(j = i;j<L.length;+j) L.stuj = L.stuj+1; -L.length; if(fp_stu = fopen("c:StudentFile.txt","wb") = NULL)

27、printf("Cannot open file strike any key exit!"); getch(); exit(1); for(j=1;j<=L.length;+j) fprintf(fp_stu,"%st%st%dt%dt%drn",L.stuj.num,L.,L.stuj.math,L.stuj.english,L.stuj.chinese); fclose(fp_stu); printf("continue?(y/n)"); if(yn = getchar()='y') ff

28、lush(stdin);continue; else break; break; case 4:while(1) printf("enter the searching num or name:"); gets(search_num);j=0; for(i=1;i<=L.length;+i) if(1 = Index(L.stui.num,search_num) printf("query is completedn"); printf("numtnametMathtEnglishtChinesen"); printf(&quo

29、t;%st%st%dt%dt%dn",L.stui.num,L.,L.stui.math,L.stui.english,L.stui.chinese); +j; if(i = L.length) break; continue; if(j>0&&j=L.length) break; for(i=1;i<=L.length;+i) if(1 = Index(L.,search_num) printf("query is completedn"); printf("numtnametMathtE

30、nglishtChinesen"); printf("%stt%st%dt%dt%dn",L.stui.num,L.,L.stui.math,L.stui.english,L.stui.chinese); +j; if(i = L.length) break; continue; if(j>0&&j=L.length) break; /*for(i=1;i<=L.length;+i) if(0 = strcmp(L.stui.num,search_num) printf("查詢完畢!n"); pri

31、ntf("學(xué)號(hào)t姓名t數(shù)學(xué)t英語(yǔ)t語(yǔ)文n"); printf("%st%st%dt%dt%dn",L.stui.num,L.,L.stui.math,L.stui.english,L.stui.chinese); break; */ if(i>L.length) printf("not find!n"); printf("continue?(y/n)"); if(yn = getchar()='y') fflush(stdin);continue; else break;/*

32、輸入y繼續(xù),輸入除y以外的字符跳出循環(huán)*/ break; case 5:for(i=1;i <= L.length;+i) printf("numttnametMathtEnglishtChinesen"); printf("%st%st%dt%dt%dn",L.stui.num,L.,L.stui.math,L.stui.english,L.stui.chinese); printf("Press any key to the main menu!");getch(); break; case 6:for(i

33、=1;i<=L.length;+i) L.stui.total = L.stui.math+L.stui.english+L.stui.chinese; for(i=1;i<=L.length;+i) all_math = all_math + L.stui.math; all_english = all_english + L.stui.english; all_chinese = all_english + L.stui.chinese; printf("l.stu%d.math=%dn",i,all_math); aver_math = (float)all_math/L.length; aver_english = (float)all_english/L.length; aver_chinese = (float)all_chinese/L.length; for(i=1;i<=L.length;i+) top_math = L.stu1.math; top_math = (top_math<L.stui.math)?L.stui.math:top_math; top_eng

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論