


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、WORD格式題目:學(xué)生信息管理系統(tǒng)一、需求分析任務(wù)要求:自學(xué) C語言中有關(guān)鏈表及外部文件的內(nèi)容,設(shè)計學(xué)生信息管理系統(tǒng)。具體要求如下: 建立學(xué)生信息,信息至少包括名字、性別、年齡、學(xué)號、系別、家庭信息等內(nèi)容; 能夠提供添加、刪除和修改學(xué)生信息等功能; 能將通訊錄保存在文件中; 能夠按指定方式輸出學(xué)生信息。系統(tǒng)功能需求分析: 1、為存儲學(xué)生信息,需定義一個構(gòu)造體類型,成員名字、性別、年齡、學(xué)號、系別、家庭信息等,并建立鏈表,定義該構(gòu)造體類型的指針,用于指向各結(jié)點; 2 、分別建立具有添加、刪除、修改、查詢等功能的子函數(shù),完成相應(yīng)功能,對程序?qū)崿F(xiàn)模塊化。這其中要用到對鏈表的刪除、插入等知識。刪除時用
2、一構(gòu)造體指針指向鏈表的第一個結(jié)點, 檢查該節(jié)點的值是否等于輸入的要刪除的學(xué)號, 假設(shè)相等就刪除,不相等那么后移指針,直至表尾。插入時也要先找到相應(yīng)結(jié)點,再添加。 3、為實現(xiàn)存儲功能,需用到文件的相關(guān)函數(shù),翻開文件,將添加、修改或刪除的信息存入磁盤中。 4、為以表格的形式輸出文件,宏定義格式化輸出語句,指定輸出學(xué)專業(yè)資料整理WORD格式生信息。專業(yè)資料整理WORD格式二、概要設(shè)計系統(tǒng)總體設(shè)計框架:對程序進(jìn)展模塊化,建立添加、修改、刪除、查找和顯示功能的子函數(shù),各子函數(shù)中運用鏈表存儲數(shù)據(jù)。從主函數(shù)開場執(zhí)行,調(diào)用各個子函數(shù),并運用文件相關(guān)知識將信息存入磁盤中。系統(tǒng)功能模塊圖 :主菜單學(xué)學(xué)學(xué)學(xué)生生生生
3、形信信信象息息息查添刪添詢加除加是否保存關(guān)閉文件專業(yè)資料整理WORD格式2專業(yè)資料整理WORD格式三、詳細(xì)設(shè)計主要功能模塊的算法設(shè)計思路如下:1、查詢通訊錄信息 void chakan()( 1為開辟一個新單元( 2輸入查詢關(guān)鍵字:( 3讀取保存的文件數(shù)據(jù)輸入 ASCLL字符:( 4在鏈表中尋找相應(yīng)結(jié)點;( 5調(diào)用輸出函數(shù),輸出結(jié)點信息。2、添加信息函數(shù) void add()( 1定義指向構(gòu)造體變量的指針;( 2移動指針,找到插入結(jié)點;( 3在要插入的結(jié)點輸入信息;( 4調(diào)用保存函數(shù),翻開文件,保存輸入信息。3、刪除信息函數(shù) void del()( 1定義指向構(gòu)造體變量的指針;( 2用指針檢驗
4、鏈表中是否有記錄,假設(shè)沒記錄,返回主函數(shù);( 3根據(jù)要修改的編號查找要刪除的結(jié)點;( 4修改鏈表,刪除對應(yīng)結(jié)點。4、修改信息函數(shù) void xiugai()( 1定義指向構(gòu)造體變量的指針;( 2讀取保存的文件數(shù)據(jù)輸入 ASCLL字符:( 3用指針檢驗鏈表中是否有記錄,假設(shè)沒記錄,返回主函數(shù);( 4根據(jù)要修改的編號查找對應(yīng)結(jié)點;( 5修改信息;( 6翻開文件,保存修改記錄。5、保存信息函數(shù)baocun()1定義指向構(gòu)造體變量的指針;2用文件指針指向要讀寫的磁盤文件名,假設(shè)沒有那么新建此文件名:3用指針檢驗鏈表中是否有記錄,假設(shè)沒記錄,返回主函數(shù):4翻開文件,保存記錄:6、屏幕操作函數(shù) void
5、stubent187()1以一定格式輸出所想要的圖形:專業(yè)資料整理WORD格式3專業(yè)資料整理WORD格式四、主要源程序代碼定義變量:對整個程序定義全局變量#include stdio.h#include conio.h#define STUDENT ID/* 所有 STUDENT 都用 ID 來代替 */typedef struct node/* 定義構(gòu)造體 */char ming50;/* 名字 */char xing50;/* 性別 */char nian50;/* 年齡 */intxuehao;/* 學(xué)號 */char xibie50;/* 專業(yè) */char sushe50;/* 宿舍
6、號 */char jia50;/* 家庭地址 */struct node *next;ID;/* 學(xué)生信息變量名 */ID *head=NULL;/* 定義一個頭指針 */FILE *zhi;/* 定義一個文件指針 */主菜單界面:進(jìn)入屏幕界面的形式void stubent187()/* 屏幕格式函數(shù) */printf(*n);printf(*學(xué)生信息管理系統(tǒng)*n);printf(*n);printf(*請選擇: 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);/* 以這形式輸出各個學(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 開辟一個新單元 */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); /*
9、宿舍號 */ 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);專業(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é)生信息操作:對以存的學(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( 請輸入要刪除的學(xué)生學(xué)號 :);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( 無法找到此編號 n)
13、;修改學(xué)生信息操作: 對保存的學(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( 請輸入要修改的學(xué)號:);scanf(%s,&xuehao);/* 輸入編號*/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é)號 :);scanf(%s,&t1-xuehao);/* 學(xué)號 */專業(yè)資料整理WORD格式7專業(yè)資料整理WORD格式printf(輸 入 系 別 :);scanf(%s,&(t1-xibie);/*系 別 */printf( 輸 入 專業(yè) :);scanf(%s,&(t1-sushe);/*宿 舍號*/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( 沒有此編號 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( 輸入錯誤,請在此輸入 n);continue;/* 輸入不是 04 的,那么返回 */源函數(shù)代碼:void chakan()/* 查看 */ID *t;t=head;t=(ID *
19、)malloc(sizeof(ID); /* 為 t 開辟一個新單元 */ if(zhi=fopen(yihu1.txt,rb)=NULL) printf( 沒有此文件 n);elseprintf(%10s%10s%10s%10s%10s%10s%10sn,ming,xing,nian,xuehao,eng,sushe,jia);/* 輸出一個屏幕格式 */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);/* 以這形式輸出各個學(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 開辟一個新單元 */printf
21、( 請輸入* :);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)
22、; /* 家庭地址 */ 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(); 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( 請輸入要刪除的學(xué)生學(xué)號 :);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( 無法找到此編號 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( 請輸入要修改的學(xué)號:);scanf(%s,&xuehao);/* 輸入編號*/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é)號 :);sca
28、nf(%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(); 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( 沒有此編號 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等.壓縮文件請下載最新的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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濮陽科技職業(yè)學(xué)院《大數(shù)據(jù)統(tǒng)計模型實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 喀什大學(xué)《數(shù)字影像工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 安徽工業(yè)經(jīng)濟職業(yè)技術(shù)學(xué)院《流行音樂經(jīng)典作品分析(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 公章的管理制度
- 公司章程中內(nèi)控的內(nèi)容
- 公共交通線路調(diào)整管理制度
- 工程施工隊每周進(jìn)度計劃表格
- 頁巖磚砌體施工方案
- 【2025年二手房行業(yè)資訊:深圳周錄1812套再創(chuàng)新高】
- 江西省上饒市2024-2025學(xué)年高二上學(xué)期1月期末英語試題【含答案】
- 生活垃圾焚燒電廠鋼結(jié)構(gòu)施工方案
- (必會)企業(yè)人力資源管理師(二級)近年考試真題題庫(含答案解析)
- 2024年蘇州農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫各版本
- 殼管式換熱器設(shè)計說明書
- 頸椎病知識課件
- 上春山二部合唱鋼琴伴奏正譜
- 有夢就去追主題班會課件
- 班干部的選拔培養(yǎng)和使用
- 小學(xué)三年級下冊心理健康教案
- 市級優(yōu)質(zhì)課一等獎《誰是最可愛的人》七年級語文下冊同步備課課件(統(tǒng)編版)
- 頸源性頭痛演示課件
評論
0/150
提交評論