




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《高級語言程序設計》課程設計報告書題目:班級檔案管理系統專業:計算機科學和技術學號:學生姓名:指導老師:完成日期:目錄一、設計內容和設計要求 11.設計內容 12.設計要求 1二、程序設計目標 2三、程序模塊分析 21.系統控制步驟圖 22.部分關鍵函數算法步驟圖 3四、函數功效說明 61.函數說明 62.用戶說明 6五、程序測試 7六、總結 14附錄 15一、設計內容和設計要求1.設計內容對一個有N個學生班級,經過該系統實現對該班級學生基礎信息進行錄入、顯示、修改、刪除、保留等操作管理。2.設計要求(1)本系統采取一個包含N個數據結構體數組,每個學生數據應該包含:學號、姓名、性別、年紀、備注。(2)本系統顯示這么菜單:請選擇系統功效項:a從文件中讀入學生基礎信息b添加新學生基礎信息c學生基礎信息顯示d學生基礎信息保留至文件e學生基礎信息刪除f學生基礎信息修改(要求先輸入修改密碼)g學生基礎信息查詢(1)按學號查詢(2)按姓名查詢(3)按性別查詢(4)按年紀查詢h退出系統(3)實施一個具體功效以后,程序將重新顯示菜單。(4)將學生基礎信息保留到文件中。(5)進入系統之前要先輸入登錄密碼。說明:登錄密碼和修改密碼使用文件保留。二、課程設計目標在平時學習C語言過程中,通常只是在課堂上跟隨老師講解來進行學習,所以在練習上較為缺乏,而課程設計恰恰填補了這點,它不僅是對平時學習一個檢測,同時在做它過程中也對自己學習知識進行了鞏固和提升,為以后學習和工作打下了基礎。三、程序模塊分析1.系統控制步驟圖結束添加學生信息功效保留信息功效退出功效信息查詢功效信息修改功效信息刪除功效讀取學生信息功效開始密碼函數結束添加學生信息功效保留信息功效退出功效信息查詢功效信息修改功效信息刪除功效讀取學生信息功效開始密碼函數2.部分關鍵函數算法步驟圖開始開始開始開始輸入添加學生數打開文件輸入添加學生數打開文件for循環Ffor循環For循環輸出添加學生信息調用輸出添加學生信息調用fscanf函數從文件讀取信息結束結束結束結束圖4.1:read函數圖4.2:input函數開始開始開始開始輸入學號密碼錯誤打開文件輸入學號密碼錯誤打開文件for循環調用strcmp函數密碼函數for循環調用strcmp函數密碼函數查找失敗查找失敗輸入學號for循環調用fprintf函數輸入學號for循環調用fprintf函數輸出信息輸出信息輸入新信息結束輸入新信息結束結束結束圖4.3:Delete函數圖4.4:modi函數開始開始調用fscanf函數調用fscanf函數按性別查詢按年紀查詢按姓名查詢按學號查詢按性別查詢按年紀查詢按姓名查詢按學號查詢圖4.5:search函數輸出信息否是結束for循環調用strcmp函數該學生是否存在
圖4.5:search函數輸出信息否是結束for循環調用strcmp函數該學生是否存在四、函數功效說明1.函數說明main()函數是程序入口有調取各個模塊作用,里面包含一個switch語句,實現選擇功效;read():讀取函數,從文件中讀取學生信息;input():添加函數,學生基礎信息錄入;save():學生信息保留函數;Delete():刪除函數;search():查找函數;modi():信息修改函數;secretcode():密碼驗證函數;2.用戶說明輸入密碼進入系統后,經過a~g選項來進行功效選擇。選項a:調用read函數,將在文件中保留學生信息讀入結構體數組中,然后在屏幕上顯示出來,按enter鍵便重新返回菜單;選項b:調用input函數,輸入需要添加學生人數,顯示出需要添加信息,將信息填寫完成后,按enter鍵重新返回菜單,再經過選項c將新添加學生信息保留到文件中;選項c:調用save函數將新輸入或修改后學生信息保留到文件中,在input函數和modi函數調用以后需要調用此函數,然后按enter鍵重新返回菜單;選項d:經過調用delete函數,輸入需要刪除學生學號,按enter鍵提醒刪除成功,該學生信息已被從文件中刪除,并重新返回菜單;選項e:在調用該函數實現學生信息修改功效時,需要輸入修改密碼,當密碼錯誤時,提醒密碼錯誤,此時重新輸入密碼。密碼正確以后,輸入需要修改信息學生學號,輸出該學生信息,確定后輸入新學生信息,按enter鍵重新返回菜單,此時需要經過選項c將信息保留到文件中;選項f:經過調用search函數,在選擇該項后,會出現一個子菜單,根據需求能夠分別經過學號、姓名、性別和年紀來查詢學生信息,按enter鍵顯示查詢信息并重新返回菜單。五、程序測試輸入登陸密碼123456進入系統圖5.1輸入a從文件中讀入學生信息圖5.2輸入b添加學生基礎信息圖5.3圖5.4輸入c將信息保留至文件圖5.5輸入d刪除學生信息圖5.6信息刪除成功圖5.7再次從文件輸入信息時需要刪除信息已被刪除圖5.8輸入e進行學生信息修改圖5.9圖5.10輸入c將信息保留到文件中圖5.11輸入f學生信息查詢圖5.12圖5.13六、總結這次課程設計給了我很大體會,我能獨立完成這項任務,是對平時學習和練習一個肯定,同時也提升了自己信心。在完成它過程中當然會碰到很多困難,首先是結構體定義問題,因為剛開始對程序不熟悉,在定義結構體內元素數組時出現了錯誤,以后經過一次次檢測將數組定義到了一個適宜大小。其次在input函數中,輸入完新學生信息保留至文件中時,對文件原有信息進行了覆蓋,所以為了避免這種情況,將for循環中i從N-n開始,經過測試這種方法是有效。最終是刪除函數,因為開始定義年紀是整型變量,在對文件中結構體數據進行刪除時,在年紀位置會出現數字0,從而使從文件中讀取數據時出現亂碼,于是便將年紀定義成字符型數組,利用strcpy函數將結構體數組下一位元素將前一位元素進行覆蓋,從而實現刪除功效。即使較為成功完成了課程設計,但因為知識和時間不足,系統仍然存在缺點,我認為此系統還能經過鏈表來進行優化,鏈表好處是能夠經過指針愈加好實現查找、修改和刪除功效,所以假如有時間便會經過鏈表來時、使這個系統愈加含有實用性。附錄源程序清單#include"stdafx.h"#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#defineN4structstudent//定義一個包含學生信息結構體數組{ charno[10];//學號 charname[8];//姓名 charsex[5];//性別 charage[5];//年紀 charnote[5];//備注};structstudentstu[N];//定義全局變量voidmenu()//菜單函數{ printf("\n"); printf("****************\n"); printf("**\n"); printf("*a.從文件中讀入學生基礎信息*\n"); printf("*b.添加新學生基礎信息*\n"); printf("*c.學生基礎信息保留至文件*\n"); printf("*d.學生基礎信息刪除*\n"); printf("*e.學生基礎信息修改*\n"); printf("*f.學生基礎信息查詢*\n"); printf("*g.退出系統*\n"); printf("**\n"); printf("****************\n"); printf("\n");printf("請輸入選項:(a~g)\n");}voidinput()//學生基礎信息錄入{ inti; intn; printf("請輸入添加學生數:"); scanf("%d",&n); for(i=N-n;i<N;i++) {printf("請輸入學生基礎信息:\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("請檢驗信息是否輸入正確!\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()//學生信息保留{FILE*fp; inti;fp=fopen("e:\\student.txt","w"); if(fp==NULL) { printf("文件不存在!\n"); exit(0); } for(i=0;i<N;i++)//在此處判定姓名所占長度調整學生信息存入文件中格式 { 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()//刪除函數;{FILE*fp;fp=fopen("e:\\student.txt","w");charnumber[10];intf;boolflag=false;printf("刪除學生信息:\n");printf("請輸入學號:\n");scanf("%s",number);for(inti=0;i<N;i++){if(!strcmp(number,stu[i].no)){ for(f=i;f<N;f++)//調用strcpy函數令數組中下一位元素將上一位覆蓋從而實現刪除功效 { 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("該學生不存在!:\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()//查找函數{ 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;//定義一個bool類型進行判定intm; inti; printf("1按學號查詢\n"); printf("2按姓名查詢\n"); printf("3按性別查詢\n"); printf("4按年紀查詢\n"); printf("請輸入選項:"); printf("\n"); scanf("%d",&m); switch(m) { case1: charnum[10]; printf("請輸入學號:\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("該學生不存在.\n"); } break; case2: printf("請輸入姓名:\n"); charna[10];//定義一個姓名數組 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("該學生不存在.\n"); } break; case3: charch[5]; printf("請輸入性別:\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該學生不存在.\n"); } break; case4: charnum_age[5]; printf("請輸入年紀:\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("該學生不存在.\n"); } break; default: break; } }voidmodi()//信息修改函數{ FILE*fp;//定義修改密碼文件指針 FILE*fp1;//定義學生信息文件指針 chara[7]; charb[7]; charc[10]; charch; inti=0; intf; booltemp=false;fp1=fopen("e:\\student.txt","r");for(f=0;f<N;f++)//從文件中將信息讀到結構體中 { 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("請輸入修改密碼:\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("密碼錯誤!請重新輸入密碼:\n"); scanf("%s",b); } } printf("請輸入需要修改信息學生學號:\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("請輸入新信息:\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("該學生不存在!\n"); }}intsecretcode(charb[6])//密碼驗證函數{ 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()//從文件中讀取學生信息{ 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國乳業市場盈利預測與投資咨詢研究報告
- 2025-2030年中國丙酸工業市場發展格局及前景規劃研究報告
- 2025年中國日本有桿錨市場調查研究報告
- 2025至2031年中國精密圓口虎鉗行業投資前景及策略咨詢研究報告
- 2025年中國無泡地毯水市場調查研究報告
- 2025屆河北省金太陽-邢襄聯盟高三上學期開學考(25-05C)-地理試卷
- 2025年中國數控車床刀具市場調查研究報告
- 新疆哈密石油高級中學2025屆招生全國統一考試仿真卷(四)-高考物理試題仿真試題含解析
- 2025-2030年中國專科門診部市市場運行態勢分析及投資機會預測研究報告
- 肇慶市實驗中學高中生物三:種群的特征第課時導學案
- 人教部編版語文七年級下冊第四單元作業創新設計
- 2024年全國高中數學聯賽試題(及答案)
- 裂變徑跡課件
- (完整word版)電梯曳引系統設計-畢業設計
- 2023建筑施工承插型套扣式鋼管腳手架安全技術規程
- 組織供應,運輸,售后服務方案
- (完整版)各檔口單品菜品毛利率核算表
- 2023年云南省昆明市中考作文真題解析及欣賞:堅持的力量
- SMC電磁閥的選型手冊
- 2023年江蘇泰州市第四人民醫院招考聘用高層次人才11人模擬備考試卷(共1000題含答案解析)
- 七年級音樂上冊 《青少年管弦樂隊指南》教學課件
評論
0/150
提交評論