課程設(shè)計(jì)班級(jí)檔案管理系統(tǒng)_第1頁(yè)
課程設(shè)計(jì)班級(jí)檔案管理系統(tǒng)_第2頁(yè)
課程設(shè)計(jì)班級(jí)檔案管理系統(tǒng)_第3頁(yè)
課程設(shè)計(jì)班級(jí)檔案管理系統(tǒng)_第4頁(yè)
課程設(shè)計(jì)班級(jí)檔案管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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、高級(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ì)目的2三、程序模塊分析21.系統(tǒng)控制流程圖22.部分主要函數(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í),通過(guò)該系統(tǒng)實(shí)現(xiàn)對(duì)該班級(jí)學(xué)生的基本信息進(jìn)行錄入、顯示、修改、刪除、保存等操作的管理。2.設(shè)計(jì)要求(1)本系統(tǒng)采用一個(gè)包含N個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)學(xué)生的數(shù)據(jù)應(yīng)當(dāng)包括:學(xué)號(hào)、姓名、性

2、別、年齡、備注。(2)本系統(tǒng)顯示這樣的菜單:請(qǐng)選擇系統(tǒng)功能項(xiàng):a 從文件中讀入學(xué)生基本信息b 添加新學(xué)生的基本信息c 學(xué)生基本信息顯示d 學(xué)生基本信息保存至文件e 學(xué)生基本信息刪除f 學(xué)生基本信息修改(要求先輸入修改密碼)g 學(xué)生基本信息查詢(1)按學(xué)號(hào)查詢(2)按姓名查詢(3)按性別查詢(4)按年齡查詢h 退出系統(tǒng)(3)執(zhí)行一個(gè)具體的功能之后,程序?qū)⒅匦嘛@示菜單。(4)將學(xué)生基本信息保存到文件中。(5)進(jìn)入系統(tǒng)之前要先輸入登錄密碼。說(shuō)明:登錄密碼和修改密碼使用文件保存。二、課程設(shè)計(jì)目的 在平時(shí)學(xué)習(xí)C語(yǔ)言的過(guò)程中,通常只是在課堂上跟隨老師的講解來(lái)進(jìn)行學(xué)習(xí),因此在練習(xí)上較為缺乏,而課程設(shè)計(jì)恰恰彌

3、補(bǔ)了這點(diǎn),它不僅是對(duì)平時(shí)學(xué)習(xí)的一種檢測(cè),同時(shí)在做它的過(guò)程中也對(duì)自己學(xué)習(xí)的知識(shí)進(jìn)行了鞏固和提高,為以后的學(xué)習(xí)和工作打下了基礎(chǔ)。三、程序模塊分析1.系統(tǒng)控制流程圖結(jié)束添加學(xué)生信息功能保存信息功能退出功能信息查詢功能信息修改功能信息刪除功能讀取學(xué)生信息功能開(kāi)始密碼函數(shù)2.部分主要函數(shù)算法流程圖開(kāi)始開(kāi)始輸入添加學(xué)生數(shù)打開(kāi)文件for循環(huán)For循環(huán)輸出添加學(xué)生信息調(diào)用fscanf函數(shù)從文件讀取信息結(jié)束結(jié)束 圖4.1 :read函數(shù) 圖4.2 :input函數(shù)開(kāi)始開(kāi)始輸入學(xué)號(hào)密碼錯(cuò)誤打開(kāi)文件for循環(huán)調(diào)用strcmp函數(shù)密碼函數(shù)查找失敗輸入學(xué)號(hào)for循環(huán) 調(diào)用fprintf函數(shù)輸出信息輸入新信息結(jié)束結(jié)束圖4

4、.3 :Delete函數(shù) 圖4.4 :modi函數(shù)開(kāi)始調(diào)用fscanf函數(shù)按性別查詢按年齡查詢按姓名查詢按學(xué)號(hào)查詢圖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é)生基本信息的錄入;save():學(xué)生信息保存函數(shù);Delete():刪除函數(shù);search():查找函數(shù);modi():信息修改函數(shù);secretcode():密碼驗(yàn)證函數(shù);2.用戶說(shuō)明輸入密碼進(jìn)入

5、系統(tǒng)后,通過(guò)ag選項(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鍵重新返回菜單,再通過(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:通過(guò)調(diào)用delete函數(shù),輸入需要?jiǎng)h除的學(xué)生的學(xué)號(hào),按enter鍵提示刪除成功,該學(xué)生信息已被從文件中刪除,并重新

6、返回菜單; 選項(xiàng)e:在調(diào)用該函數(shù)實(shí)現(xiàn)學(xué)生信息修改的功能時(shí),需要輸入修改密碼,當(dāng)密碼錯(cuò)誤時(shí),提示密碼錯(cuò)誤,此時(shí)重新輸入密碼。密碼正確之后,輸入需要修改信息的學(xué)生的學(xué)號(hào),輸出該學(xué)生信息,確認(rèn)后輸入新的學(xué)生信息,按enter鍵重新返回菜單,此時(shí)需要通過(guò)選項(xiàng)c將信息保存到文件中; 選項(xiàng)f:通過(guò)調(diào)用search函數(shù),在選擇該項(xiàng)后,會(huì)出現(xiàn)一個(gè)子菜單,按照需求可以分別通過(guò)學(xué)號(hào)、姓名、性別和年齡來(lái)查詢學(xué)生信息,按enter鍵顯示查詢信息并重新返回菜單。五、程序測(cè)試輸入登陸密碼123456進(jìn)入系統(tǒng) 圖 5.1輸入a從文件中讀入學(xué)生信息 圖5.2輸入b添加學(xué)生的基本信息 圖5.3 圖5.4 輸入c將信息保存至文件

7、 圖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í)的一種肯定,同時(shí)也提高了自己的信心。 在完成它的過(guò)程中當(dāng)然會(huì)遇到很多的困難,首先是結(jié)構(gòu)體的定義問(wèn)題,由于剛開(kāi)始對(duì)程序的不熟悉,在定義結(jié)構(gòu)體內(nèi)元素?cái)?shù)組時(shí)出現(xiàn)了錯(cuò)誤,后來(lái)經(jīng)過(guò)一次次的檢測(cè)將數(shù)組定義到了一個(gè)合適的大小。其次在input函數(shù)中,輸入完新學(xué)生信息保存至文件中時(shí),對(duì)文件原有

8、信息進(jìn)行了覆蓋,因此為了避免這種情況,將for循環(huán)中的i從N-n開(kāi)始,經(jīng)過(guò)測(cè)試這種方法是有效的。最后是刪除函數(shù),由于開(kāi)始定義的年齡是整型變量,在對(duì)文件中的結(jié)構(gòu)體數(shù)據(jù)進(jìn)行刪除時(shí),在年齡的位置會(huì)出現(xiàn)數(shù)字0,從而使從文件中讀取數(shù)據(jù)時(shí)出現(xiàn)亂碼,于是便將年齡定義成字符型數(shù)組,利用strcpy函數(shù)將結(jié)構(gòu)體數(shù)組的下一位元素將前一位元素進(jìn)行覆蓋,從而實(shí)現(xiàn)刪除功能。 雖然較為成功的完成了課程設(shè)計(jì),但由于知識(shí)和時(shí)間的局限性,系統(tǒng)仍然存在缺陷,我認(rèn)為此系統(tǒng)還能通過(guò)鏈表來(lái)進(jìn)行優(yōu)化,鏈表的好處是可以通過(guò)指針更好的實(shí)現(xiàn)查找、修改和刪除功能,因此如果有時(shí)間便會(huì)通過(guò)鏈表來(lái)時(shí)、使這個(gè)系統(tǒng)更加具有實(shí)用性。附錄源程序清單#incl

9、ude"stdafx.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#define N 4struct student/定義一個(gè)包含學(xué)生信息的結(jié)構(gòu)體數(shù)組char no10;/學(xué)號(hào)char name8;/姓名char sex5;/性別char age5;/年齡char note5;/備注;struct student stuN;/定義全局變量void menu()/菜單函數(shù) printf(&q

10、uot;n"); printf(" * * * * * * * * * * * * * * * * n");printf(" * *n");printf(" * a.從文件中讀入學(xué)生基本信息 *n");printf(" * b.添加新學(xué)生的基本信息 *n");printf(" * c.學(xué)生基本信息保存至文件 *n");printf(" * d.學(xué)生基本信息刪除 *n");printf(" * e.學(xué)生基本信息修改 *n");printf(&quo

11、t; * f.學(xué)生基本信息查詢 *n");printf(" * g.退出系統(tǒng) *n");printf(" * *n");printf(" * * * * * * * * * * * * * * * * n");printf("n"); printf("請(qǐng)輸入選項(xiàng):(a g)n");void input()/學(xué)生基本信息的錄入int i;int n;printf("請(qǐng)輸入添加學(xué)生數(shù):");scanf("%d",&n);for(i=N-n;i

12、<N;i+) printf("請(qǐng)輸入學(xué)生的基本信息:n");printf("no:n"); scanf("%s",stui.no);printf("name:n");scanf("%s",);printf("sex:n");scanf("%s",stui.sex);printf("age:n");scanf("%s",stui.age);printf("note:n");s

13、canf("%s",stui.note);printf("n");printf("請(qǐng)檢查信息是否輸入正確!n");printf("n");for(i=N-n;i<N;i+)printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note);void save() /學(xué)生信息保存 FILE * fp;int i; fp= fopen("e:student.txt","w");

14、if (fp = NULL) printf("文件不存在!n"); exit(0); for(i=0;i<N;i+)/在此處判斷姓名所占長(zhǎng)度調(diào)整學(xué)生信息存入文件中的格式if(strlen()=4) fprintf(fp,"%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); if(strlen()=6) fprintf(fp,"%s %s %s %s %sn",stui.no,,stui.sex,

15、stui.age,stui.note);fclose(fp); fflush(fp);printf("保存成功!n");void Delete()/刪除函數(shù); FILE*fp; fp=fopen("e:student.txt","w"); char number10; int f; bool flag=false; printf("刪除學(xué)生信息:n"); printf("請(qǐng)輸入學(xué)號(hào):n"); scanf("%s",number); for (int i =0;i<N;i

16、+) if (!strcmp(number,stui.no) for(f=i;f<N;f+)/調(diào)用strcpy函數(shù)令數(shù)組中的下一位元素將上一位覆蓋從而實(shí)現(xiàn)刪除功能 strcpy(,stuf+1.name); strcpy(stuf.note,stuf+1.note); strcpy(stuf.no,stuf+1.no); strcpy(stuf.sex,stuf+1.sex); strcpy(stuf.age,stuf+1.age); flag=true; if(!flag) printf("該學(xué)生不存在!:n"); Delete(); for(i=

17、0;i<N;i+) fprintf(fp,"%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); printf("刪除成功!n"); fclose(fp);void search()/查找函數(shù) int f;FILE*fp;fp=fopen("e:student.txt","rb"); for(f=0;f<N;f+)fscanf(fp,"%s%s%s%s%s",stuf.no,,stuf.s

18、ex,stuf.age,stuf.note);bool flag=false;/定義一個(gè)bool類型進(jìn)行判斷 int m;int i;printf(" 1 按學(xué)號(hào)查詢n");printf(" 2 按姓名查詢n");printf(" 3 按性別查詢n");printf(" 4 按年齡查詢n");printf("請(qǐng)輸入選項(xiàng):");printf("n");scanf("%d",&m);switch(m)case 1: char num10; printf

19、("請(qǐng)輸入學(xué)號(hào):n"); scanf("%s",num); for ( i=0;i<N;i+) if (!strcmp(num,stui.no) if(strlen()=4) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); if(strlen()=6) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,

20、stui.note); flag=true; if(!flag) printf("該學(xué)生不存在.n"); break; case 2: printf("請(qǐng)輸入姓名:n"); char na10;/定義一個(gè)姓名的數(shù)組 scanf("%s",na); for ( i =0;i<N;i+) if (!strcmp(na,) if(strlen()=4) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,st

21、ui.note); if(strlen()=6) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); flag = true; if (!flag) printf("該學(xué)生不存在.n"); break; case 3: char ch5; printf("請(qǐng)輸入性別:n"); scanf("%s",ch); for(i=0;i<N;i+) if (!strcmp(ch,stui.sex) if(s

22、trlen()=4) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); if(strlen()=6) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); flag = true; if (!flag) printf("t該學(xué)生不存在.n"); break; case 4: char num_age5; pri

23、ntf("請(qǐng)輸入年齡:n"); scanf("%s",&num_age); for ( i =0;i<N;i+) if (!strcmp(num_age,stui.age) if(strlen()=4) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); if(strlen()=6) printf("%s %s %s %s %sn",stui.no,,s

24、tui.sex, stui.age,stui.note); flag = true; if (!flag) printf("該學(xué)生不存在.n"); break; default:break;void modi()/信息修改函數(shù)FILE*fp;/定義修改密碼文件的指針FILE*fp1;/定義學(xué)生信息文件的指針char a7;char b7;char c10;char ch;int i=0;int f;bool temp=false; fp1=fopen("e:student.txt","r"); for(f=0;f<N;f+)/從

25、文件中將信息讀到結(jié)構(gòu)體中fscanf(fp1,"%s%s%s%s%s",stuf.no,,stuf.sex,stuf.age,stuf.note);fclose(fp1);printf("請(qǐng)輸入修改密碼:n");scanf("%s",b);if(fp=fopen("e:1.txt","r")=NULL)printf("打開(kāi)文件夾失??!");exit(0);ch=fgetc(fp);while(ch!=EOF&&i<6) ai = ch;

26、 ch=fgetc(fp); i+; a6 = '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,stuf.no) printf("%s %s %s %s %sn",stuf.no,stuf.

27、name,stuf.sex,stuf.age,stuf.note); printf("n"); printf("請(qǐng)輸入新的信息:n"); printf("no:n"); scanf("%s",stuf.no); printf("name:n"); scanf("%s",); printf("sex:n"); scanf("%s",stuf.sex); printf("age:n"); scanf(&

28、quot;%s",stuf.age); printf("note:n"); scanf("%s",stuf.note); temp=true; break; if(!temp)printf("該學(xué)生不存在!n"); int secretcode(char b6)/密碼驗(yàn)證函數(shù)FILE*fp;char c7;int i=0;char ch; if (fp=fopen("e:2.txt","r")=NULL) printf("打開(kāi)文件失敗!n");exit(0); ch

29、=fgetc(fp);while (ch!=EOF&&i<6) ci = ch;ch=fgetc(fp); i+; c6 = '0' if (!strcmp(b,c)/判斷字符串b和c是否相等,是返回值0,否返回值1 return 0; else return 1; fclose(fp);void read()/從文件中讀取學(xué)生信息 int i;FILE*fp;fp=fopen("e:student.txt","r"); for(i=0;i<N;i+)fscanf(fp,"%s%s%s%s%s&quo

30、t;,stui.no,,stui.sex,stui.age,stui.note); if(strlen()=4) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); if(strlen()=6) printf("%s %s %s %s %sn",stui.no,,stui.sex, stui.age,stui.note); printf("n");printf("讀取成功!n"); fclose(fp)

溫馨提示

  • 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)論