c語言課程設計報告---學生信息管理系統(tǒng)_第1頁
c語言課程設計報告---學生信息管理系統(tǒng)_第2頁
c語言課程設計報告---學生信息管理系統(tǒng)_第3頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、WORD格式題目:學生信息管理系統(tǒng)一、需求分析任務要求:自學 C語言中有關鏈表及外部文件的內容,設計學生信息管理系統(tǒng)。具體要求如下: 建立學生信息,信息至少包括名字、性別、年齡、學號、系別、家庭信息等內容; 能夠提供添加、刪除和修改學生信息等功能; 能將通訊錄保存在文件中; 能夠按指定方式輸出學生信息。系統(tǒng)功能需求分析: 1、為存儲學生信息,需定義一個構造體類型,成員名字、性別、年齡、學號、系別、家庭信息等,并建立鏈表,定義該構造體類型的指針,用于指向各結點; 2 、分別建立具有添加、刪除、修改、查詢等功能的子函數(shù),完成相應功能,對程序實現(xiàn)模塊化。這其中要用到對鏈表的刪除、插入等知識。刪除時用

2、一構造體指針指向鏈表的第一個結點, 檢查該節(jié)點的值是否等于輸入的要刪除的學號, 假設相等就刪除,不相等那么后移指針,直至表尾。插入時也要先找到相應結點,再添加。 3、為實現(xiàn)存儲功能,需用到文件的相關函數(shù),翻開文件,將添加、修改或刪除的信息存入磁盤中。 4、為以表格的形式輸出文件,宏定義格式化輸出語句,指定輸出學專業(yè)資料整理WORD格式生信息。專業(yè)資料整理WORD格式二、概要設計系統(tǒng)總體設計框架:對程序進展模塊化,建立添加、修改、刪除、查找和顯示功能的子函數(shù),各子函數(shù)中運用鏈表存儲數(shù)據(jù)。從主函數(shù)開場執(zhí)行,調用各個子函數(shù),并運用文件相關知識將信息存入磁盤中。系統(tǒng)功能模塊圖 :主菜單學學學學生生生生

3、形信信信象息息息查添刪添詢加除加是否保存關閉文件專業(yè)資料整理WORD格式2專業(yè)資料整理WORD格式三、詳細設計主要功能模塊的算法設計思路如下:1、查詢通訊錄信息 void chakan()( 1為開辟一個新單元( 2輸入查詢關鍵字:( 3讀取保存的文件數(shù)據(jù)輸入 ASCLL字符:( 4在鏈表中尋找相應結點;( 5調用輸出函數(shù),輸出結點信息。2、添加信息函數(shù) void add()( 1定義指向構造體變量的指針;( 2移動指針,找到插入結點;( 3在要插入的結點輸入信息;( 4調用保存函數(shù),翻開文件,保存輸入信息。3、刪除信息函數(shù) void del()( 1定義指向構造體變量的指針;( 2用指針檢驗

4、鏈表中是否有記錄,假設沒記錄,返回主函數(shù);( 3根據(jù)要修改的編號查找要刪除的結點;( 4修改鏈表,刪除對應結點。4、修改信息函數(shù) void xiugai()( 1定義指向構造體變量的指針;( 2讀取保存的文件數(shù)據(jù)輸入 ASCLL字符:( 3用指針檢驗鏈表中是否有記錄,假設沒記錄,返回主函數(shù);( 4根據(jù)要修改的編號查找對應結點;( 5修改信息;( 6翻開文件,保存修改記錄。5、保存信息函數(shù)baocun()1定義指向構造體變量的指針;2用文件指針指向要讀寫的磁盤文件名,假設沒有那么新建此文件名:3用指針檢驗鏈表中是否有記錄,假設沒記錄,返回主函數(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/* 定義構造體 */char ming50;/* 名字 */char xing50;/* 性別 */char nian50;/* 年齡 */intxuehao;/* 學號 */char xibie50;/* 專業(yè) */char sushe50;/* 宿舍

6、號 */char jia50;/* 家庭地址 */struct node *next;ID;/* 學生信息變量名 */ID *head=NULL;/* 定義一個頭指針 */FILE *zhi;/* 定義一個文件指針 */主菜單界面:進入屏幕界面的形式void stubent187()/* 屏幕格式函數(shù) */printf(*n);printf(*學生信息管理系統(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);/* 以這形式輸出各個學生信息*/t-next=(ID *)malloc(sizeof(ID);t=t-next;添加學生信息記錄: 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( 請輸入學號 :);scanf(%d,&(t1-xuehao);/*學號*/printf( 請輸入系別 :);scanf(%s,&(t1-xibie);/* 系別 */printf( 請輸入宿舍號 :);scanf(%s,&(t1-sushe); /*

9、宿舍號 */ printf( 請輸入家庭地址 :);scanf(%s,&(t1-jia); /* 家庭地址 */ t1-next=NULL;if (head=NULL)/* 如果頭結點為空 */head=t1;/*t1 指向頭結點 */t2=t1;else t2=head;while (t2-next!=NULL) t2=t2-next;/* 沒有成立那么指向下個結點 */ 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();/* 調用保存 */clrscr();/* 清屏 */stubent187();/*調用屏幕函數(shù) */printf( 保存成功 );elseif(i=n|i=N)clrscr();/* 清屏 */stubent187();/* 調用屏幕函數(shù) */return ;刪除學生信息操作:對以存的學生信息進展刪除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( 請輸入要刪除的學生學號 :);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、;修改學生信息操作: 對保存的學生信息進展修改void xiugai()/* 修改 */ID *t1,*t2;/* 定義指針 */int i;char xuehao;/* 定義整型變量與字符型變量*/t1=head;if(zhi=fopen(yihu1.txt,a+)=NULL) printf(沒有此信息文件 n);loop:printf( 請輸入要修改的學號:);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( 輸入學號 :);scanf(%s,&t1-xuehao);/* 學號 */專業(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();/* 調用屏幕函數(shù) */elseprintf( 沒有此編號 n);return;保存添加,刪除,修改學生的信息:操作過后是否保存 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); /* 關閉此文件 */ printf( 成功! n);return ;主菜單操作:選擇所需要的操作main()/* 主函數(shù) */int i;/* 定義整形變量 i*/stubent187();/* 調用屏幕函數(shù) */專業(yè)資料整理WORD格式8專業(yè)資料整理WORD格式whi

18、le(1)scanf(%d,&i);/* 輸入要執(zhí)行的操作 */switch(i)case 1:chakan();break;/* 調用查看函數(shù) */case 2:add();break;/* 調用添加函數(shù) */case 3:del();break;/* 調用刪除函數(shù) */case 4:xiugai();break;/* 調用修改函數(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);/* 以這形式輸出各個學生信息*/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( 請輸入學號 :);scanf(%d,&(t1-xuehao);/*學號*/printf( 請輸入系別 :);scanf(%s,&(t1-xibie);/* 系別 */printf( 請輸入宿舍號 :);scanf(%s,&(t1-sushe); /* 宿舍號 */ printf( 請輸入家庭地址 :);scanf(%s,&(t1-jia)

22、; /* 家庭地址 */ t1-next=NULL;if (head=NULL)/* 如果頭結點為空 */head=t1;/*t1 指向頭結點 */t2=t1;else t2=head;while (t2-next!=NULL) t2=t2-next;/* 沒有成立那么指向下個結點*/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();/* 調用保存 */clrscr();/* 清屏 */stubent187();/*調用屏幕函數(shù) */printf( 保存成功 );elseif(i=n|i=N)clrscr();/* 清屏 */stubent187();/* 調用屏幕函數(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( 請輸入要刪除的學生學號 :);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( 請輸入要修改的學號:);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( 輸入學號 :);sca

28、nf(%s,&t1-xuehao);/* 學號 */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();/* 調用屏幕函數(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論