C語言學籍管理系統(tǒng)內含源代碼_第1頁
C語言學籍管理系統(tǒng)內含源代碼_第2頁
C語言學籍管理系統(tǒng)內含源代碼_第3頁
C語言學籍管理系統(tǒng)內含源代碼_第4頁
C語言學籍管理系統(tǒng)內含源代碼_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

-.z.學籍管理系統(tǒng)一、系統(tǒng)簡介設計一個基于結構體數(shù)組的學生學籍管理系統(tǒng),能實現(xiàn)對學生學籍信息進行錄入,修改,刪除,查詢和輸出等基本操作。需求分析學籍管理系統(tǒng)應該實現(xiàn)以下功能:能錄入學生的基本信息,包括**,,專業(yè),年級,性別和出生日期信息,保存到結構體數(shù)組中。能根據(jù)輸入的**查詢學生,進行信息的修改。能根據(jù)輸入的**從結構體數(shù)組中刪除學生的記錄。實現(xiàn)查詢功能,能根據(jù)輸入的**或年級在屏幕上顯示相應的學生信息。能在屏幕上以列表的方式輸出所有學生的信息。概要設計系統(tǒng)功能根據(jù)項目的開發(fā)要求,本系統(tǒng)劃分成六個主要功能模塊:錄入學生信息模塊、修改學生信息模塊、刪除學生信息模塊、查詢學生信息模塊、輸出模塊和推出模塊。系統(tǒng)功能機構圖如下:學生檔案管理系統(tǒng)學生檔案管理系統(tǒng)刪除學生信息修改學生信息查詢學生信息系統(tǒng)輸出學生信息退出系統(tǒng)錄入學生信息刪除學生信息修改學生信息查詢學生信息系統(tǒng)輸出學生信息退出系統(tǒng)錄入學生信息按班級查詢按**查詢按班級查詢按**查詢重要數(shù)據(jù)的數(shù)據(jù)結構設計學生學籍的記錄項用結構體Stumessage表示,包括6個屬性,stuno,name、spec、grade、se*、birthday分別代表學生的**、專業(yè)、年級、性別和出生日期,其中birthday類型為自定義的結構體類型Date.Structstumessage{Charstuno[11]://**Charname[9]://Charspec[2]://專業(yè)Chargrade://年級Charse*://性別Stuctdatebirthday://出生日期};日期類型date包括三個屬性,分別代表年、月、日。Structdate{intyear://年Intmonth://月Intday://日};函數(shù)設計學籍管理系統(tǒng)程序采用了結構化程序設計的思想,由1個.h頭文件和3個C源文件組成。程序中除了主函數(shù)外,共設計了以下14個函數(shù),分別包含在3個.c源文件中。以下是這些函數(shù)原型及功能設計。voidsysinfo(void)函數(shù)功能:在屏幕上輸入系統(tǒng)及信息并等待用戶響應。Voidmenuofmain(structstumessagestu[]);函數(shù)功能:在屏幕上顯示主菜單,接收用戶選擇并響應用戶相應操作。Voidappend(structstumessagestu[]);函數(shù)功能:錄入一條學生記錄數(shù)組的末尾。voidmodify(structstumessagestu[])函數(shù)功能:通過輸入**查詢學生相關信息,如果存在在屏幕上輸出相應學生記錄并通過重新輸入學生信息的方法修改該學生的記錄,否則輸出沒有找到相關記錄。;voidDelet(structstuMessagestu[])函數(shù)功能:通過輸入**查詢學生的相應記錄信息,如果存在在屏幕上輸出相應學生記錄,用戶確認刪除后用DelList()否則輸出沒有找到相關記錄。VoidmenuOfsear(structstumessagestu[]);函數(shù)功能:在屏幕上顯示查詢了主菜單,接受用戶選擇并響應用戶操作。voidlistall(structstumessagestu[]);函數(shù)功能:在屏幕上以列表的方式輸出學生所有信息。調用printhead()輸出表頭,在調用listone()函數(shù)注意輸出個條記錄。voidquit(void);函數(shù)功能:退出菜單系統(tǒng),并調用e*it(0)系統(tǒng)函數(shù)結束程序運行。voidstearnum(structstumessagestu[]);函數(shù)功能:通過輸入**調用numofsear()函數(shù)查詢學生的相應的記錄信息,如果存在調用printhead()函數(shù)和listone()函數(shù)在屏幕上輸出相應學生記錄,否則輸出沒有找到相關記錄。voidsteargrade(stuctstumessagestu[]);函數(shù)功能:通過輸入年級查詢學生的相關記錄信息,如果存在在屏幕以列表方式輸出相應學生記錄,并輸出統(tǒng)計滿足條件的學生個數(shù),否則輸出沒有找到相關記錄。intnumofsear(structstumessagestu[].charstunumber[]);函數(shù)功能:根據(jù)接收到的學生**,在相應記錄數(shù)組中進行查詢,如果存在相應記錄,返加相應的數(shù)組下標,否則返回-1.voidprinthead(void)函數(shù)功能:在屏幕上顯示輸出列表的表頭。voidlistone(structstumessagelist);函數(shù)功能:在屏幕上以行的形式顯示輸出一個學生的相關信息。intdellist(structstumessagestu[],inti):函數(shù)功能:如果數(shù)組中存在下標為i的記錄,刪除該記錄并返回1,否則返回0.小組成員分工組員1Main():systeminfo();menuofmain();quit();組員2Printhead();listone();listall(0;apend();組員3Modify();delte();dellist(0;menuofstear();seranum();seargrade();numofsear();詳細設計系統(tǒng)主函數(shù)main()設計輸出系統(tǒng)及信息Sysinfo()輸出系統(tǒng)及信息Sysinfo()開始顯示用戶主菜單并響應顯示用戶主菜單并響應用戶操作Menuofmain()結束結束主菜單模塊函數(shù)menuofmain()設計清屏清屏清屏清屏開始開始Choose!=0choose退出系統(tǒng)輸出學生信息修改學生信息刪除學生信息查詢學生信息錄入學生信息非法操作Choose!=0choose退出系統(tǒng)輸出學生信息修改學生信息刪除學生信息查詢學生信息錄入學生信息非法操作清屏清屏顯示主菜單顯示主菜單接收用戶選擇接收用戶選擇1234560YN錄入學生信息功能模塊函數(shù)Append()設計清屏清屏返回Con=='Y'或con=='Y'接受用戶選擇繼續(xù)錄入(Y/N)Length++錄入一條記錄返回Con=='Y'或con=='Y'接受用戶選擇繼續(xù)錄入(Y/N)Length++錄入一條記錄YN4、修改學生信息功能模塊函數(shù)modify()設計5、刪除學生信息功能模塊函數(shù)delete()設計繼續(xù)刪除(Y/N)Length--

--記錄存在刪除()Y/N刪除成功輸出第i條記錄輸出表頭沒有找到相關記錄查詢該學生記錄,用i指向它接收要刪除的**清屏繼續(xù)刪除(Y/N)Length--

--記錄存在刪除()Y/N刪除成功輸出第i條記錄輸出表頭沒有找到相關記錄查詢該學生記錄,用i指向它接收要刪除的**清屏YNNYY返回N返回查詢菜單模塊函數(shù)menuofsear()設計Choose!=0按年級查詢非法操作返回主菜單按**查詢choose接收用戶的選擇

--顯示查詢菜單

--清屏

--Choose!=0按年級查詢非法操作返回主菜單按**查詢choose接收用戶的選擇

--顯示查詢菜單

--清屏

--120其他YN按**查詢功能模塊函數(shù)searnum()設計I<length且不等于**清屏

--接收查詢**--i=0i++

--沒有找到相關記錄

--Choose!=0輸入表頭

--輸出第i條記錄

--按任意鍵繼續(xù)

--Getch()

--返回I<length且不等于**清屏

--接收查詢**--i=0i++

--沒有找到相關記錄

--Choose!=0輸入表頭

--輸出第i條記錄

--按任意鍵繼續(xù)

--Getch()

--返回NYYN按年級查詢功能模塊函數(shù)steargrade()設計Getch()

--輸出表頭

--接收查詢年級

--清屏

--i=0,count=0

--I<length

等于年級輸入第i條記錄

--Count++

--i++

--Choose!=0共找到n條記錄

--沒有找到相關記錄

--按任意鍵繼續(xù)

--Getch()

--輸出表頭

--接收查詢年級

--清屏

--i=0,count=0

--I<length

等于年級輸入第i條記錄

--Count++

--i++

--Choose!=0共找到n條記錄

--沒有找到相關記錄

--按任意鍵繼續(xù)

--輸出學生信息功能模塊函數(shù)ListALL()設計;清屏

--清屏

--輸入表頭

--輸入表頭

--i=0i=0I<lengthI<length輸出第i條記錄

--輸出第i條記錄

--i++

--i++

--按任意鍵繼續(xù)

--按任意鍵繼續(xù)

--Getch()

--Getch()

--調試分析本系統(tǒng)在VC6下編譯調試通過,可順利運行,各項功能達到設計要求。本系統(tǒng)程序由一個.h頭文件和三個.C源文件構成。系統(tǒng)調試主要在vc6下進行,采用分模塊的方法進行編譯,即完成一個函數(shù)功能模塊就編譯一個功能模塊,最后再進行整體編譯并產(chǎn)生可執(zhí)行文件student.e*e。在調試過程中,主要碰到了以下問題:在清屏函數(shù)在Tc中使用的clrsc()函數(shù),但在vc6中沒有該函數(shù)也沒有相應的函數(shù)。查資料,發(fā)現(xiàn)在vc中可使用system()函數(shù)調用系統(tǒng)實現(xiàn)。在使用c語言系統(tǒng)函數(shù)進行數(shù)據(jù)輸入的時候,發(fā)現(xiàn)使用getchar(0和gets(0函數(shù)輸入字符和字符串的時候,系統(tǒng)經(jīng)常跳過相應的輸入語句,無法輸入數(shù)據(jù)。查資料,是c系統(tǒng)的輸入處理,緩存問題,解決方法是在進行字符和字符串輸入的時候,先使用fflush(stdin)函數(shù)清除緩存,既可正常輸入字符和字符串。用戶手冊本系統(tǒng)是win32控制臺程序,可在window和dos環(huán)境下運行,執(zhí)行文件名稱:student.e*e。運行程序后,首先顯示系統(tǒng)消息和信息,用戶按任意鍵后進行主要功能菜單,在主功能菜單中輸入相應的數(shù)字可執(zhí)行相應的程序功能,包括錄入學生信息、修改學生信息,刪除學生信息和輸入所有學生信息,輸入4可進行查詢子菜單,可進行按**查詢和按年級查詢學生信息。在主功能菜單案6可結束本系統(tǒng)的運行并自動關閉運行窗口。附錄源程序文件名清單:Alist.h//公用的常量和類型Main.cList.cEdit.c源代碼如下:*include<stdio.h>*include<stdlib.h>*include<string.h>structdate{ intyear; intmonth; intday;};structStuMessage{ charstuNo[11]; charname[10]; charspec[21]; intgreade; charse*[10];struct datebirthday;};intlength=0;structStuMessageStu[100];intmain(){ charc;intmenuofmain();intAppend(structStuMessageStu[100]);intModify(structStuMessageStu[100]);intDelete(structStuMessageStu[100]);voidMenuofsear(structStuMessageStu[100]);voidListall(structStuMessageStu[100]);intlistone(structStuMessageStu[100],inti);system("color5a");voidSysInfo(void);{printf("\n\n\n\t\t\t\t農(nóng)業(yè)大學學籍管理系統(tǒng)\n");printf("\n\n\n版本信息:\n\n");printf("\n\tc-freevision5.0\n\n");printf("\n\t2012--05--28\t\t");printf("\n\n\t\t\t\t\t\t\t班級:軟件1115班\n\n");printf("\t\t\t\t\t\t\t:朱利斌\n\n");printf("\t\t\t\t\t\t\t指導教師:鄧泓\n\n");printf("\n\n\t\t\t\tenter進入學籍管理系統(tǒng).........\n");}c=getchar();menuofmain();}intmenuofmain(){ intnum; system("cls"); system("colorfc"); intAppend(structStuMessageStu[100]);intModify(structStuMessageStu[100]);intDelete(structStuMessageStu[100]);voidMenuofsear(structStuMessageStu[100]);voidListall(structStuMessageStu[100]);intlistone(structStuMessageStu[100],inti);printf("\n\n\t\t\t農(nóng)業(yè)大學學生檔案管理系統(tǒng)\n\n\n");printf("\t\t\tpleasemakeachoice\n\n\n");printf("\t\t\t錄入學生信息,請選擇1\n");printf("\t\t\t修改學生信息,請選擇2\n");printf("\t\t\t刪除學生信息,請選擇3\n");printf("\t\t\t查詢學生信息,請選擇4\n");printf("\t\t\t輸出學生信息,請選擇5\n");printf("\t\t\t退出系統(tǒng),請選擇6\n");printf("\n\t\t\t\t\t\t\t\t\t\t\t\t\n");printf("\n\t\t\n");printf("請輸入編號做出選擇:\n");scanf("%d",&num);switch(num){case1:Append(Stu);break;case2:Modify(Stu);break;case3:Delete(Stu);break;case4:Menuofsear(Stu);break;case5:Listall(Stu);break;case6:e*it(0);break;default:printf("非法操作\n");break;}}intAppend(structStuMessageStu[100]){ system("cls"); charc,ch; fflush(stdin); printf("輸入第%d個學生的信息。\n",length+1); printf("第%d個學生的信息\n",length+1); printf("pleaseinputstuNo\n"); scanf("%s",Stu[0].stuNo); printf("pleaseinputname\n"); scanf("%s",Stu[0].name); printf("pleaseinputspec\n"); scanf("%s",Stu[0].spec); printf("pleaseinputgreade\n"); scanf("%d",&Stu[0].greade); printf("pleaseinputse*\n"); scanf("%s",Stu[0].se*); printf("pleaseinputbirthday\n"); scanf("%d%d%d",&Stu[0].birthday.year,&Stu[0].birthday.month,&Stu[0].birthday.day); length++; while(1) { c=getchar(); printf("輸入y或Y繼續(xù)輸入學生記錄\nn或N結束輸入返回主菜單\n"); ch=getchar(); if(ch=='y'||ch=='Y') { system("cls"); fflush(stdin); printf("第%d個學生的信息\n",length+1); printf("pleaseinputstuNo\n"); scanf("%s",Stu[length].stuNo); printf("pleaseinputname\n"); scanf("%s",Stu[length].name); printf("pleaseinputspec\n"); scanf("%s",Stu[length].spec); printf("pleaseinputgreade\n"); scanf("%d",&Stu[length].greade); printf("pleaseinputse*\n"); scanf("%s",Stu[length].se*); printf("pleaseinputbirthday\n"); scanf("%d%d%d",&Stu[length].birthday.year,&Stu[length].birthday.month,&Stu[length].birthday.day); length++; } else { if(ch=='n'||ch=='N') { menuofmain(); } } }}intModify(structStuMessageStu[]){ system("cls"); intlistone(structStuMessageStu[],inti); charch[100],c; inti,j=-1; printf("輸入**進行修改.\n"); gets(ch); for(i=0;i<length;i++) { if((strcmp(ch,Stu[i].stuNo))==0) {j=i; listone(Stu,i);} } if(j==-1) { printf("沒有找到相關記錄。\n"); Modify(Stu); } printf("修改Y,y/N,n.\n"); fflush(stdin); c=getchar(); if(c=='Y'||c=='y') { fflush(stdin); printf("pleaseinputstuNo\n"); scanf("%s",Stu[j].stuNo); printf("pleaseinputname\n"); scanf("%s",Stu[j].name); printf("pleaseinputspec\n"); scanf("%s",Stu[j].spec); printf("pleaseinputgreade\n"); scanf("%d",&Stu[j].greade); printf("pleaseinputse*\n"); scanf("%s",Stu[j].se*); printf("pleaseinputbirthday\n"); scanf("%d%d%d",&Stu[j].birthday.year,&Stu[j].birthday.month,&Stu[j].birthday.day); } else { if(c=='N'||c=='n') menuofmain(); } printf("是否繼續(xù)修改是輸入y||Y否輸入n||N。"); c=getchar(); if(c=='y'||c=='Y') { Modify(Stu); } else { if(c=='n'||c=='N') menuofmain(); }}intDelete(structStuMessageStu[]){ system("cls"); intlistone(structStuMessageStu[],inti); charch[100],c; inti,j=-1; printf("輸入**進行刪除.\n"); fflush(stdin); gets(ch); for(i=0;i<length;i++) { if((strcmp(ch,Stu[i].stuNo))==0) {j=i; listone(Stu,i);} } if(j==-1) { printf("沒有找到相關記錄。\n"); Delete(Stu); } printf("刪除是Y||y否N||n\n"); fflush(stdin); c=getchar(); if(c=='Y'||c=='y') { for(j;j<length;j++) { Stu[j]=Stu[j+1]; } length--; } else { menuofmain(); } printf("繼續(xù)刪除是y||Y否n||N"); fflush(stdin); c=getchar(); if(c=='y'||c=='Y') { Delete(Stu); } else { if(c=='n'||c=='N') menuofmain(); }}voidMenuofsear(structStuMessageStu[]){ system("cls");charc;charch[100];inta,i,j=0;intlistone(structStuMessageStu[],inti);printf("\t輸入0~2進行選擇\n");printf("按**查詢,請選擇1\n");printf("按年級查詢,請選擇2\n");printf("返回主菜單,請選擇0\n");fflush(stdin);c=getchar();switch(c){ case'1': { fflush(stdin); printf("pleaseinputstuNo\n"); scanf("%s",&ch); for(i=0;i<length;i++) { if((strcmp(ch,Stu[i].stuNo))==0) { j++; listone(Stu,i); }

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論