![學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/7ed484aa-bc72-4478-839d-d67022639db2/7ed484aa-bc72-4478-839d-d67022639db21.gif)
![學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/7ed484aa-bc72-4478-839d-d67022639db2/7ed484aa-bc72-4478-839d-d67022639db22.gif)
![學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/7ed484aa-bc72-4478-839d-d67022639db2/7ed484aa-bc72-4478-839d-d67022639db23.gif)
![學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/7ed484aa-bc72-4478-839d-d67022639db2/7ed484aa-bc72-4478-839d-d67022639db24.gif)
![學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/7ed484aa-bc72-4478-839d-d67022639db2/7ed484aa-bc72-4478-839d-d67022639db25.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)綜合實(shí)驗(yàn)課程設(shè)計(jì)名稱:學(xué)生成績管理系統(tǒng) 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)生成績管理系統(tǒng)一、 問題的描述和分析1.1問題的描述 隨著社會(huì)的發(fā)展和經(jīng)濟(jì)時(shí)代的到來,管理信息系統(tǒng)在各行各業(yè)都越來越重要,特別是教育事業(yè)。在經(jīng)濟(jì)發(fā)達(dá)的國家,許多教育機(jī)構(gòu)(如公辦、私立、培訓(xùn)機(jī)構(gòu)等),都投入了大量的資金開發(fā)MIS系統(tǒng),以求在將來激烈的競(jìng)爭(zhēng)中立于不敗之地。在我國,民辦教育是新興的一個(gè)行業(yè),是隨著改革開放和市場(chǎng)經(jīng)濟(jì)的發(fā)展根據(jù)中國特有的國情發(fā)展起來的,特別是中國民辦教育促進(jìn)法的出臺(tái),從一定的程度上規(guī)范和促進(jìn)了中國民辦教育的發(fā)展,這是一個(gè)很有發(fā)展前途的新興產(chǎn)業(yè),但是同發(fā)達(dá)國家
2、相比,我國的民辦教育行業(yè)的信息技術(shù)的應(yīng)用程度還很低,只有在大城市中發(fā)展較早、規(guī)模較大的民辦院校中才使用計(jì)算機(jī)進(jìn)行大規(guī)模操作,從各方面提高工作效率,取得良好的社會(huì)和經(jīng)濟(jì)效益,而一些新興的、規(guī)模較小的民辦機(jī)構(gòu)還沒有全部具備這種功能。因此可見,隨著我國民辦教育的迅速發(fā)展,信息技術(shù)在其上的應(yīng)用會(huì)更加地廣泛和深入。1.2現(xiàn)有系統(tǒng)存在問題的分析 有的學(xué)校根本就沒有系統(tǒng),還是手工操作計(jì)算機(jī)日新月異的發(fā)展,但是有的領(lǐng)導(dǎo)只見眼前利益,不關(guān)心,甚至不敢嘗試新興的事物。手工操作還十分落后,效率極低,成本很大,以后的社會(huì)是信息的社會(huì),信息只有快,準(zhǔn),精才能發(fā)揮其價(jià)值。 所以機(jī)器代替人力是必然
3、的歷史發(fā)展趨勢(shì),只有領(lǐng)導(dǎo)的重視和支持才能從人工操作改為計(jì)算機(jī)的自動(dòng)化系統(tǒng)。人工操作必將被計(jì)算機(jī)代替。 有些學(xué)校雖使用了計(jì)算機(jī),甚至管理系統(tǒng),但是仍然存在很多問題,問題一日不解決,效率就一日提不上去。 還有,有的系統(tǒng)很不完善到處是漏洞,可以說是千瘡百孔,這樣極不完善的系統(tǒng)能有保障嗎?所以制作一個(gè)完善的學(xué)生管理系統(tǒng)是必不可少的。二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)struct person char name20; long num; float math; float English; float chinese; float average; float sum;student;三、
4、模塊:學(xué)生成績管理系統(tǒng)模塊四、算法的設(shè)計(jì)1.在此成績管理系統(tǒng)中,要求用戶輸入的只是有字符型和數(shù)值型數(shù)據(jù),所以我設(shè)計(jì)了下面函數(shù)來處理并對(duì)輸出的數(shù)據(jù)進(jìn)行檢驗(yàn)。int N=0;Enter() FILE *fp; char ch; char ch2; char numstr20; struct person student2; clrscr(); fp=fopen("jie.txt","ab"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a
5、 second with patience.nthe system is exiting.n"); getch(); exit(0); else do printf("your name:"); gets(); printf("nyour num:"); gets(numstr); student.num=atol(numstr); printf("nyour math:"); gets(numstr); student.math=atof(numstr); printf("nyour En
6、glish:"); gets(numstr); student.English=atof(numstr); printf("nyour chinese:"); gets(numstr); student.chinese=atof(numstr); student.sum=student.chinese+student.math+student.English; student.average=student.sum/3; fwrite(&student,sizeof(struct person),1,fp); N+; printf("Do you
7、 continue adding other students(Y/N)?n"); ch=getchar(); getchar(); while(ch='y'|ch='Y'); printf("Show all(Y/N)?n"); ch2=getchar(); getchar(); if(ch2='y'|ch2='Y') Listall(); fclose(fp); return_confirm(); clrscr(); 2.查詢學(xué)生記錄當(dāng)用戶執(zhí)行此查詢?nèi)蝿?wù)時(shí),系統(tǒng)會(huì)提示用戶進(jìn)行查詢字段的選擇,即按學(xué)
8、號(hào)或按姓名進(jìn)行查詢。若此學(xué)生記錄存在,則會(huì)打印輸出此學(xué)生記錄的信息。Search() char choice; char ch1; char ch2; char ch3; char ch4; char name20; long num; char numstr20; clrscr(); printf("*WAYS OF SEARCHING*n"); printf("-n"); printf("* 1.name *n"); printf("* 2.num *n"); printf("-n"); p
9、rintf("give your choice:n"); choice=getchar(); getchar(); while(choice>'2'|choice<'1') printf("Sorry.your choice is wrong.nplease give a correct one:n"); choice=getchar(); getchar(); 3.根據(jù)姓名或?qū)W號(hào)進(jìn)行查找 switch(choice) case '1':do Loop1: printf("input
10、the name of students you want to search:n"); gets(name); Search1(name); printf("GO ON SEARCHING BY NAEM(Y/N)?n"); ch2=getchar(); getchar(); while(ch2='y'|ch2='Y'); printf("Search by other ways(Y/N)?n"); ch3=getchar(); getchar(); if(ch3='y'|ch3='Y&
11、#39;) goto Loop2; break; case '2': do Loop2: printf("input the num of students you want to search:n"); gets(numstr); num=atol(numstr); Search2(num); printf("GO ON SEARCHING BY NUM(Y/N)?n"); ch1=getchar(); getchar(); while(ch1='y'|ch1='Y'); Search2(long num
12、) FILE *fp; char ch; int flag=0; int t; clrscr(); fp=fopen("jie.txt","rb"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else flag=0; t=0; while(fread(&student,sizeo
13、f(struct person),1,fp) if(num=student.num) printf("namettnumtchinesetEnglishtmathsumtaveragen"); printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); t=1; break; if(t=0) printf("
14、;Sorry.the student you are searching not existed.n"); rewind(fp); fclose(fp); Search1(char *name) FILE *fp; char ch; int flag=0; int t; clrscr(); fp=fopen("jie.txt","rb"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patienc
15、e.nthe system is exiting.n"); getch(); exit(0); else flag=0; t=0; while(fread(&student,sizeof(struct person),1,fp) if(strcmp(name,)=0) printf("namettnumtchinesetEnglishtmathsumtaveragen"); printf("%-10s%-6ld%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",,studen
16、t.num,student.chinese,student.English,student.math,student.sum,student.average); t=1; break; if(t=0) printf("Sorry.the student you are searching not existed.n"); rewind(fp); fclose(fp); Delete() FILE *fp; struct person student130,student230; int i; int k; int j; int flag; char ch1; char na
17、me20; char ch; char ch2; clrscr(); fp=fopen("jie.txt","rb+"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else do i=0; j=0; flag=0; printf("input the name of stude
18、nts you are going to delete.n"); scanf("%s",name); while(fread(&student,sizeof(struct person),1,fp)=1) if(strcmp(name,)!=0) student2j=student; j+; else flag=1; printf("nametttnumtchinesettEnglishttmathtsumtaveragen"); printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.
19、2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); printf("Delete(Y/N)?n"); ch1=getchar(); getchar(); toupper(ch); if(ch='N') goto Loop; printf("j=%dn",j); k=j; i=0; fclose(fp); if(flag=0) printf("Sorry.
20、the student you are searching not existed.n"); if(flag=1) printf("Congratulation!you succeed!n"); fp=fopen("jie.txt","wb+"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); ge
21、tch(); exit(0); else i=0; do fwrite(&student2i,sizeof(struct person),1,fp); i+; while(i<k); Loop: getchar(); printf("Go on(Y/N)?n"); ch=getchar(); getchar(); while(ch='y'|ch='Y'); printf("Show all(Y/N)?n"); ch2=getchar(); getchar(); if(ch2='y'|ch2=&
22、#39;Y') rewind(fp); printf("nametttnumtchinesettEnglishttmathtsumtaveragen"); while(fread(&student,sizeof(struct person),1,fp) printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average);
23、 fclose(fp); return_confirm();4.修改學(xué)生記錄在修改學(xué)生記錄操作中,系統(tǒng)會(huì)先按輸入的學(xué)號(hào)或姓名查找該記錄,然后提示用戶修改學(xué)號(hào)或姓名之外的值,但學(xué)號(hào)或姓名不能修改。Revise() FILE *fp; char ch; char ch1; long offset=sizeof(struct person); int flag=0; char numstr20; char name20; clrscr(); fp=fopen("jie.txt","rb+"); if(fp=NULL) printf("can'
24、t open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else again: printf("name of rivesing student:n"); gets(name); do flag=0; fread(&student,sizeof(struct person),1,fp); if(strcmp(name,)=0) flag=1; printf
25、("the following is information of student being deleted:n"); printf("namettnumtmathtchinesetEnglishtsumtaveragen"); printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); do print
26、f("*informations for revising*n"); printf("=n"); printf("# 1.name 2.num #n"); printf("# 3.math 4.English #n"); printf("# 5.chinese 6.total #n"); printf("=n"); printf("give a choice:n"); ch=getchar(); getchar(); while(ch>'6&
27、#39;|ch<'1') printf("Sorry.you put is wrong.nplease input another choice:n"); ch=getchar(); getchar(); switch(ch) case '1':ass_revise("name"); gets(); break; case '2':ass_revise("num"); gets(numstr); student.num=atol(numstr); break
28、; case '3':ass_revise("math"); gets(numstr); student.math=atof(numstr); break; case '4':ass_revise("English"); gets(numstr); student.English=atof(numstr); break; case '5':ass_revise("chinese"); gets(numstr); student.chinese=atof(numstr); break; c
29、ase '6':ass_revise("total"); gets(); ass_revise("num"); gets(numstr); student.num=atol(numstr); ass_revise("math"); gets(numstr); student.math=atof(numstr); ass_revise("English"); gets(numstr); student.English=atof(numstr); ass_revise("
30、;chinese"); gets(numstr); student.chinese=atof(numstr); student.sum=student.chinese+student.math+student.English; student.average=student.sum/3; printf("Continue revising the same student(Y/N)?n"); ch1=getchar(); getchar(); while(ch='y'|ch='Y'); fseek(fp,-offset,1); fw
31、rite(&student,sizeof(struct person),1,fp); printf("the following is information of student had been revised:n"); printf("namettnumtmathtchinesetEnglishtsumtaveragen"); printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.Eng
32、lish,student.math,student.sum,student.average); printf("Congratulation!you succeed!n"); break; while(fread(&student,sizeof(struct person),1,fp); rewind(fp); if(flag=0) printf("Sorry.the student of reving not existed.n"); printf("GO ON Revising(Y/N)?n"); ch1=getchar(
33、); getchar(); if(ch1='y'|ch1='Y') goto again; fclose(fp); return_confirm(); clrscr();5.對(duì)學(xué)生記錄進(jìn)行排序Order() FILE *fp; char ch; char ch2; int k; float a30,b30,c30,d30; struct person student130; int i; char ch1; fp=fopen("jie.txt","rb"); if(fp=NULL) printf("can'
34、;t open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); rewind(fp); i=0; while(fread(&student1i,sizeof(struct person),1,fp) i+; k=i; do for(i=0;i<k;i+) ai=student1i.math; bi=student1i.English; ci=student1i.chinese; di=student
35、1i.average; printf(" *WAYS OF ORDER* n"); printf("=n"); printf("*1.math 2.English*n"); printf("*3.chinese 4.average*n"); printf("=n"); printf("please give a choice:n"); ch=getchar(); getchar(); while(ch<'1'|ch>'4') pri
36、ntf("Sorry.the date you input is wrong.nplease give another choice:n"); ch=getchar(); getchar(); switch(ch) case '1':Order1(a); break; case '2':Order1(b); break; case '3':Order1(c); break; case '4':Order1(d); break; printf("Congratulation!you succeed!n&
37、quot;); printf("Go on ordering(Y/N)?n"); ch1=getchar(); getchar(); while(ch1='y'|ch='Y'); printf("Show all(Y/N)?n"); ch2=getchar(); getchar(); if(ch2='y'|ch2='Y') rewind(fp); printf("nametttnumtchinesettEnglishttmathtsumtaveragen"); while
38、(fread(&student,sizeof(struct person),1,fp) printf("%-10s%-6ld%8.2f%8.2f%8.2f%8.2f%8.2fn",,student.num,student.chinese,student.English,student.math,student.sum,student.average); fclose(fp); return_confirm(); Order1(float *p) FILE *fp; int i=0; int k; int j; struct person st
39、udent2; struct person student130; clrscr(); fp=fopen("jie.txt","r+"); if(fp=NULL) printf("can't open this file.n"); printf("wait for a second with patience.nthe system is exiting.n"); getch(); exit(0); else while(fread(&student1i,sizeof(struct person),1,fp) i+; k=i; i=0; while(i<k) for(j=i+1;j<k;j+) if(pi<pj) student2=student1i; student1i=student1j; student1j=student2; i+; rewind(fp); for(i=0;i<k;i+) fwrite(&student1i,sizeof(struct person),1,fp); fclose(fp);6.顯示學(xué)生記錄由于記錄顯示操作經(jīng)常進(jìn)行,所以我將這分由獨(dú)立的函數(shù)來實(shí)現(xiàn),減少代碼的重復(fù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 魯人版道德與法治九年級(jí)上冊(cè)11.1《合同是當(dāng)事人之間的法律》聽課評(píng)課記錄
- 滬教版數(shù)學(xué)九年級(jí)下冊(cè)27.1《圓的基本性質(zhì)》聽評(píng)課記錄
- 人教版地理七年級(jí)下冊(cè)第三節(jié)《撒哈拉以南的非洲》聽課評(píng)課記錄1
- 人教版七年級(jí)數(shù)學(xué)下冊(cè) 聽評(píng)課記錄5.1.3 第1課時(shí)《同位角、內(nèi)錯(cuò)角、同旁內(nèi)角》
- 蘇科版數(shù)學(xué)七年級(jí)下冊(cè)聽評(píng)課記錄7.5多邊形的內(nèi)角和與外角和
- 聽評(píng)課記錄表8篇二年級(jí)
- 【部編版】道德與法治九年級(jí)下冊(cè)2.1《推動(dòng)和平與發(fā)展》聽課評(píng)課記錄
- 湘教版數(shù)學(xué)七年級(jí)下冊(cè)《相交直線所成的角》聽評(píng)課記錄
- 生產(chǎn)計(jì)劃外包合同(2篇)
- 獨(dú)生子女合同
- 2024年步步高高考英語大一輪復(fù)習(xí)(新人教版)基礎(chǔ)知識(shí)默寫本必修第一冊(cè)含答案
- 盤錦市重點(diǎn)中學(xué)2024年中考英語全真模擬試卷含答案
- 2024年《幼兒教師職業(yè)道德》教案
- 平安產(chǎn)險(xiǎn)湖南省商業(yè)性雞蛋價(jià)格指數(shù)保險(xiǎn)條款
- 石家莊市第四十中學(xué)2021-2022學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題
- 《共演戰(zhàn)略》分析工具
- 兒童行為發(fā)育評(píng)估量表(注意力、讀寫力、感知覺發(fā)展)
- 2023年煙花爆竹安全作業(yè)真題模擬匯編(共718題)
- 揚(yáng)州市古樹名木匯編
- 提高臥床患者踝泵運(yùn)動(dòng)的執(zhí)行率
- 裝配式建筑預(yù)制構(gòu)件運(yùn)輸與堆放-預(yù)制構(gòu)件運(yùn)輸基本要求
評(píng)論
0/150
提交評(píng)論