版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
題目:學(xué)生信息管理系統(tǒng)一、需求分析任務(wù)要求:自學(xué)C語言中有關(guān)鏈表及外部文件的內(nèi)容,設(shè)計學(xué)生信息管理系統(tǒng)。具體要求如下:?建立學(xué)生信息,信息至少包括名字、性別、年齡、學(xué)號、系別、家庭信息等內(nèi)容;?能夠提供添加、刪除和修改學(xué)生信息等功能;?能將通訊錄保存在文件中;?能夠按指定方式輸出學(xué)生信息。系統(tǒng)功能需求分析:1、為存儲學(xué)生信息,需定義一個結(jié)構(gòu)體類型,成員名字、性別、年齡、學(xué)號、系別、家庭信息等,并建立鏈表,定義該結(jié)構(gòu)體類型的指針,用于指向各結(jié)點;2、分別建立具有添加、刪除、修改、查詢等功能的子函數(shù),完成相應(yīng)功能,對程序?qū)崿F(xiàn)模塊化。這其中要用到對鏈表的刪除、插入等知識。刪除時用一結(jié)構(gòu)體指針指向鏈表的第一個結(jié)點,檢查該節(jié)點的值是否等于輸入的要刪除的學(xué)號,若相等就刪除,不相等則后移指針,直至表尾。插入時也要先找到相應(yīng)結(jié)點,再添加?!?、為實現(xiàn)存儲功能,需用到文件的相關(guān)函數(shù),打開文件,將添加、修改或刪除的信息存入磁盤中。★4、為以表格的形式輸出文件,宏定義格式化輸出語句,指定輸出學(xué)生信息。二、概要設(shè)計系統(tǒng)總體設(shè)計框架對程序進(jìn)行模塊化,建立添加、修改、刪除、查找和顯示功能的子函數(shù),各子函數(shù)中運用鏈表存儲數(shù)據(jù)。從主函數(shù)開始執(zhí)行,調(diào)用各個子函數(shù),并運用文件相關(guān)知識將信息存入磁盤中。系統(tǒng)功能模塊圖:三、詳細(xì)設(shè)計主要功能模塊的算法設(shè)計思路如下1、查詢通訊錄信息(voidchakan())為開辟一個新單元輸入查詢關(guān)鍵字:讀取保存的文件數(shù)據(jù)輸入ASCLL字符:在鏈表中尋找相應(yīng)結(jié)點;調(diào)用輸出函數(shù),輸出結(jié)點信息。2、添加信息函數(shù)(voidadd())定義指向結(jié)構(gòu)體變量的指針;移動指針,找到插入結(jié)點;在要插入的結(jié)點輸入信息;調(diào)用保存函數(shù),打開文件,保存輸入信息。3、刪除信息函數(shù)(voiddel())定義指向結(jié)構(gòu)體變量的指針;用指針檢驗鏈表中是否有記錄,若沒記錄,返回主函數(shù)根據(jù)要修改的編號查找要刪除的結(jié)點;修改鏈表,刪除對應(yīng)結(jié)點。4、修改信息函數(shù)(voidxiugaiO)定義指向結(jié)構(gòu)體變量的指針;讀取保存的文件數(shù)據(jù)輸入ASCLL字符:用指針檢驗鏈表中是否有記錄,若沒記錄,返回主函數(shù)根據(jù)要修改的編號查找對應(yīng)結(jié)點;修改信息;(6)打開文件,保存修改記錄。5、保存信息函數(shù)(baocun())(1)定義指向結(jié)構(gòu)體變量的指針;(2)用文件指針指向要讀寫的磁盤文件名,若沒有則新建此文件名(3)用指針檢驗鏈表中是否有記錄,若沒記錄,返回主函數(shù):(4)打開文件,保存記錄:6、屏幕操作函數(shù)(voidstubent187())(1)以一定格式輸出所想要的圖形:定義變量:(對整個程序定義全局變量)#include""#include""#defineSTUDENTID/*所有STUDENT都用ID來代替*/typedefstructnode/*定義結(jié)構(gòu)體*/{charming[50];/*名字*/charxing[50];/*性別*/charnian[50];/*年齡*/intxuehao;/*學(xué)號*/charxibie[50];/*專業(yè)*/charsushe[50];/*宿舍號*//*家庭地址*/charjia[50];/*家庭地址*/structnode*next;}ID;/*學(xué)生信息(變量名)*/ID*head=NULL;/*定義—個頭指針*/FILE*zhi;/*定義—個文件指針*/主菜單界面:(進(jìn)入屏幕界面的形式)voidstubent187()/*屏幕格式函數(shù)*/printf("*學(xué)生信息管理系統(tǒng)*\n");printf("**\n");printf("*請選擇:1:查看;2:添加;3:刪除;*\n")printf("*4:修改;0:退出系統(tǒng)*\n");printf("**\n");I廣/H\11\printf("*******************************************\n");printf(">>>>>>>>>>>>>輸入0~4數(shù)字<<<<<<<<<<<<<、n");return;}查看學(xué)生信息記錄:(對以保存在磁盤文件的學(xué)生信息進(jìn)行查詢voidchakan(){/*查看*/ID*t;t=head;t=(ID*)malloc(sizeof(ID));/*為t開辟—新單元*/if((zhi二fopen("","rb"))二二NULL)printf(“沒有此文件\n“);else{printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao","eng","sushe","jia");/*輸出一個屏幕格式*/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);/*以這形式輸出各個學(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開辟—新單元*/printf("請輸入姓名:");scanf("%s",&t1->ming);/*姓名*/
printf("請輸入性別:");scanf("%s",&t1->xing);/*性別*/printf("請輸入年齡:");scanf("%s",&(t1->nian));/*年齡*/printf("請輸入學(xué)號:");scanf("%d",&(t1->xuehao));/*學(xué)號*/printf("請輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("請輸入宿舍號:");scanf("%s",&(t1->sushe));/*宿舍號*/printf("請輸入家庭地址:");scanf("%s",&(t1->jia));/*家庭地址*/t1->next=NULL;if(head==NULL)/*如果頭結(jié)點為空*/{head二t1;/*t1指向頭結(jié)點*/t2=t1;}else{t2=head;*/while(t2->next!=NULL)t2=t2->next;/*沒有成立則指向下個結(jié)點*/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é)生信息操作:(對以存的學(xué)生信息進(jìn)行刪除)voiddel(){/*刪除*/ID*A,*B;/*定義指針*/chart,i;intxuehao;/*定義整型變量與字符型變量*/A=B=NULL;if((zhi二fopen("","a+"))二二NULL)printf(“沒有此信息文件\n“);else{loop:printf("請輸入要刪除的學(xué)生學(xué)號:");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("無法找到此編號\n");}}修改學(xué)生信息操作:(對保存的學(xué)生信息進(jìn)行修改)voidxiugai(){{/*修改*/ID*t1,*t2;/*定義指針*/inti;charxuehao;/*定義整型變量與字符型變量*/t1=head;if((zhi二fopen("","a+"))二二NULL)printf(“沒有此信息文件\n“);loop:printf("請輸入要修改的學(xué)號:");scanf("%s",&xuehao);/*輸入編號*/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é)號:");scanf("%s",&t1->xuehao);/*學(xué)號*/printf("輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("輸入專業(yè):");scanf("%s",&(t1->sushe));/*宿舍號*/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("沒有此編號\n");return;}保存添加,刪除,修改學(xué)生的信息:(操作過后是否保存)baocun()/*保存*/{ID*t=head;zhi=fopen("","a+");/*定義指針*//*(讀寫文本)ID*t=head;zhi=fopen("","a+");/*定義指針*//*(讀寫文本)*/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é)束*/錯誤,請在此輸入\n");continue;/*輸入不是0~4的,則返回*/源函數(shù)代碼:voidchakan(){/*查看*/ID*t;t=head;t=(ID*)malloc(sizeof(ID));/*為t開辟—新單元*/if((zhi二fopen("","rb"))二二NULL)printf(“沒有此文件\n“);else{printf("%10s%10s%10s%10s%10s%10s%10s\n","ming","xing","nian","xuehao","eng","sushe","jia");/*輸出—個屏幕格式*/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);/*以這形式輸出各個學(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開辟—新單元*/printf("請輸入姓名:");scanf("%s",&t1->ming);/*姓名*/printf("請輸入性別:");scanf("%s",&t1->xing);/*性別*/printf("請輸入年齡:");scanf("%s",&(t1->nian));/*年齡*/printf("請輸入學(xué)號:");scanf("%d",&(t1->xuehao));/*學(xué)號*/printf("請輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("請輸入宿舍號:");scanf("%s",&(t1->sushe));/*宿舍號*/printf("請輸入家庭地址:");scanf("%s",&(t1->jia));/*家庭地址*/t1->next=NULL;if(head==NULL)/*如果頭結(jié)點為空*/{head二t1;/*t1指向頭結(jié)點*/t2=t1;}else{t2=head;while(t2->next!=NULL)t2=t2->next;/*沒有成立則指向下個結(jié)點*/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(“沒有此信息文件\n“);elseelseloop:printf("請輸入要刪除的學(xué)生學(xué)loop:號:");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("無法找到此編號\n");}}voidxiugai(){/*修改*/ID*t1,*t2;/*定義指針*/inti;charxuehao;/*定義整型變量與字符型變量*/t1=head;if((zhi二fopen("","a+"))二二NULL)printf(“沒有此信息文件\n“);loop:printf("請輸入要修改的學(xué)號:");scanf("%s",&xuehao);/*輸入編號*/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é)號:");scanf("%s",&t1->xuehao);/*學(xué)號*/printf("輸入系別:");scanf("%s",&(t1->xibie));/*系別*/printf("輸入專業(yè):");scanf("%s",&(t1->sushe));/*宿舍號*/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("沒有此編號\n");{case1:chakan();break;{case1:chakan();break;/*調(diào)用查看函數(shù)*/return;/*保存*/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏儲能合同能源管理模式(emc)測算表
- 廣西建設(shè)工程專用合同條款
- 海上貨運代理合同 答辯狀
- 合同到期搬離通知書
- 大班數(shù)學(xué)認(rèn)識半點課件
- 專項8 非連續(xù)性文本閱讀- 2022-2023學(xué)年五年級語文下冊期末專項練習(xí)
- 2024普通軟件產(chǎn)品銷售合同
- 2024公司借款保證合同范本
- 深圳大學(xué)《印度文化遺產(chǎn)賞析》2021-2022學(xué)年第一學(xué)期期末試卷
- 菜苗栽種合同(2篇)
- GB18613-2012中小型異步三相電動機(jī)能效限定值及能效等級
- 《臨床決策分析》課件.ppt
- 家風(fēng)家訓(xùn)PPT課件
- 淚道沖洗PPT學(xué)習(xí)教案
- 部編版六年級語文上冊詞語表(帶拼音)-六上冊詞語表連拼音
- 淺談校園影視在學(xué)校教育中的作用
- 無公害農(nóng)產(chǎn)品查詢
- 試劑、試藥、試液的管理規(guī)程
- 研究生課程應(yīng)用電化學(xué)(課堂PPT)
- 通信綜合網(wǎng)管技術(shù)規(guī)格書doc
- 六宮數(shù)獨可直接打印共192題
評論
0/150
提交評論