專業(yè)課程設(shè)計(jì)班級(jí)檔案標(biāo)準(zhǔn)管理系統(tǒng)_第1頁(yè)
專業(yè)課程設(shè)計(jì)班級(jí)檔案標(biāo)準(zhǔn)管理系統(tǒng)_第2頁(yè)
專業(yè)課程設(shè)計(jì)班級(jí)檔案標(biāo)準(zhǔn)管理系統(tǒng)_第3頁(yè)
專業(yè)課程設(shè)計(jì)班級(jí)檔案標(biāo)準(zhǔn)管理系統(tǒng)_第4頁(yè)
專業(yè)課程設(shè)計(jì)班級(jí)檔案標(biāo)準(zhǔn)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

《高級(jí)語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告書題目:班級(jí)檔案管理系統(tǒng)專業(yè):計(jì)算機(jī)科學(xué)和技術(shù)學(xué)號(hào):學(xué)生姓名:指導(dǎo)老師:完成日期:目錄一、設(shè)計(jì)內(nèi)容和設(shè)計(jì)要求 11.設(shè)計(jì)內(nèi)容 12.設(shè)計(jì)要求 1二、程序設(shè)計(jì)目標(biāo) 2三、程序模塊分析 21.系統(tǒng)控制步驟圖 22.部分關(guān)鍵函數(shù)算法步驟圖 3四、函數(shù)功效說(shuō)明 61.函數(shù)說(shuō)明 62.用戶說(shuō)明 6五、程序測(cè)試 7六、總結(jié) 14附錄 15一、設(shè)計(jì)內(nèi)容和設(shè)計(jì)要求1.設(shè)計(jì)內(nèi)容對(duì)一個(gè)有N個(gè)學(xué)生班級(jí),經(jīng)過(guò)該系統(tǒng)實(shí)現(xiàn)對(duì)該班級(jí)學(xué)生基礎(chǔ)信息進(jìn)行錄入、顯示、修改、刪除、保留等操作管理。2.設(shè)計(jì)要求(1)本系統(tǒng)采取一個(gè)包含N個(gè)數(shù)據(jù)結(jié)構(gòu)體數(shù)組,每個(gè)學(xué)生數(shù)據(jù)應(yīng)該包含:學(xué)號(hào)、姓名、性別、年紀(jì)、備注。(2)本系統(tǒng)顯示這么菜單:請(qǐng)選擇系統(tǒng)功效項(xiàng):a從文件中讀入學(xué)生基礎(chǔ)信息b添加新學(xué)生基礎(chǔ)信息c學(xué)生基礎(chǔ)信息顯示d學(xué)生基礎(chǔ)信息保留至文件e學(xué)生基礎(chǔ)信息刪除f學(xué)生基礎(chǔ)信息修改(要求先輸入修改密碼)g學(xué)生基礎(chǔ)信息查詢(1)按學(xué)號(hào)查詢(2)按姓名查詢(3)按性別查詢(4)按年紀(jì)查詢h退出系統(tǒng)(3)實(shí)施一個(gè)具體功效以后,程序?qū)⒅匦嘛@示菜單。(4)將學(xué)生基礎(chǔ)信息保留到文件中。(5)進(jìn)入系統(tǒng)之前要先輸入登錄密碼。說(shuō)明:登錄密碼和修改密碼使用文件保留。二、課程設(shè)計(jì)目標(biāo)在平時(shí)學(xué)習(xí)C語(yǔ)言過(guò)程中,通常只是在課堂上跟隨老師講解來(lái)進(jìn)行學(xué)習(xí),所以在練習(xí)上較為缺乏,而課程設(shè)計(jì)恰恰填補(bǔ)了這點(diǎn),它不僅是對(duì)平時(shí)學(xué)習(xí)一個(gè)檢測(cè),同時(shí)在做它過(guò)程中也對(duì)自己學(xué)習(xí)知識(shí)進(jìn)行了鞏固和提升,為以后學(xué)習(xí)和工作打下了基礎(chǔ)。三、程序模塊分析1.系統(tǒng)控制步驟圖結(jié)束添加學(xué)生信息功效保留信息功效退出功效信息查詢功效信息修改功效信息刪除功效讀取學(xué)生信息功效開始密碼函數(shù)結(jié)束添加學(xué)生信息功效保留信息功效退出功效信息查詢功效信息修改功效信息刪除功效讀取學(xué)生信息功效開始密碼函數(shù)2.部分關(guān)鍵函數(shù)算法步驟圖開始開始開始開始輸入添加學(xué)生數(shù)打開文件輸入添加學(xué)生數(shù)打開文件for循環(huán)Ffor循環(huán)For循環(huán)輸出添加學(xué)生信息調(diào)用輸出添加學(xué)生信息調(diào)用fscanf函數(shù)從文件讀取信息結(jié)束結(jié)束結(jié)束結(jié)束圖4.1:read函數(shù)圖4.2:input函數(shù)開始開始開始開始輸入學(xué)號(hào)密碼錯(cuò)誤打開文件輸入學(xué)號(hào)密碼錯(cuò)誤打開文件for循環(huán)調(diào)用strcmp函數(shù)密碼函數(shù)for循環(huán)調(diào)用strcmp函數(shù)密碼函數(shù)查找失敗查找失敗輸入學(xué)號(hào)for循環(huán)調(diào)用fprintf函數(shù)輸入學(xué)號(hào)for循環(huán)調(diào)用fprintf函數(shù)輸出信息輸出信息輸入新信息結(jié)束輸入新信息結(jié)束結(jié)束結(jié)束圖4.3:Delete函數(shù)圖4.4:modi函數(shù)開始開始調(diào)用fscanf函數(shù)調(diào)用fscanf函數(shù)按性別查詢按年紀(jì)查詢按姓名查詢按學(xué)號(hào)查詢按性別查詢按年紀(jì)查詢按姓名查詢按學(xué)號(hào)查詢圖4.5:search函數(shù)輸出信息否是結(jié)束for循環(huán)調(diào)用strcmp函數(shù)該學(xué)生是否存在

圖4.5:search函數(shù)輸出信息否是結(jié)束for循環(huán)調(diào)用strcmp函數(shù)該學(xué)生是否存在四、函數(shù)功效說(shuō)明1.函數(shù)說(shuō)明main()函數(shù)是程序入口有調(diào)取各個(gè)模塊作用,里面包含一個(gè)switch語(yǔ)句,實(shí)現(xiàn)選擇功效;read():讀取函數(shù),從文件中讀取學(xué)生信息;input():添加函數(shù),學(xué)生基礎(chǔ)信息錄入;save():學(xué)生信息保留函數(shù);Delete():刪除函數(shù);search():查找函數(shù);modi():信息修改函數(shù);secretcode():密碼驗(yàn)證函數(shù);2.用戶說(shuō)明輸入密碼進(jìn)入系統(tǒng)后,經(jīng)過(guò)a~g選項(xiàng)來(lái)進(jìn)行功效選擇。選項(xiàng)a:調(diào)用read函數(shù),將在文件中保留學(xué)生信息讀入結(jié)構(gòu)體數(shù)組中,然后在屏幕上顯示出來(lái),按enter鍵便重新返回菜單;選項(xiàng)b:調(diào)用input函數(shù),輸入需要添加學(xué)生人數(shù),顯示出需要添加信息,將信息填寫完成后,按enter鍵重新返回菜單,再經(jīng)過(guò)選項(xiàng)c將新添加學(xué)生信息保留到文件中;選項(xiàng)c:調(diào)用save函數(shù)將新輸入或修改后學(xué)生信息保留到文件中,在input函數(shù)和modi函數(shù)調(diào)用以后需要調(diào)用此函數(shù),然后按enter鍵重新返回菜單;選項(xiàng)d:經(jīng)過(guò)調(diào)用delete函數(shù),輸入需要?jiǎng)h除學(xué)生學(xué)號(hào),按enter鍵提醒刪除成功,該學(xué)生信息已被從文件中刪除,并重新返回菜單;選項(xiàng)e:在調(diào)用該函數(shù)實(shí)現(xiàn)學(xué)生信息修改功效時(shí),需要輸入修改密碼,當(dāng)密碼錯(cuò)誤時(shí),提醒密碼錯(cuò)誤,此時(shí)重新輸入密碼。密碼正確以后,輸入需要修改信息學(xué)生學(xué)號(hào),輸出該學(xué)生信息,確定后輸入新學(xué)生信息,按enter鍵重新返回菜單,此時(shí)需要經(jīng)過(guò)選項(xiàng)c將信息保留到文件中;選項(xiàng)f:經(jīng)過(guò)調(diào)用search函數(shù),在選擇該項(xiàng)后,會(huì)出現(xiàn)一個(gè)子菜單,根據(jù)需求能夠分別經(jīng)過(guò)學(xué)號(hào)、姓名、性別和年紀(jì)來(lái)查詢學(xué)生信息,按enter鍵顯示查詢信息并重新返回菜單。五、程序測(cè)試輸入登陸密碼123456進(jìn)入系統(tǒng)圖5.1輸入a從文件中讀入學(xué)生信息圖5.2輸入b添加學(xué)生基礎(chǔ)信息圖5.3圖5.4輸入c將信息保留至文件圖5.5輸入d刪除學(xué)生信息圖5.6信息刪除成功圖5.7再次從文件輸入信息時(shí)需要?jiǎng)h除信息已被刪除圖5.8輸入e進(jìn)行學(xué)生信息修改圖5.9圖5.10輸入c將信息保留到文件中圖5.11輸入f學(xué)生信息查詢圖5.12圖5.13六、總結(jié)這次課程設(shè)計(jì)給了我很大體會(huì),我能獨(dú)立完成這項(xiàng)任務(wù),是對(duì)平時(shí)學(xué)習(xí)和練習(xí)一個(gè)肯定,同時(shí)也提升了自己信心。在完成它過(guò)程中當(dāng)然會(huì)碰到很多困難,首先是結(jié)構(gòu)體定義問題,因?yàn)閯傞_始對(duì)程序不熟悉,在定義結(jié)構(gòu)體內(nèi)元素?cái)?shù)組時(shí)出現(xiàn)了錯(cuò)誤,以后經(jīng)過(guò)一次次檢測(cè)將數(shù)組定義到了一個(gè)適宜大小。其次在input函數(shù)中,輸入完新學(xué)生信息保留至文件中時(shí),對(duì)文件原有信息進(jìn)行了覆蓋,所以為了避免這種情況,將for循環(huán)中i從N-n開始,經(jīng)過(guò)測(cè)試這種方法是有效。最終是刪除函數(shù),因?yàn)殚_始定義年紀(jì)是整型變量,在對(duì)文件中結(jié)構(gòu)體數(shù)據(jù)進(jìn)行刪除時(shí),在年紀(jì)位置會(huì)出現(xiàn)數(shù)字0,從而使從文件中讀取數(shù)據(jù)時(shí)出現(xiàn)亂碼,于是便將年紀(jì)定義成字符型數(shù)組,利用strcpy函數(shù)將結(jié)構(gòu)體數(shù)組下一位元素將前一位元素進(jìn)行覆蓋,從而實(shí)現(xiàn)刪除功效。即使較為成功完成了課程設(shè)計(jì),但因?yàn)橹R(shí)和時(shí)間不足,系統(tǒng)仍然存在缺點(diǎn),我認(rèn)為此系統(tǒng)還能經(jīng)過(guò)鏈表來(lái)進(jìn)行優(yōu)化,鏈表好處是能夠經(jīng)過(guò)指針愈加好實(shí)現(xiàn)查找、修改和刪除功效,所以假如有時(shí)間便會(huì)經(jīng)過(guò)鏈表來(lái)時(shí)、使這個(gè)系統(tǒng)愈加含有實(shí)用性。附錄源程序清單#include"stdafx.h"#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#defineN4structstudent//定義一個(gè)包含學(xué)生信息結(jié)構(gòu)體數(shù)組{ charno[10];//學(xué)號(hào) charname[8];//姓名 charsex[5];//性別 charage[5];//年紀(jì) charnote[5];//備注};structstudentstu[N];//定義全局變量voidmenu()//菜單函數(shù){ printf("\n"); printf("****************\n"); printf("**\n"); printf("*a.從文件中讀入學(xué)生基礎(chǔ)信息*\n"); printf("*b.添加新學(xué)生基礎(chǔ)信息*\n"); printf("*c.學(xué)生基礎(chǔ)信息保留至文件*\n"); printf("*d.學(xué)生基礎(chǔ)信息刪除*\n"); printf("*e.學(xué)生基礎(chǔ)信息修改*\n"); printf("*f.學(xué)生基礎(chǔ)信息查詢*\n"); printf("*g.退出系統(tǒng)*\n"); printf("**\n"); printf("****************\n"); printf("\n");printf("請(qǐng)輸入選項(xiàng):(a~g)\n");}voidinput()//學(xué)生基礎(chǔ)信息錄入{ inti; intn; printf("請(qǐng)輸入添加學(xué)生數(shù):"); scanf("%d",&n); for(i=N-n;i<N;i++) {printf("請(qǐng)輸入學(xué)生基礎(chǔ)信息:\n"); printf("no:\n");scanf("%s",stu[i].no); printf("name:\n"); scanf("%s",stu[i].name); printf("sex:\n"); scanf("%s",stu[i].sex); printf("age:\n"); scanf("%s",stu[i].age); printf("note:\n"); scanf("%s",stu[i].note); } printf("\n"); printf("請(qǐng)檢驗(yàn)信息是否輸入正確!\n"); printf("\n"); for(i=N-n;i<N;i++) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }}voidsave()//學(xué)生信息保留{FILE*fp; inti;fp=fopen("e:\\student.txt","w"); if(fp==NULL) { printf("文件不存在!\n"); exit(0); } for(i=0;i<N;i++)//在此處判定姓名所占長(zhǎng)度調(diào)整學(xué)生信息存入文件中格式 { if(strlen(stu[i].name)==4){ fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } } fclose(fp);fflush(fp); printf("保留成功!\n");}voidDelete()//刪除函數(shù);{FILE*fp;fp=fopen("e:\\student.txt","w");charnumber[10];intf;boolflag=false;printf("刪除學(xué)生信息:\n");printf("請(qǐng)輸入學(xué)號(hào):\n");scanf("%s",number);for(inti=0;i<N;i++){if(!strcmp(number,stu[i].no)){ for(f=i;f<N;f++)//調(diào)用strcpy函數(shù)令數(shù)組中下一位元素將上一位覆蓋從而實(shí)現(xiàn)刪除功效 { strcpy(stu[f].name,stu[f+1].name); strcpy(stu[f].note,stu[f+1].note); strcpy(stu[f].no,stu[f+1].no); strcpy(stu[f].sex,stu[f+1].sex); strcpy(stu[f].age,stu[f+1].age); } flag=true;}}if(!flag) { printf("該學(xué)生不存在!:\n"); Delete(); }for(i=0;i<N;i++){fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);}printf("刪除成功!\n");fclose(fp);}voidsearch()//查找函數(shù){ intf; FILE*fp; fp=fopen("e:\\student.txt","rb");for(f=0;f<N;f++) { fscanf(fp,"%s%s%s%s%s",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note); } boolflag=false;//定義一個(gè)bool類型進(jìn)行判定intm; inti; printf("1按學(xué)號(hào)查詢\n"); printf("2按姓名查詢\n"); printf("3按性別查詢\n"); printf("4按年紀(jì)查詢\n"); printf("請(qǐng)輸入選項(xiàng):"); printf("\n"); scanf("%d",&m); switch(m) { case1: charnum[10]; printf("請(qǐng)輸入學(xué)號(hào):\n"); scanf("%s",num); for(i=0;i<N;i++) { if(!strcmp(num,stu[i].no)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } if(strlen(stu[i].name)==6) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("該學(xué)生不存在.\n"); } break; case2: printf("請(qǐng)輸入姓名:\n"); charna[10];//定義一個(gè)姓名數(shù)組 scanf("%s",na); for(i=0;i<N;i++) { if(!strcmp(na,stu[i].name)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("該學(xué)生不存在.\n"); } break; case3: charch[5]; printf("請(qǐng)輸入性別:\n"); scanf("%s",ch); for(i=0;i<N;i++) { if(!strcmp(ch,stu[i].sex)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("t該學(xué)生不存在.\n"); } break; case4: charnum_age[5]; printf("請(qǐng)輸入年紀(jì):\n"); scanf("%s",&num_age); for(i=0;i<N;i++) { if(!strcmp(num_age,stu[i].age)) { if(strlen(stu[i].name)==4) { printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } flag=true; } } if(!flag) { printf("該學(xué)生不存在.\n"); } break; default: break; } }voidmodi()//信息修改函數(shù){ FILE*fp;//定義修改密碼文件指針 FILE*fp1;//定義學(xué)生信息文件指針 chara[7]; charb[7]; charc[10]; charch; inti=0; intf; booltemp=false;fp1=fopen("e:\\student.txt","r");for(f=0;f<N;f++)//從文件中將信息讀到結(jié)構(gòu)體中 { fscanf(fp1,"%s%s%s%s%s",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note); } fclose(fp1); printf("請(qǐng)輸入修改密碼:\n"); scanf("%s",b); if((fp=fopen("e:\\1.txt","r"))==NULL) { printf("打開文件夾失敗!"); exit(0); } ch=fgetc(fp); while(ch!=EOF&&i<6) { a[i]=ch; ch=fgetc(fp); i++; } a[6]='\0'; fclose(fp);while(1) { if(!strcmp(a,b)) { break; } else { printf("密碼錯(cuò)誤!請(qǐng)重新輸入密碼:\n"); scanf("%s",b); } } printf("請(qǐng)輸入需要修改信息學(xué)生學(xué)號(hào):\n"); scanf("%s",c);for(f=0;f<N;f++) {if(!strcmp(c,stu[f].no)) { printf("%s%s%s%s%s\n",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note); printf("\n"); printf("請(qǐng)輸入新信息:\n");printf("no:\n"); scanf("%s",stu[f].no); printf("name:\n"); scanf("%s",stu[f].name); printf("sex:\n"); scanf("%s",stu[f].sex); printf("age:\n"); scanf("%s",stu[f].age); printf("note:\n"); scanf("%s",stu[f].note); temp=true; break; } } if(!temp) { printf("該學(xué)生不存在!\n"); }}intsecretcode(charb[6])//密碼驗(yàn)證函數(shù){ FILE*fp; charc[7]; inti=0; charch; if((fp=fopen("e:\\2.txt","r"))==NULL) { printf("打開文件失敗!\n"); exit(0); } ch=fgetc(fp); while(ch!=EOF&&i<6) { c[i]=ch; ch=fgetc(fp); i++; } c[6]='\0'; if(!strcmp(b,c))//判定字符串b和c是否相等,是返回值0,否返回值1 { return0; } else { return1; } fclose(fp);}voidread()//從文件中讀取學(xué)生信息{ inti; FILE*fp; fp=fopen("e:\\student.txt","r");for(i=0;i<N;i++) { fscanf(fp,"%s%s%s%s%s",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); if(strlen(stu[i].name)==4){ printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); }if(strlen(stu[i].name)==6) {printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note); } } printf("\n"); p

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論