




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中南大學(xué)“數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)學(xué)生管理系統(tǒng)專業(yè): 計(jì)算機(jī)類 班級(jí): 姓名: 學(xué)號(hào): 完成日期:二一年七月六日目錄:1 問(wèn)題描述2 根本要求3系統(tǒng)分析與設(shè)計(jì)4 測(cè)試數(shù)據(jù)及結(jié)果 5 總結(jié)6 附錄:源程序清單學(xué)生信息管理系統(tǒng)設(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é)
2、號(hào)對(duì)所有學(xué)生信息進(jìn)行升序、降序排列,并輸出l 可選用冒泡、選擇、快速排序等算法;l 不僅輸出屏幕顯示,還需要寫入存放學(xué)生信息的文件。(4) 按姓名、學(xué)號(hào)等方式,實(shí)現(xiàn)對(duì)學(xué)生信息精確查詢、模糊查詢,并輸出屏幕顯示 l 精確查詢結(jié)果演示查詢“姓名是劉梅同學(xué)信息,那么輸出 學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 .2004112021 劉梅 88 90 78 .l 模糊查詢結(jié)果演示查詢“姓劉的同學(xué)信息,那么輸出 學(xué)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 語(yǔ)文 .2004112021 劉梅 88 90 78 .2004112021 劉強(qiáng) 87 80 98 .2004112021 劉星 86 70 58 .l 能夠?qū)崿F(xiàn)連續(xù)屢次查詢
3、(5) 學(xué)生信息的插入、刪除、修改。l 通過(guò)插入、刪除和修改后,保持所有學(xué)生信息的有序性;l 插入、刪除和修改后,對(duì)存放所有學(xué)生信息的文件及時(shí)更新。(6) 數(shù)據(jù)的統(tǒng)計(jì)功能l 統(tǒng)計(jì)每個(gè)學(xué)生的平均分和總分;l 統(tǒng)計(jì)每個(gè)科目的平均分和最高分、最低分;l 將上述統(tǒng)計(jì)結(jié)果,寫入存放學(xué)生信息的文件。3系統(tǒng)分析與設(shè)計(jì)流程圖:翻開系統(tǒng)結(jié)束case 1文件內(nèi)有數(shù)據(jù)主菜單項(xiàng)選擇擇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)排序,此處用到了直接
4、插入排序。從數(shù)組的第一個(gè)元素開始存放學(xué)生結(jié)構(gòu)體,0號(hào)做“哨兵。信息的模糊查詢:可通過(guò)學(xué)號(hào)或者姓名進(jìn)行查詢,用字符串的匹配完成這一功能。信息的刪除:精確查詢到該學(xué)生信息的存儲(chǔ)位置,然后逐個(gè)將后面的信息前移一個(gè)位置,實(shí)現(xiàn)刪除功能。輸出時(shí)的結(jié)果為順序排列后的信息。啟動(dòng)系統(tǒng),插入信息后,會(huì)在C盤根目錄下生成一個(gè)STUDENTF的文件,學(xué)生信息保存在這里,進(jìn)行刪除或者插入后會(huì)實(shí)時(shí)更新文件內(nèi)容。重新翻開系統(tǒng),程序會(huì)首先載入文件內(nèi)容,即上次更新后的信息。我們也可以到C盤根目錄下找到保存文件,查看其中內(nèi)容。選擇退出項(xiàng)后,退出系統(tǒng)。4 測(cè)試數(shù)據(jù)及結(jié)果 本程序以TC為編譯運(yùn)行環(huán)境。輸入信息后,輸出學(xué)生信息:修改0
5、909083124號(hào)成績(jī)?yōu)?50.150.150后:文件內(nèi)容:刪除:刪除這三個(gè)信息后輸出:可以看到,原來(lái)有7組記錄,刪除3組記錄后,剩余4組記錄,且有序。此時(shí)文件內(nèi)容為:統(tǒng)計(jì)結(jié)果:主菜單:5總結(jié):本學(xué)期學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這門課程,在學(xué)習(xí)算法的同時(shí),也在不斷穩(wěn)固著我們C語(yǔ)言的根底知識(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)常寫錯(cuò)。循環(huán)條件
6、的臨界位置,是大于等于或者小于等于還是大于或小于,一不小心便會(huì)出錯(cuò)。 通過(guò)本次課程設(shè)計(jì),我體會(huì)到了編程能力的中很重要的兩點(diǎn):良好的編程習(xí)慣。有一個(gè)良好的編程習(xí)慣是很重要的,例如一個(gè)好的命名習(xí)慣,可以讓變量所表示的數(shù)據(jù)很明顯,寫程序時(shí)結(jié)構(gòu)清楚,適當(dāng)?shù)奶砑幼⑨尅2坏阌诤推渌酥g的交流,而且在日后重新看自己這段代碼的時(shí)候,也易于看懂。否那么,一段時(shí)間后,自己寫的代碼也需要花費(fèi)很多時(shí)間才能看懂。學(xué)習(xí)一些算法很重要。雖然隨著科技開展,計(jì)算機(jī)速度越來(lái)越快,程序的運(yùn)行速度的影響已經(jīng)大大不如從前。但是,一個(gè)好的算法,能提高程序運(yùn)行速度。而且,理解掌握好的算法,不但可以使人養(yǎng)成良好的編程思想,還能提高編程時(shí)
7、的速度。 另外的一點(diǎn)體會(huì)是,不但要提高自己的編程能力,而且還要注意培養(yǎng)自己的表達(dá)能力。能夠?qū)⒁粋€(gè)程序的功能以一種簡(jiǎn)單明了的方式表達(dá)出來(lái)很重要。現(xiàn)在對(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; c
8、har name20; int english; int math; int chinese; int total;STU;typedef struct 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); re
9、ctangle(x1,y1,x2,y2); for(i=0;i<15;+i) delay(50000); setcolor(BLACK); 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(
10、50000); int Index(char T1,char T2) unsigned int i; for(i=0;(i<strlen(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_
11、math,top_english,low_english,top_chinese,low_chinese; int choose; List 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 s
12、ystem, please input information"); goto gotostar; for(j=1;!feof(fp_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
13、' int choose; initgr(); /* BGI初始化 */ setbkcolor(BLACK); setcolor(BLUE); 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); recta
14、ngle(80,310,240,360); floodfill(82,312,BLUE); rectangle(400,310,560,360); 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); /*畫圓*/ floodfill(320,2
15、40,LIGHTRED); setcolor(YELLOW); settextjustify(1,1); settextstyle(1,0,1); 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&q
16、uot;); outtextxy(160,435,"5.output all"); outtextxy(480,435,"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(!kb
17、hit() flash(395,205,565,265); break; case '3': while(!kbhit() flash(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 '
18、;7': while(!kbhit() flash_circle(320,240,28); break; default:break; 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); s
19、witch(choose) case 1:while(1) i=L.length+1; printf("num:"); gets(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)
20、; printf("chinese:"); scanf("%d",&L.stui.chinese);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","
21、;wb") = NULL) 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 = getcha
22、r()='y') fflush(stdin);continue; else break; break; case 2:while(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("numtnametMat
23、htEnglishtChinesen"); printf("%st%st%dt%dt%dn",L.stui.num,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(&quo
24、t;Math:"); scanf("%d",&L.stui.math); printf("English:"); scanf("%d",&L.stui.english); printf("Chinese:"); scanf("%d",&L.stui.chinese); if(fp_stu = fopen("c:StudentFile.txt","wb") = NULL) printf("Cannot open f
25、ile 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); fflush(stdin); printf("continue?(y/n)"); if(yn = getchar()='y') fflush(stdin)
26、;continue; else break; break; case 3: while(1) printf("enter num to 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; i
27、f(fp_stu = fopen("c:StudentFile.txt","wb") = NULL) 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)
28、; printf("continue?(y/n)"); if(yn = getchar()='y') fflush(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&
29、quot;); printf("numtnametMathtEnglishtChinesen"); printf("%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
30、) printf("query is completedn"); printf("numtnametMathtEnglishtChinesen"); 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;+
31、i) if(0 = strcmp(L.stui.num,search_num) printf("查詢完畢!n"); printf("學(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)"
32、); if(yn = getchar()='y') fflush(stdin);continue; else break;/*輸入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(&q
33、uot;Press any key to the main menu!");getch(); break; case 6:for(i=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
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校測(cè)溫門管理制度
- 學(xué)校美工作管理制度
- 學(xué)校面點(diǎn)房管理制度
- 安保部保密管理制度
- 安全環(huán)保科管理制度
- 安檢實(shí)訓(xùn)室管理制度
- 安裝隊(duì)員工管理制度
- 實(shí)訓(xùn)室各項(xiàng)管理制度
- 實(shí)驗(yàn)管理室管理制度
- 客艙模擬艙管理制度
- 木材的聲學(xué)與振動(dòng)特性
- 醫(yī)療機(jī)構(gòu)污水管理培訓(xùn)護(hù)理課件
- 4D廚房區(qū)域區(qū)間管理責(zé)任卡
- 2023年衡陽(yáng)市中級(jí)人民法院聘用制書記員招聘考試試題及答案
- 區(qū)塊鏈原理與實(shí)踐全套教學(xué)課件
- 軍事訓(xùn)練傷的防治
- 動(dòng)物藥理課件
- 國(guó)開《化工安全技術(shù)》形考任務(wù)1-4答案
- 我的家鄉(xiāng)廣西河池宣傳簡(jiǎn)介
- 產(chǎn)業(yè)命題賽道命題解決對(duì)策參考模板
- 二輥矯直機(jī)的原理
評(píng)論
0/150
提交評(píng)論