c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生信息管理系統(tǒng)_第1頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生信息管理系統(tǒng)_第2頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生信息管理系統(tǒng)_第3頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生信息管理系統(tǒng)_第4頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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)介

題目:學(xué)生信息管理系統(tǒng)一、需求分析任務(wù)要求:自學(xué)C語(yǔ)言中有關(guān)鏈表及外部文件的內(nèi)容,設(shè)計(jì)學(xué)生信息管理系統(tǒng)。具體要求如下:?建立學(xué)生信息,信息至少包括名字、性別、年齡、學(xué)號(hào)、系別、家庭信息等內(nèi)容;?能夠提供添加、刪除和修改學(xué)生信息等功能;?能將通訊錄保存在文件中;?能夠按指定方式輸出學(xué)生信息。系統(tǒng)功能需求分析:1、為存儲(chǔ)學(xué)生信息,需定義一個(gè)結(jié)構(gòu)體類型,成員名字、性別、年齡、學(xué)號(hào)、系別、家庭信息等,并建立鏈表,定義該結(jié)構(gòu)體類型的指針,用于指向各結(jié)點(diǎn);2、分別建立具有添加、刪除、修改、查詢等功能的子函數(shù),完成相應(yīng)功能,對(duì)程序?qū)崿F(xiàn)模塊化。這其中要用到對(duì)鏈表的刪除、插入等知識(shí)。刪除時(shí)用一結(jié)構(gòu)體指針指向鏈表的第一個(gè)結(jié)點(diǎn),檢查該節(jié)點(diǎn)的值是否等于輸入的要?jiǎng)h除的學(xué)號(hào),若相等就刪除,不相等則后移指針,直至表尾。插入時(shí)也要先找到相應(yīng)結(jié)點(diǎn),再添加?!?、為實(shí)現(xiàn)存儲(chǔ)功能,需用到文件的相關(guān)函數(shù),打開(kāi)文件,將添加、修改或刪除的信息存入磁盤(pán)中?!?、為以表格的形式輸出文件,宏定義格式化輸出語(yǔ)句,指定輸出學(xué)生信息。二、概要設(shè)計(jì)系統(tǒng)總體設(shè)計(jì)框架對(duì)程序進(jìn)行模塊化,建立添加、修改、刪除、查找和顯示功能的子函數(shù),各子函數(shù)中運(yùn)用鏈表存儲(chǔ)數(shù)據(jù)。從主函數(shù)開(kāi)始執(zhí)行,調(diào)用各個(gè)子函數(shù),并運(yùn)用文件相關(guān)知識(shí)將信息存入磁盤(pán)中。系統(tǒng)功能模塊圖:三、詳細(xì)設(shè)計(jì)主要功能模塊的算法設(shè)計(jì)思路如下1、查詢通訊錄信息(voidchakan())為開(kāi)辟一個(gè)新單元輸入查詢關(guān)鍵字:讀取保存的文件數(shù)據(jù)輸入ASCLL字符:在鏈表中尋找相應(yīng)結(jié)點(diǎn);調(diào)用輸出函數(shù),輸出結(jié)點(diǎn)信息。2、添加信息函數(shù)(voidadd())定義指向結(jié)構(gòu)體變量的指針;移動(dòng)指針,找到插入結(jié)點(diǎn);在要插入的結(jié)點(diǎn)輸入信息;調(diào)用保存函數(shù),打開(kāi)文件,保存輸入信息。3、刪除信息函數(shù)(voiddel())定義指向結(jié)構(gòu)體變量的指針;用指針檢驗(yàn)鏈表中是否有記錄,若沒(méi)記錄,返回主函數(shù)根據(jù)要修改的編號(hào)查找要?jiǎng)h除的結(jié)點(diǎn);修改鏈表,刪除對(duì)應(yīng)結(jié)點(diǎn)。4、修改信息函數(shù)(voidxiugaiO)定義指向結(jié)構(gòu)體變量的指針;讀取保存的文件數(shù)據(jù)輸入ASCLL字符:用指針檢驗(yàn)鏈表中是否有記錄,若沒(méi)記錄,返回主函數(shù)根據(jù)要修改的編號(hào)查找對(duì)應(yīng)結(jié)點(diǎn);修改信息;(6)打開(kāi)文件,保存修改記錄。5、保存信息函數(shù)(baocun())(1)定義指向結(jié)構(gòu)體變量的指針;(2)用文件指針指向要讀寫(xiě)的磁盤(pán)文件名,若沒(méi)有則新建此文件名(3)用指針檢驗(yàn)鏈表中是否有記錄,若沒(méi)記錄,返回主函數(shù):(4)打開(kāi)文件,保存記錄:6、屏幕操作函數(shù)(voidstubent187())(1)以一定格式輸出所想要的圖形:定義變量:(對(duì)整個(gè)程序定義全局變量)#include""#include""#defineSTUDENTID/*所有STUDENT都用ID來(lái)代替*/typedefstructnode/*定義結(jié)構(gòu)體*/{charming[50];/*名字*/charxing[50];/*性別*/charnian[50];/*年齡*/intxuehao;/*學(xué)號(hào)*/charxibie[50];/*專業(yè)*/charsushe[50];/*宿舍號(hào)*//*家庭地址*/charjia[50];/*家庭地址*/structnode*next;}ID;/*學(xué)生信息(變量名)*/ID*head=NULL;/*定義—個(gè)頭指針*/FILE*zhi;/*定義—個(gè)文件指針*/主菜單界面:(進(jìn)入屏幕界面的形式)voidstubent187()/*屏幕格式函數(shù)*/printf("*學(xué)生信息管理系統(tǒng)*\n");printf("**\n");printf("*請(qǐng)選擇:1:查看;2:添加;3:刪除;*\n")printf("*4:修改;0:退出系統(tǒng)*\n");printf("**\n");I廣/H\11\printf("*******************************************\n");printf(">>>>>>>>>>>>>輸入0~4數(shù)字<<<<<<<<<<<<<、n");return;}查看學(xué)生信息記錄:(對(duì)以保存在磁盤(pán)文件的學(xué)生信息進(jìn)行查詢voidchakan(){/*查看*/ID*t;t=head;t=(ID*)malloc(sizeof(ID));/*為t開(kāi)辟—新單元*/if((zhi二fopen("","rb"))二二NULL)printf(“沒(méi)有此文件\n“);else{printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao","eng","sushe","jia");/*輸出一個(gè)屏幕格式*/while(!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t->ming,&t->xing,&t->nian,&t->xuehao,&t->xibie,&t->sushe,&t->jia);/*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/printf("%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t->xibie,t->sushe,t->jia);/*以這形式輸出各個(gè)學(xué)生信息*/t->next=(ID*)malloc(sizeof(ID));t=t->next;}};}添加學(xué)生信息記錄:()voidadd(){chari;/*添加*/ID*t1,*t2;t1=t2=NULL;loop:t仁(ID*)malloc(sizeof(ID));/*為t1開(kāi)辟—新單元*/printf("請(qǐng)輸入姓名:");scanf("%s",&t1->ming);/*姓名*/

printf("請(qǐng)輸入性別:");scanf("%s",&t1->xing);/*性別*/printf("請(qǐng)輸入年齡:");scanf("%s",&(t1->nian));/*年齡*/printf("請(qǐng)輸入學(xué)號(hào):");scanf("%d",&(t1->xuehao));/*學(xué)號(hào)*/printf("請(qǐng)輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("請(qǐng)輸入宿舍號(hào):");scanf("%s",&(t1->sushe));/*宿舍號(hào)*/printf("請(qǐng)輸入家庭地址:");scanf("%s",&(t1->jia));/*家庭地址*/t1->next=NULL;if(head==NULL)/*如果頭結(jié)點(diǎn)為空*/{head二t1;/*t1指向頭結(jié)點(diǎn)*/t2=t1;}else{t2=head;*/while(t2->next!=NULL)t2=t2->next;/*沒(méi)有成立則指向下個(gè)結(jié)點(diǎn)*/t2->next=t1;}getchar();printf("是否繼續(xù)添加(Y/N):\n");scanf("%s",&i);/*輸入Y/N*/if(i=='y'||i=='Y'){clrscr();gotoloop;/*清屏在循環(huán)*/}else{printf("是否保存此次添加(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y')/*是否要保存*/{baocun();/*調(diào)用保存*/clrscr();/*清屏*/stubent187();/*調(diào)用屏幕函數(shù)*/printf("保存成功");}elseif(i=='n'||i=='N'){clrscr();/*清屏*/stubent187();}/*調(diào)用屏幕函數(shù)*/}return;}刪除學(xué)生信息操作:(對(duì)以存的學(xué)生信息進(jìn)行刪除)voiddel(){/*刪除*/ID*A,*B;/*定義指針*/chart,i;intxuehao;/*定義整型變量與字符型變量*/A=B=NULL;if((zhi二fopen("","a+"))二二NULL)printf(“沒(méi)有此信息文件\n“);else{loop:printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):");scanf("%d",&xuehao);while(!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&A->ming,&A->xing,&A->nian,&A->xuehao,&A->xibie,&A->sushe,&A->jia);/*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/if(A!=NULL&&A->xuehao!=xuehao)A=A->next;elsebreak;}if(A->xuehao==xuehao){head=A->next;free(*A);printf("成功!\n");printf("是否繼續(xù)刪除(Y/N)");scanf("%s",&i);if(i=='y'||i=='Y'){clrscr();gotoloop;}if(i=='n'||i=='N')printf("是否保存此次刪除(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y')baocun();elseclrscr();stubent187();}elseprintf("無(wú)法找到此編號(hào)\n");}}修改學(xué)生信息操作:(對(duì)保存的學(xué)生信息進(jìn)行修改)voidxiugai(){{/*修改*/ID*t1,*t2;/*定義指針*/inti;charxuehao;/*定義整型變量與字符型變量*/t1=head;if((zhi二fopen("","a+"))二二NULL)printf(“沒(méi)有此信息文件\n“);loop:printf("請(qǐng)輸入要修改的學(xué)號(hào):");scanf("%s",&xuehao);/*輸入編號(hào)*/while(!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t1->ming,&t1->xing,&t1->nian,&t1->xuehao,&t1->xibie,&t1->sushe,&t1->jia);*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/if(t1!=NULL&&t1->xuehao!=xuehao)t1=t1->next;elsebreak;}if(t1->xuehao==xuehao){fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t1->ming,t1->xing,t1->nian,t1->xuehao,t1->xibie,t1->sushe,t1->jia);printf("輸入名字:");scanf("%s",&t1->ming);/*名字*/printf("輸入性別:");scanf("%s",&(t1->xing));/*性別*/printf("輸入年齡:");scanf("%s",&(t1->nian));/*年齡*/printf("輸入學(xué)號(hào):");scanf("%s",&t1->xuehao);/*學(xué)號(hào)*/printf("輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("輸入專業(yè):");scanf("%s",&(t1->sushe));/*宿舍號(hào)*/printf("輸入家庭地址:");scanf("%s",&(t1->jia));/*家庭地址*/printf("成功!\n");printf(“是否繼續(xù)修改(Y/N)");scanf("%d",&i);if(i=='y'||i=='Y'){clrscr();gotoloop;}if(i=='n'||i=='N')printf("是否保存此次修改(Y/N)\n");scanf("%c",&i);if(i=='y'||i=='Y')baocun();elseclrscr();/*清屏*/stubent187();/*調(diào)用屏幕函數(shù)*/}elseprintf("沒(méi)有此編號(hào)\n");return;}保存添加,刪除,修改學(xué)生的信息:(操作過(guò)后是否保存)baocun()/*保存*/{ID*t=head;zhi=fopen("","a+");/*定義指針*//*(讀寫(xiě)文本)ID*t=head;zhi=fopen("","a+");/*定義指針*//*(讀寫(xiě)文本)*/while(t!=NULL){fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t->xibie,t->sushe,t->jia);/*以zhi為文件指針保存*/t=t->next;}fclose(zhi);/*關(guān)閉此文件*/printf("成功!\n");return;}主菜單操作:(選擇所需要的操作)main()/*主函數(shù)*/{inti;/*定義整形變量i*/stubent187();/*調(diào)用屏幕函數(shù)*/while(1){scanf("%d",&i);/*輸入要執(zhí)行的操作*/switch(i){case1:chakan();break;case2:add();break;{case1:chakan();break;case2:add();break;case3:del();break;case4:xiugai();break;case0:exit(0);default:printf("輸入/*調(diào)用查看函數(shù)*//*調(diào)用添加函數(shù)*//*調(diào)用刪除函數(shù)*//*調(diào)用修改函數(shù)*//*結(jié)束*/錯(cuò)誤,請(qǐng)?jiān)诖溯斎隲n");continue;/*輸入不是0~4的,則返回*/源函數(shù)代碼:voidchakan(){/*查看*/ID*t;t=head;t=(ID*)malloc(sizeof(ID));/*為t開(kāi)辟—新單元*/if((zhi二fopen("","rb"))二二NULL)printf(“沒(méi)有此文件\n“);else{printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao","eng","sushe","jia");/*輸出—個(gè)屏幕格式*/while(!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t->ming,&t->xing,&t->nian,&t->xuehao,&t->xibie,&t->sushe,&t->jia);/*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/printf("%10s%10s%10s%10d%10s%10s%10s\n",t->ming,t->xing,t->nian,t->xuehao,t->xibie,t->sushe,t->jia);/*以這形式輸出各個(gè)學(xué)生信息*/t->next=(ID*)malloc(sizeof(ID));t=t->next;};voidadd(){chari;/*添加*/ID*t1,*t2;t1=t2=NULL;loop:t1=(ID*)malloc(sizeof(ID));/*為t1開(kāi)辟—新單元*/printf("請(qǐng)輸入姓名:");scanf("%s",&t1->ming);/*姓名*/printf("請(qǐng)輸入性別:");scanf("%s",&t1->xing);/*性別*/printf("請(qǐng)輸入年齡:");scanf("%s",&(t1->nian));/*年齡*/printf("請(qǐng)輸入學(xué)號(hào):");scanf("%d",&(t1->xuehao));/*學(xué)號(hào)*/printf("請(qǐng)輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("請(qǐng)輸入宿舍號(hào):");scanf("%s",&(t1->sushe));/*宿舍號(hào)*/printf("請(qǐng)輸入家庭地址:");scanf("%s",&(t1->jia));/*家庭地址*/t1->next=NULL;if(head==NULL)/*如果頭結(jié)點(diǎn)為空*/{head二t1;/*t1指向頭結(jié)點(diǎn)*/t2=t1;}else{t2=head;while(t2->next!=NULL)t2=t2->next;/*沒(méi)有成立則指向下個(gè)結(jié)點(diǎn)*/t2->next=t1;}getchar();printf("是否繼續(xù)添加(Y/N):\n");seanf("%s",&i);/*輸入Y/N*/if(i=='y'||i=='Y'){elrser();gotoloop;/*清屏在循環(huán)*/}else{printf("是否保存此次添加(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y')/*是否要保存*/{baocun();/*調(diào)用保存*/clrscr();/*清屏*/stubent187();/*調(diào)用屏幕函數(shù)*/printf("保存成功");}elseif(i=='n'||i=='N'){clrscr();/*清屏*/stubent187();}/*調(diào)用屏幕函數(shù)*/}return;}voiddel(){/*刪除*/ID*A,*B;/*定義指針*/chart,i;intxuehao;/*定義整型變量與字符型變量*/A=B=NULL;if((zhi=fopen("","a+"))二二NULL)printf(“沒(méi)有此信息文件\n“);elseelseloop:printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)loop:號(hào):");scanf("%d",&xuehao);while(!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&A->ming,&A->xing,&A->nian,&A->xuehao,&A->xibie,&A->sushe,&A->jia);/*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/if(A!=NULL&&A->xuehao!=xuehao)A=A->next;elsebreak;}if(A->xuehao==xuehao){head=A->next;free(*A);printf("成功!\n");printf("是否繼續(xù)刪除(Y/N)");scanf("%s",&i);if(i=='y'||i=='Y'){clrscr();gotoloop;}if(i=='n'||i=='N')printf("是否保存此次刪除(Y/N)\n");scanf("%s",&i);if(i=='y'||i=='Y')baocun();elseclrscr();stubent187();}elseprintf("無(wú)法找到此編號(hào)\n");}}voidxiugai(){/*修改*/ID*t1,*t2;/*定義指針*/inti;charxuehao;/*定義整型變量與字符型變量*/t1=head;if((zhi二fopen("","a+"))二二NULL)printf(“沒(méi)有此信息文件\n“);loop:printf("請(qǐng)輸入要修改的學(xué)號(hào):");scanf("%s",&xuehao);/*輸入編號(hào)*/while(!feof(zhi)){fscanf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",&t1->ming,&t1->xing,&t1->nian,&t1->xuehao,&t1->xibie,&t1->sushe,&t1->jia);*讀取保存的文件數(shù)據(jù)輸入ASCLL字符:*/if(t1!=NULL&&t1->xuehao!=xuehao)t1=t1->next;elsebreak;}if(t1->xuehao==xuehao)fprintf(zhi,"%10s%10s%10s%10d%10s%10s%10s\n",t1->ming,t1->xing,t1->nian,t1->xuehao,t1->xibie,t1->sushe,t1->jia);printf("輸入名字:");scanf("%s",&t1->ming);/*名字*/printf("輸入性別:");scanf("%s",&(t1->xing));/*性別*/printf("輸入年齡:");scanf("%s",&(t1->nian));/*年齡*/printf("輸入學(xué)號(hào):");scanf("%s",&t1->xuehao);/*學(xué)號(hào)*/printf("輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("輸入專業(yè):");scanf("%s",&(t1->sushe));/*宿舍號(hào)*/printf("輸入家庭地址:");scanf("%s",&(t1->jia));/*家庭地址*/printf("成功!\n");printf(“是否繼續(xù)修改(Y/N)");scanf("%d",&i);if(i=='y'||i=='Y'){clrscr();gotoloop;}if(i=='n'||i=='N')printf("是否保存此次修改(Y/N)\n");scanf("%c",&i);if(i=='y'||i=='Y')baocun();elseclrscr();/*清屏*/stubent187();/*調(diào)用屏幕函數(shù)*/}elseprintf("沒(méi)有此編號(hào)\n");{case1:chakan();break;{case1:chakan();break;/*調(diào)用查看函數(shù)*/return;/*保存*/

溫馨提示

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