C語言實現(xiàn)學(xué)生信息管理系統(tǒng)_第1頁
C語言實現(xiàn)學(xué)生信息管理系統(tǒng)_第2頁
C語言實現(xiàn)學(xué)生信息管理系統(tǒng)_第3頁
C語言實現(xiàn)學(xué)生信息管理系統(tǒng)_第4頁
C語言實現(xiàn)學(xué)生信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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

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

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

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

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

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

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

8、除、查找等功能,并能計算學(xué)生的總分,對學(xué)生進行排序。3.程序代碼#include<stdio.h>#include<stdlib.h>#include<string.h>int wang=0;struct student char name10;/用于輸入姓名 char num10;/用于輸入學(xué)號 char sex10;/性別int ying;/英語成績int shu;/數(shù)學(xué)成績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("=>沒有找到該學(xué)生!請檢查你的輸入!n");void xian()printf("-n");void caidan()printf("*n");printf(" 1輸入學(xué)生成績 2刪除學(xué)生成績n");printf(" 3修改學(xué)生成績 4學(xué)生成績排序n");printf(" 5保存學(xué)生成績 6查詢學(xué)生成績n&qu

10、ot;);printf(" 7統(tǒng)計學(xué)生成績 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、學(xué)號 姓名 性別 英語 數(shù)學(xué) 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)/學(xué)號查詢strcmp比較函數(shù)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("請輸入學(xué)號(0返回上級菜單):");scanf("%s",num);if(strcmp(num,"0")=0)/如果是0返回上級菜單break;while(s)if(strcmp(r->data.num,num)=0)printf("=>提示:學(xué)號為%s的學(xué)生已經(jīng)存在!n",num);xian();shuchu(); shuchu1

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

15、d",&p->data.ying);getchar();printf("請輸入數(shù)學(xué)成績:");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按學(xué)號查詢n=>2按姓名查詢n");printf("=>請輸入你的選擇:"); scanf("%d",&sel);if(sel!=1&&sel!=2)wrong();ch

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

18、" 查詢結(jié)果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按學(xué)號刪除n=>2按姓名刪除n");printf("=>請輸入你的選擇:"); scanf("%d",&sel);if(sel!=1&a

19、mp;&sel!=2)wrong(); shan(i);if(sel=1)printf("=>輸入你要刪除的學(xué)號:"); 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("=>提示:該學(xué)生已經(jīng)成功刪除!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("=>提示:該學(xué)生已經(jīng)成功刪除!n"); wang=1; nofind();void xiu(Link

21、i)Node *p; char find20;if(!i->next)printf("=>提示:沒有資料可以修改!n"); return;printf("請輸入要修改的學(xué)號:"); scanf("%s",find);p=Locate(i,find,"num");if(p)printf("請輸入新的學(xué)號(原來學(xué)號是%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("請輸入新的數(shù)學(xué)成績(原來數(shù)學(xué)成績是%d):",p-&g

23、t;data.shu);scanf("%d",&p->data.shu);printf("請輸入新的C語言成績(原來數(shù)學(xué)成績是%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("=>提示:打開文件發(fā)生錯誤!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條文件已經(jīng)保存)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按數(shù)學(xué)排序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);/新建節(jié)點用于保存信息 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=>提示:排序已經(jīng)完成!n");xianshi(i);break; case 1:ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->next=NULL; while(p!=NULL)s=(Node*)malloc(sizeof(Node);/新建節(jié)點用于保存信息 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=>提示:排序已經(jīng)完成!n"); /xianshi(i); break;case 2: ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->next=NULL; while(p!=NULL)s=(Node*

30、)malloc(sizeof(Node);/新建節(jié)點用于保存信息 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=>提示:排序已經(jīng)完成!n");xianshi(i);break;case 3:ii=(Link)malloc(sizeof(Node);/用于做新的鏈表 ii->next=NULL; while(p!=NULL) s=(Node*)malloc(sizeof(Node);/新建節(jié)點用于保存信息 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=>提示:排序已經(jīng)完成!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("=>沒有資料可以統(tǒng)計!n"); return; a=b=c=0; printf("請輸入分?jǐn)?shù)線:"); 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(" -統(tǒng)計結(jié)果-n");printf(" -n");printf(" 科目 高于%d分人數(shù)n

34、",n);printf(" 英語 %dn",c);printf(" 數(shù)學(xué) %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(" 學(xué)生信息管理系統(tǒng)n"); i=(Node*)malloc(sizeof(Node);/申請空間構(gòu)建節(jié)點i->next=N

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

36、 goto lp;elseexit(0); mima();printf("n=>正在導(dǎo)入記錄請稍后n");while(!feof(fp)p=(Node*)malloc(sizeof(Node);if(fread(p,sizeof(Node),1,fp)p->next=NULL; r->next=p; r=p;/將節(jié)點掛入連接 count+;fclose(fp);/關(guān)閉文件printf("n=>提示:記錄導(dǎo)入完畢,共導(dǎo)入%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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論