C語言實現學生信息管理系統_第1頁
C語言實現學生信息管理系統_第2頁
C語言實現學生信息管理系統_第3頁
C語言實現學生信息管理系統_第4頁
C語言實現學生信息管理系統_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、摘要 隨著科學技術的不斷發展,計算機領域不斷取得新的成果,并不斷地代替和延伸腦力勞動方面發揮越來越重要的作用。尤其是在學校里,要處理大量的學生數據信息,因而,學生信息管理就成為了一項尤為重要的工作。學生信息管理系統是典型的信息管理系統(MIS),本文主要通過c語言程序設計來實現簡單的學生信息管理功能,主要包括對學生信息(包括學號、姓名、性別、數學、英語、C語言、總分、平均分)進行管理,還包括學生成績的信息輸入、輸出、查詢、刪除、排序、修改、保存、統計、退出等操作.經過分析,主要采用結構體和結構體數組來建立學生信息管理系統,在設計過程中,經過不斷地修正和改進,最終形成了可以正常運行并實現所要求的

2、各項功能。關鍵字:學生信息管理;C語言;結構體;目 錄1設計目的及設計題目要求5 1.1設計目的5 1.2設計題目及要求52設計算法分析6 2.1 題目求解的理論依據6 2.2 簡要的操作流程6 2.3 系統特點73程序代碼84調試情況16結論17參考文獻18致謝19引言 學生信息管理系統是一個教育單位不可缺少的一部分,它的內容對于學校的決策者和管理者來說都是至關重要的,所以信息管理系統設計是以能夠為用戶提供充足的信息和快捷的查詢手段為核心內容的。加之,現今的學生成績管理非常繁瑣,管理人員付出大量的工作時間,得到的效率很低。為提高工作效率,減輕校方人員的工作負擔,特編寫此學生成績管理系統,以供

3、教學人員及操作者進行學生管理,方便操作者隨時添加、查詢、修改、保存、統計等。同時,也能夠提高我們對已學課程的運用能力、編程能力,提高我們程序設計思想,在我們與輔助老師交流過程中,能學習知識、吸取經驗,在技術和軟件思想上也得到鍛煉和提高,從而使總體水平上升到一個新的高度。1.設計目的及設計題目要求1.1設計目的 本課程設計的目的就是要通過一次集中的強化訓練,使學生能及時鞏固已學的知識,補充未學的但又必要的內容。進行課程設計目的在于加深對程序設計基礎中基礎理論和基本知識的理解,促進理論與實踐的結合,進一步提高程序設計的能力。具體目的如下:1使學生更深入地理解和掌握該課程中的有關基本概念,程序設計思

4、想和方法。2培養學生綜合運用所學知識獨立完成課題的能力。3培養學生勇于探索、嚴謹推理、實事求是、有錯必改,用實踐來檢驗理論,全方位考慮問題等科學技術人員應具有的素質。4提高學生對工作認真負責、一絲不茍,對同學團結友愛,協作攻關的基本素質。5培養學生從資料文獻、科學實驗中獲得知識的能力,提高學生從別人經驗中找到解決問題的新途徑的悟性,初步培養工程意識和創新能力。6對學生掌握知識的深度、運用理論去處理問題的能力、實驗能力、課程設計能力、書面及口頭表達能力進行考核。1.2課程設計題目和要求 對學生信息(包括學號、姓名、性別、數學、英語、C語言、平均分)進行管理,包括學生成績的信息輸入、輸出、查詢、顯

5、示、刪除、排序、保存、統計、退出.是高等學校教務管理的重要組成部分,學生信息包括:其內容較多,為了簡化討論,要求設計的管理系統能夠完成以下功能: (1) 每一條記錄包括一個學生的學號、姓名、性別、3門課程成績(2)、輸入功能:可以一次完成若干條記錄的輸入。(3)、顯示功能:完成全部學生記錄的顯示。(4)、查找功能:完成按姓名或學號查找學生記錄,并顯示。(5)、排序功能:按學生成績進行排序。(6)、保存功能:把學生信息以文件的形式保存。(7)、統計功能:按學生及格人數進行統計。(8)、刪除功能:按學生學號進行刪除。 (9)、應提供一個界面來調用各個功能,調用界面和各個功能的操作界面應盡可能清晰美

6、觀!2.設計算法分析2.1 題目求解的理論依據及算法1. 數據結構: struct studentchar name10;/用于輸入姓名char num10;/用于輸入學號char sex10;/性別int ying;/英語成績int shu;/數學成績int c;/C語言int zong;/總分int ping;/平均分;2. 各函數的功能和實現: 輸入模塊:輸入信息包括學生的姓名、學號、性別以及學生的成績等相關信息;可用函數void jia(Link i)來實現此操作。 顯示模塊:輸出學生的信息以及成績void xianshi(Link i);同時也可以分別來輸出成績的平均分數、總分。 排

7、序模塊:用函數void pai(Link i)來實現 查詢模塊:可用void cha(Link i)來實現??梢园磳W號或姓名來查找 刪除模塊:用函數void shan(Link i)來實現,可以按學號或姓名來實現刪除 修改功能:用函數void xiu(Link i) 來實現 保存功能:用函數void bao(Link i) 來實現 統計功能:用函數void tong(Link i)來實現退出系統:首先將信息保存到文件中,釋放動態創建的內存空間,再退出此程序。2.2 簡要的操作流程2.3 系統特點 特點:這個學生信息管理系統建立了學生信息的結構體,實現了學生信息的錄入、排序、保存、統計、修改、刪

8、除、查找等功能,并能計算學生的總分,對學生進行排序。3.程序代碼#include<stdio.h>#include<stdlib.h>#include<string.h>int wang=0;struct student char name10;/用于輸入姓名 char num10;/用于輸入學號 char sex10;/性別int ying;/英語成績int shu;/數學成績int c;/C語言int zong;/總分int ping;/平均分;typedef struct nodestruct student data;struct node *nex

9、t;Node,*Link;void wrong()printf("=>提示:輸入錯誤!請重新輸入n");void nofind()printf("=>沒有找到該學生!請檢查你的輸入!n");void xian()printf("-n");void caidan()printf("*n");printf(" 1輸入學生成績 2刪除學生成績n");printf(" 3修改學生成績 4學生成績排序n");printf(" 5保存學生成績 6查詢學生成績n&qu

10、ot;);printf(" 7統計學生成績 8顯示所有信息n");printf(" 0返回菜單n"); printf("*n");void mima()char mi10; printf("=>請輸入密碼:"); scanf("%s",mi); if(strcmp(mi,"yangfan")=0) return; else printf("=>沒有記住密碼!請重新輸入n"); mima();void shuchu()printf("

11、學號 姓名 性別 英語 數學 C語言 總分 平均分n");void shuchu1(Node *p)printf(" %s %s %s %d %d %d %d %dn",p->data.num,p->,p->data.sex,p->data.ying,p->data.shu,p->data.c,p->data.zong,p->data.ping);Node *Locate(Link i,char find,char nameornum)Node *r;if(strcmp(nameornum,&quo

12、t;num")=0)/學號查詢strcmp比較函數r=i->next;while(r!=NULL)if(strcmp(r->data.num,find)=0)return r; r=r->next;else if(strcmp(nameornum,"name")=0)r=i->next;while(r!=NULL)if(strcmp(r->,find)=0) return r; r=r->next; return 0;void jia(Link i)Node *r,*s,*p; char num10; r=i;

13、 s=i->next;while(r->next!=NULL) r=r->next;/用于指向指針的末尾while(1)/若選擇1則為此操作printf("請輸入學號(0返回上級菜單):");scanf("%s",num);if(strcmp(num,"0")=0)/如果是0返回上級菜單break;while(s)if(strcmp(r->data.num,num)=0)printf("=>提示:學號為%s的學生已經存在!n",num);xian();shuchu(); shuchu1

14、(s); xian();return; s=s->next; p=(Node *)malloc(sizeof(Node);strcpy(p->data.num,num);/將輸入的號碼復制給學生學號printf("請輸入姓名:"); scanf("%s",p->); getchar();printf("請輸入性別:"); scanf("%s",p->data.sex); getchar();printf("請輸入英語成績:");scanf("%

15、d",&p->data.ying);getchar();printf("請輸入數學成績:");scanf("%d",&p->data.shu);getchar(); printf("請輸入C語言成績:");scanf("%d",&p->data.c);getchar(); p->data.zong=p->data.ying+p->data.shu+p->data.c; p->data.ping=p->data.zong/3;p-

16、>next=NULL;r->next=p;r=p;wang=1;/用于后來的提示保存void cha(Link i)int sel;char find20;Node *p;if(!i->next)printf("=>提示:沒有資料可以查詢!n");return;printf("=>1按學號查詢n=>2按姓名查詢n");printf("=>請輸入你的選擇:"); scanf("%d",&sel);if(sel!=1&&sel!=2)wrong();ch

17、a(i);if(sel=1)printf("=>請輸入你要查詢的學號:");scanf("%s",find);p=Locate(i,find,"num");if(p)printf(" 查詢結果n");xian();shuchu();shuchu1(p); xian();elsenofind();elseprintf("=>請輸入姓名:");scanf("%s",find);p=Locate(i,find,"name");if(p)printf(

18、" 查詢結果n");xian();shuchu();shuchu1(p);xian();elsenofind();void shan(Link i)int sel; char find20; Node *p,*r;if(!i->next)printf("=>提示:沒有資料可以刪除!n");return;printf("=>1按學號刪除n=>2按姓名刪除n");printf("=>請輸入你的選擇:"); scanf("%d",&sel);if(sel!=1&a

19、mp;&sel!=2)wrong(); shan(i);if(sel=1)printf("=>輸入你要刪除的學號:"); scanf("%s",find);p=Locate(i,find,"num");xian(); shuchu(); shuchu1(p); xian();if(p)r=i;while(r->next!=p) r=r->next; r->next=p->next; free(p);printf("=>提示:該學生已經成功刪除!n");wang=1;els

20、enofind();if(sel=2)printf("=>輸入你要刪除的姓名:");scanf("%s",find);xian(); shuchu(); shuchu1(p); xian();p=Locate(i,find,"name");if(p)r=i;while(r->next!=p) r=r->next; r->next=p->next; free(p);printf("=>提示:該學生已經成功刪除!n"); wang=1; nofind();void xiu(Link

21、i)Node *p; char find20;if(!i->next)printf("=>提示:沒有資料可以修改!n"); return;printf("請輸入要修改的學號:"); scanf("%s",find);p=Locate(i,find,"num");if(p)printf("請輸入新的學號(原來學號是%s):",p->data.num);scanf("%s",p->data.num);printf("請輸入新的姓名(原來姓名是%s

22、):",p->);scanf("%s",p->);printf("請輸入新的性別(原來性別是%s):",p->data.sex);scanf("%s",p->data.sex);printf("請輸入新的英語成績(原來英語成績是%d):",p->data.ying);scanf("%d",&p->data.ying);printf("請輸入新的數學成績(原來數學成績是%d):",p-&g

23、t;data.shu);scanf("%d",&p->data.shu);printf("請輸入新的C語言成績(原來數學成績是%d):",p->data.c);scanf("%d",&p->data.c);p->data.zong=p->data.ying+p->data.shu+p->data.c;p->data.ping=p->data.zong/3;wang=1;printf("=>修改成功!n");elsewrong();void

24、xianshi(Link i)Node *p; int cout=0; p=i->next;if(!p)printf("n=>沒有資料可以顯示!n"); return;printf(" 顯示信息n");xian(); shuchu(); printf("n");while(p) shuchu1(p);p=p->next;xian(); printf("n");void bao(Link i)Node *p; FILE *fp; int flag=1,count=0;fp=fopen("s

25、.txt","wb");/利用二進制進行保存if(fp=NULL)printf("=>提示:打開文件發生錯誤!n"); exit(1);p=i->next;while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->next;count+;else flag=0;break;if(flag) printf("n-提示:文件保存成功(有%d條文件已經保存)n",count); wang=0;fclose(fp);void pai(Link i)Link ii; Node *

26、p,*rr,*s; int a; if(i->next=NULL)printf("n=>提示:沒有資料可以排序n");return; p=i->next; xian();printf("=>1按C語言排序 =>2按數學排序n=>3按英語排序 =>4按總分排序n");xian(); printf("請你選擇:"); scanf("%d",&a);switch(a)case 4: ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->

27、next=NULL; while(p!=NULL) s=(Node*)malloc(sizeof(Node);/新建節點用于保存信息 s->next=NULL; rr=ii;while(rr->next!=NULL&&rr->next->data.zong>=p->data.zong) rr=rr->next;/由大到小 if(rr->next=NULL) rr->next=s; else s->next=rr->next; rr->next=s; p=p->next; free(i); i->

28、next=ii->next; printf("n=>提示:排序已經完成!n");xianshi(i);break; case 1:ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->next=NULL; while(p!=NULL)s=(Node*)malloc(sizeof(Node);/新建節點用于保存信息 s->data=p->data;s->next=NULL; rr=ii;while(rr->next!=NULL&&rr->next->data.c>=p-&

29、gt;data.c)rr=rr->next;/由大到小if(rr->next=NULL) rr->next=s;else s->next=rr->next; rr->next=s; p=p->next; free(i); i->next=ii->next; printf("n=>提示:排序已經完成!n"); /xianshi(i); break;case 2: ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->next=NULL; while(p!=NULL)s=(Node*

30、)malloc(sizeof(Node);/新建節點用于保存信息 s->data=p->data; s->next=NULL; rr=ii;while(rr->next!=NULL&&rr->next->data.shu>=p->data.shu) rr=rr->next;/由大到小 if(rr->next=NULL)rr->next=s; else s->next=rr->next;rr->next=s; p=p->next; free(i); i->next=ii->nex

31、t;printf("n=>提示:排序已經完成!n");xianshi(i);break;case 3:ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->next=NULL; while(p!=NULL) s=(Node*)malloc(sizeof(Node);/新建節點用于保存信息 s->data=p->data; s->next=NULL; rr=ii; while(rr->next!=NULL&&rr->next->data.ying>=p->data.yin

32、g) rr=rr->next;/由大到小 if(rr->next=NULL) rr->next=s; else s->next=rr->next; rr->next=s; p=p->next; free(i); i->next=ii->next; printf("n=>提示:排序已經完成!n"); xianshi(i);break;default :wrong ();getchar();break;wang=1;void tong(Link i)Node *p; int a,b,c,n;p=i->next;i

33、f(!p)printf("=>沒有資料可以統計!n"); return; a=b=c=0; printf("請輸入分數線:"); scanf("%d",&n);while(p)if(p->data.c>=n) a+; if(p->data.shu>=n) b+;if(p->data.ying>=n) c+;p=p->next;printf(" -統計結果-n");printf(" -n");printf(" 科目 高于%d分人數n

34、",n);printf(" 英語 %dn",c);printf(" 數學 %dn",b);printf(" C語言 %dn",a);printf(" -n");printf("n");void main()Link i; FILE *fp; char jian,ch; int count=0,sel; Node *p,*r;printf(" 學生信息管理系統n"); i=(Node*)malloc(sizeof(Node);/申請空間構建節點i->next=N

35、ULL;/i這時為空 r=i;lp:fp=fopen("s.txt","rb"); if(fp=NULL)printf("=>提示:文件還不存在是否創建?(y/n)n");printf("=>請輸入你的選擇:"); scanf("%c",&jian); if(jian='Y'|jian='y')fp=fopen("s.txt","wb"); printf("=>創建成功!n");

36、 goto lp;elseexit(0); mima();printf("n=>正在導入記錄請稍后n");while(!feof(fp)p=(Node*)malloc(sizeof(Node);if(fread(p,sizeof(Node),1,fp)p->next=NULL; r->next=p; r=p;/將節點掛入連接 count+;fclose(fp);/關閉文件printf("n=>提示:記錄導入完畢,共導入%d條記錄。n",count);while(1)caidan(); printf("請選擇你的操作:"); scanf("%d",&sel);if(sel=0) if(wang=1)getchar(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論