版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、WORD格式題目:學(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è)構(gòu)造體類型,成員名字、性別、年齡、學(xué)號(hào)、系別、家庭信息等,并建立鏈表,定義該構(gòu)造體類型的指針,用于指向各結(jié)點(diǎn); 2 、分別建立具有添加、刪除、修改、查詢等功能的子函數(shù),完成相應(yīng)功能,對(duì)程序?qū)崿F(xiàn)模塊化。這其中要用到對(duì)鏈表的刪除、插入等知識(shí)。刪除時(shí)用
2、一構(gòu)造體指針指向鏈表的第一個(gè)結(jié)點(diǎn), 檢查該節(jié)點(diǎn)的值是否等于輸入的要?jiǎng)h除的學(xué)號(hào), 假設(shè)相等就刪除,不相等那么后移指針,直至表尾。插入時(shí)也要先找到相應(yīng)結(jié)點(diǎn),再添加。 3、為實(shí)現(xiàn)存儲(chǔ)功能,需用到文件的相關(guān)函數(shù),翻開文件,將添加、修改或刪除的信息存入磁盤中。 4、為以表格的形式輸出文件,宏定義格式化輸出語(yǔ)句,指定輸出學(xué)專業(yè)資料整理WORD格式生信息。專業(yè)資料整理WORD格式二、概要設(shè)計(jì)系統(tǒng)總體設(shè)計(jì)框架:對(duì)程序進(jìn)展模塊化,建立添加、修改、刪除、查找和顯示功能的子函數(shù),各子函數(shù)中運(yùn)用鏈表存儲(chǔ)數(shù)據(jù)。從主函數(shù)開場(chǎng)執(zhí)行,調(diào)用各個(gè)子函數(shù),并運(yùn)用文件相關(guān)知識(shí)將信息存入磁盤中。系統(tǒng)功能模塊圖 :主菜單學(xué)學(xué)學(xué)學(xué)生生生生
3、形信信信象息息息查添刪添詢加除加是否保存關(guān)閉文件專業(yè)資料整理WORD格式2專業(yè)資料整理WORD格式三、詳細(xì)設(shè)計(jì)主要功能模塊的算法設(shè)計(jì)思路如下:1、查詢通訊錄信息 void chakan()( 1為開辟一個(gè)新單元( 2輸入查詢關(guān)鍵字:( 3讀取保存的文件數(shù)據(jù)輸入 ASCLL字符:( 4在鏈表中尋找相應(yīng)結(jié)點(diǎn);( 5調(diào)用輸出函數(shù),輸出結(jié)點(diǎn)信息。2、添加信息函數(shù) void add()( 1定義指向構(gòu)造體變量的指針;( 2移動(dòng)指針,找到插入結(jié)點(diǎn);( 3在要插入的結(jié)點(diǎn)輸入信息;( 4調(diào)用保存函數(shù),翻開文件,保存輸入信息。3、刪除信息函數(shù) void del()( 1定義指向構(gòu)造體變量的指針;( 2用指針檢驗(yàn)
4、鏈表中是否有記錄,假設(shè)沒記錄,返回主函數(shù);( 3根據(jù)要修改的編號(hào)查找要?jiǎng)h除的結(jié)點(diǎn);( 4修改鏈表,刪除對(duì)應(yīng)結(jié)點(diǎn)。4、修改信息函數(shù) void xiugai()( 1定義指向構(gòu)造體變量的指針;( 2讀取保存的文件數(shù)據(jù)輸入 ASCLL字符:( 3用指針檢驗(yàn)鏈表中是否有記錄,假設(shè)沒記錄,返回主函數(shù);( 4根據(jù)要修改的編號(hào)查找對(duì)應(yīng)結(jié)點(diǎn);( 5修改信息;( 6翻開文件,保存修改記錄。5、保存信息函數(shù)baocun()1定義指向構(gòu)造體變量的指針;2用文件指針指向要讀寫的磁盤文件名,假設(shè)沒有那么新建此文件名:3用指針檢驗(yàn)鏈表中是否有記錄,假設(shè)沒記錄,返回主函數(shù):4翻開文件,保存記錄:6、屏幕操作函數(shù) void
5、stubent187()1以一定格式輸出所想要的圖形:專業(yè)資料整理WORD格式3專業(yè)資料整理WORD格式四、主要源程序代碼定義變量:對(duì)整個(gè)程序定義全局變量#include stdio.h#include conio.h#define STUDENT ID/* 所有 STUDENT 都用 ID 來代替 */typedef struct node/* 定義構(gòu)造體 */char ming50;/* 名字 */char xing50;/* 性別 */char nian50;/* 年齡 */intxuehao;/* 學(xué)號(hào) */char xibie50;/* 專業(yè) */char sushe50;/* 宿舍
6、號(hào) */char jia50;/* 家庭地址 */struct node *next;ID;/* 學(xué)生信息變量名 */ID *head=NULL;/* 定義一個(gè)頭指針 */FILE *zhi;/* 定義一個(gè)文件指針 */主菜單界面:進(jìn)入屏幕界面的形式void stubent187()/* 屏幕格式函數(shù) */printf(*n);printf(*學(xué)生信息管理系統(tǒng)*n);printf(*n);printf(*請(qǐng)選擇: 1:查看 ; 2:添加 ; 3:刪除 ;*n);printf(*4:修改 ; 0:退出系統(tǒng)*n);printf(*n);printf(*n); printf( 輸入 04 數(shù)字 mi
7、ng,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia); /* 讀取保存的文件數(shù)據(jù)輸入 ASCLL字符: */printf(%10s%10s%10s%10d%10s%10s%10sn,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é)生信息記錄: void add()char i;/* 添加 */ID *t1,*t2;t1=t2=NULL;loop:t1=(ID *)
8、malloc(sizeof(ID);/* 為 t1 開辟一個(gè)新單元 */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); /*
9、宿舍號(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;/* 沒有成立那么指向下個(gè)結(jié)點(diǎn) */ t2-next=t1; getchar();printf( 是否繼續(xù)添加 (Y/N):n);專業(yè)資料整理WORD格式5專業(yè)資料整理WORD格式scanf(%s,&i);/* 輸入 Y/N*/if(i=y|i=Y)clrsc
10、r(); goto loop;/*清屏在 循環(huán) */elseprintf( 是否保存此次添加 (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)展刪除void del()/* 刪除 */ID *A,*B;/* 定義指針 */char t,i;int
11、 xuehao;/* 定義整型變量與字符型變量*/A=B=NULL;if(zhi=fopen(yihu1.txt,a+)=NULL) printf( 沒有此信息文件 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%10sn,&A-ming,&A-xing,&A -nian,&A-xuehao,&A-xibie,&A-sushe,&A-jia); /* 讀取保存的文件數(shù)據(jù)輸入ASCLL字符: */if(A!=NULL & A
12、-xuehao!=xuehao)A=A-next;else break;if (A-xuehao=xuehao)head=A-next; free(*A);專業(yè)資料整理WORD格式6專業(yè)資料整理WORD格式printf( 成功 !n);printf( 是否繼續(xù)刪除 (Y/N);scanf(%s,&i);if(i=y|i=Y)clrscr(); goto loop;if(i=n|i=N)printf( 是否保存此次刪除 (Y/N)n);scanf(%s,&i);if(i=y|i=Y)baocun();elseclrscr();stubent187();elseprintf( 無法找到此編號(hào) n)
13、;修改學(xué)生信息操作: 對(duì)保存的學(xué)生信息進(jìn)展修改void xiugai()/* 修改 */ID *t1,*t2;/* 定義指針 */int i;char xuehao;/* 定義整型變量與字符型變量*/t1=head;if(zhi=fopen(yihu1.txt,a+)=NULL) printf(沒有此信息文件 n);loop:printf( 請(qǐng)輸入要修改的學(xué)號(hào):);scanf(%s,&xuehao);/* 輸入編號(hào)*/while (!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t1-ming,&t1-xing,&t1-nian,&t1-
14、xuehao,&t1-xibie,&t1-sushe,&t1-jia); * 讀取保存的文件數(shù)據(jù)輸入ASCLL字符: */if(t1!=NULL & t1-xuehao!=xuehao)t1=t1-next;else break;if (t1-xuehao=xuehao) fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t1-ming,t1-xing,t1- nian,t1-xuehao,t1-xibie,t1-sushe,t1-jia);printf( 輸入名字 :);scanf(%s,&t1-ming);/* 名字 */printf( 輸入性別 :);s
15、canf(%s,&(t1-xing);/* 性別 */printf( 輸入年齡 :);scanf(%s,&(t1-nian);/* 年齡 */printf( 輸入學(xué)號(hào) :);scanf(%s,&t1-xuehao);/* 學(xué)號(hào) */專業(yè)資料整理WORD格式7專業(yè)資料整理WORD格式printf(輸 入 系 別 :);scanf(%s,&(t1-xibie);/*系 別 */printf( 輸 入 專業(yè) :);scanf(%s,&(t1-sushe);/*宿 舍號(hào)*/printf( 輸入家庭地址 :);scanf(%s,&(t1-jia);/*家庭地址 */printf( 成功 !n);prin
16、tf( 是否繼續(xù)修改 (Y/N);scanf(%d,&i);if(i=y|i=Y)clrscr(); goto loop;if(i=n|i=N)printf( 是否保存此次修改 (Y/N)n);scanf(%c,&i);if(i=y|i=Y)baocun();elseclrscr();/* 清屏 */stubent187();/* 調(diào)用屏幕函數(shù) */elseprintf( 沒有此編號(hào) n);return;保存添加,刪除,修改學(xué)生的信息:操作過后是否保存 baocun()/* 保存 */ID *t=head;/* 定義指針 */zhi=fopen(yihu1.txt,a+);/*( 讀寫 yih
17、u.txt 文本 )*/while (t!=NULL)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,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ù) */int i;/* 定義整形變量 i*/stubent187();/* 調(diào)用屏幕函數(shù) */專業(yè)資料整理WORD格式8專業(yè)資料整理WORD格式whi
18、le(1)scanf(%d,&i);/* 輸入要執(zhí)行的操作 */switch(i)case 1:chakan();break;/* 調(diào)用查看函數(shù) */case 2:add();break;/* 調(diào)用添加函數(shù) */case 3:del();break;/* 調(diào)用刪除函數(shù) */case 4:xiugai();break;/* 調(diào)用修改函數(shù) */case 0:exit(0);/* 完畢 */default:printf( 輸入錯(cuò)誤,請(qǐng)?jiān)诖溯斎?n);continue;/* 輸入不是 04 的,那么返回 */源函數(shù)代碼:void chakan()/* 查看 */ID *t;t=head;t=(ID *
19、)malloc(sizeof(ID); /* 為 t 開辟一個(gè)新單元 */ if(zhi=fopen(yihu1.txt,rb)=NULL) printf( 沒有此文件 n);elseprintf(%10s%10s%10s%10s%10s%10s%10sn,ming,xing,nian,xuehao,eng,sushe,jia);/* 輸出一個(gè)屏幕格式 */while (!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t-ming,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia); /
20、* 讀取保存的文件數(shù)據(jù)輸入 ASCLL字符: */printf(%10s%10s%10s%10d%10s%10s%10sn,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;void add()char i;/* 添加 */專業(yè)資料整理WORD格式9專業(yè)資料整理WORD格式ID *t1,*t2;t1=t2=NULL;loop:t1=(ID *)malloc(sizeof(ID);/* 為 t1 開辟一個(gè)新單元 */printf
21、( 請(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)
22、; /* 家庭地址 */ 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;/* 沒有成立那么指向下個(gè)結(jié)點(diǎn)*/t2-next=t1; getchar();printf( 是否繼續(xù)添加 (Y/N):n);scanf(%s,&i);/* 輸入 Y/N*/if(i=y|i=Y)clrscr(); goto loop;/*清屏在 循環(huán) */elseprintf( 是否保存此次添加 (Y/N)n);scanf(%s,&i);if(
23、i=y|i=Y)/* 是否要保存 */baocun();/* 調(diào)用保存 */clrscr();/* 清屏 */stubent187();/*調(diào)用屏幕函數(shù) */printf( 保存成功 );elseif(i=n|i=N)clrscr();/* 清屏 */stubent187();/* 調(diào)用屏幕函數(shù) */return ;void del()/* 刪除 */ID *A,*B;/* 定義指針 */char t,i;int xuehao;/* 定義整型變量與字符型變量*/專業(yè)資料整理WORD格式10專業(yè)資料整理WORD格式A=B=NULL;if(zhi=fopen(yihu1.txt,a+)=NULL)
24、 printf(沒有此信息文件 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%10sn,&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;else break;if (A-xuehao=xuehao)head=A-next;
25、free(*A);printf( 成功 !n);printf( 是否繼續(xù)刪除 (Y/N);scanf(%s,&i);if(i=y|i=Y)clrscr(); goto loop;if(i=n|i=N)printf( 是否保存此次刪除 (Y/N)n);scanf(%s,&i);if(i=y|i=Y)baocun();elseclrscr();stubent187();elseprintf( 無法找到此編號(hào) n);void xiugai()/* 修改 */ID *t1,*t2;/* 定義指針 */int i;char xuehao;/* 定義整型變量與字符型變量*/t1=head;if(zhi=f
26、open(yihu1.txt,a+)=NULL) printf(沒有此信息文件 n);loop:printf( 請(qǐng)輸入要修改的學(xué)號(hào):);scanf(%s,&xuehao);/* 輸入編號(hào)*/while (!feof(zhi)專業(yè)資料整理WORD格式11專業(yè)資料整理WORD格式fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t1-ming,&t1-xing,&t1-nian,&t1-xuehao,&t1-xibie,&t1-sushe,&t1-jia); * 讀取保存的文件數(shù)據(jù)輸入ASCLL字符: */if(t1!=NULL & t1-xuehao!=xueh
27、ao)t1=t1-next;else break;if (t1-xuehao=xuehao) fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,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) :);sca
28、nf(%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(); goto loop;if(i=n|i=N)printf( 是否保存此次修改 (Y/N)n);scanf(%c,&i);if(i=
29、y|i=Y)baocun();elseclrscr();/* 清屏 */stubent187();/* 調(diào)用屏幕函數(shù) */elseprintf( 沒有此編號(hào) n);return;baocun()/* 保存 */ID *t=head;/* 定義指針 */zhi=fopen(yihu1.txt,a+);/*( 讀寫 yihu.txt 文本 )*/while (t!=NULL)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t-ming,t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/* 以 zhi 為文件指針保存 */專業(yè)資料整理WORD格式12專業(yè)資料整理WORD格式t=t-next;fclose(zhi)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 攪拌站施工合同合作條件3篇
- 教育機(jī)構(gòu)學(xué)員交費(fèi)合同3篇
- 教育機(jī)構(gòu)課程顧問助理工作合同3篇
- 安徽軟件行業(yè)程序員勞動(dòng)合同范本3篇
- 捷克語(yǔ)教師簡(jiǎn)易勞動(dòng)合同3篇
- 教育圖書銷售合同
- 房屋買賣合同的撰寫要點(diǎn)3篇
- 撤訴授權(quán)書格式樣本3篇
- 擋水墻工程建筑合同范例3篇
- 提高員工滿意度方案3篇
- 醫(yī)藥行業(yè)合規(guī)培訓(xùn)
- 2024年低壓電工資格考試必考題庫(kù)及答案(共400題)
- 【MOOC】公司金融-江西財(cái)經(jīng)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 世界衛(wèi)生組織人類精液及精子-宮頸粘液相互作用實(shí)驗(yàn)室檢驗(yàn)手冊(cè)第五版
- 殯儀館鮮花采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 消化道大出血應(yīng)急預(yù)案演練
- 光伏項(xiàng)目達(dá)標(biāo)投產(chǎn)實(shí)施細(xì)則-施工
- 中國(guó)的世界文化遺產(chǎn)-英文版
- 系統(tǒng)集成售前技術(shù)年終總結(jié)
- 微信公眾號(hào)運(yùn)營(yíng)合同三篇
- 《網(wǎng)絡(luò)營(yíng)銷》試題及答案2
評(píng)論
0/150
提交評(píng)論