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

下載本文檔

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

文檔簡(jiǎn)介

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

2、各項(xiàng)功能。關(guān)鍵字:學(xué)生信息管理;C語(yǔ)言;結(jié)構(gòu)體;目 錄1設(shè)計(jì)目的及設(shè)計(jì)題目要求5 1.1設(shè)計(jì)目的5 1.2設(shè)計(jì)題目及要求52設(shè)計(jì)算法分析6 2.1 題目求解的理論依據(jù)6 2.2 簡(jiǎn)要的操作流程6 2.3 系統(tǒng)特點(diǎn)73程序代碼84調(diào)試情況16結(jié)論17參考文獻(xiàn)18致謝19引言 學(xué)生信息管理系統(tǒng)是一個(gè)教育單位不可缺少的一部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都是至關(guān)重要的,所以信息管理系統(tǒng)設(shè)計(jì)是以能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄螢楹诵膬?nèi)容的。加之,現(xiàn)今的學(xué)生成績(jī)管理非常繁瑣,管理人員付出大量的工作時(shí)間,得到的效率很低。為提高工作效率,減輕校方人員的工作負(fù)擔(dān),特編寫(xiě)此學(xué)生成績(jī)管理系統(tǒng),以供

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

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

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

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

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

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

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

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

11、學(xué)號(hào) 姓名 性別 英語(yǔ) 數(shù)學(xué) C語(yǔ)言 總分 平均分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é)號(hào)查詢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("請(qǐng)輸入學(xué)號(hào)(0返回上級(jí)菜單):");scanf("%s",num);if(strcmp(num,"0")=0)/如果是0返回上級(jí)菜單break;while(s)if(strcmp(r->data.num,num)=0)printf("=>提示:學(xué)號(hào)為%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);/將輸入的號(hào)碼復(fù)制給學(xué)生學(xué)號(hào)printf("請(qǐng)輸入姓名:"); scanf("%s",p->); getchar();printf("請(qǐng)輸入性別:"); scanf("%s",p->data.sex); getchar();printf("請(qǐng)輸入英語(yǔ)成績(jī):");scanf("%

15、d",&p->data.ying);getchar();printf("請(qǐng)輸入數(shù)學(xué)成績(jī):");scanf("%d",&p->data.shu);getchar(); printf("請(qǐng)輸入C語(yǔ)言成績(jī):");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;/用于后來(lái)的提示保存void cha(Link i)int sel;char find20;Node *p;if(!i->next)printf("=>提示:沒(méi)有資料可以查詢!n");return;printf("=>1按學(xué)號(hào)查詢n=>2按姓名查詢n");printf("=>請(qǐng)輸入你的選擇:"); scanf("%d",&sel);if(sel!=1&&sel!=2)wrong();ch

17、a(i);if(sel=1)printf("=>請(qǐng)輸入你要查詢的學(xué)號(hào):");scanf("%s",find);p=Locate(i,find,"num");if(p)printf(" 查詢結(jié)果n");xian();shuchu();shuchu1(p); xian();elsenofind();elseprintf("=>請(qǐng)輸入姓名:");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("=>提示:沒(méi)有資料可以刪除!n");return;printf("=>1按學(xué)號(hào)刪除n=>2按姓名刪除n");printf("=>請(qǐng)輸入你的選擇:"); scanf("%d",&sel);if(sel!=1&a

19、mp;&sel!=2)wrong(); shan(i);if(sel=1)printf("=>輸入你要?jiǎng)h除的學(xué)號(hào):"); 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("=>輸入你要?jiǎng)h除的姓名:");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("=>提示:沒(méi)有資料可以修改!n"); return;printf("請(qǐng)輸入要修改的學(xué)號(hào):"); scanf("%s",find);p=Locate(i,find,"num");if(p)printf("請(qǐng)輸入新的學(xué)號(hào)(原來(lái)學(xué)號(hào)是%s):",p->data.num);scanf("%s",p->data.num);printf("請(qǐng)輸入新的姓名(原來(lái)姓名是%s

22、):",p->);scanf("%s",p->);printf("請(qǐng)輸入新的性別(原來(lái)性別是%s):",p->data.sex);scanf("%s",p->data.sex);printf("請(qǐng)輸入新的英語(yǔ)成績(jī)(原來(lái)英語(yǔ)成績(jī)是%d):",p->data.ying);scanf("%d",&p->data.ying);printf("請(qǐng)輸入新的數(shù)學(xué)成績(jī)(原來(lái)數(shù)學(xué)成績(jī)是%d):",p-&g

23、t;data.shu);scanf("%d",&p->data.shu);printf("請(qǐng)輸入新的C語(yǔ)言成績(jī)(原來(lái)數(shù)學(xué)成績(jī)是%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=>沒(méi)有資料可以顯示!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");/利用二進(jìn)制進(jìn)行保存if(fp=NULL)printf("=>提示:打開(kāi)文件發(fā)生錯(cuò)誤!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=>提示:沒(méi)有資料可以排序n");return; p=i->next; xian();printf("=>1按C語(yǔ)言排序 =>2按數(shù)學(xué)排序n=>3按英語(yǔ)排序 =>4按總分排序n");xian(); printf("請(qǐng)你選擇:"); 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é)點(diǎn)用于保存信息 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é)點(diǎn)用于保存信息 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é)點(diǎn)用于保存信息 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é)點(diǎn)用于保存信息 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("=>沒(méi)有資料可以統(tǒng)計(jì)!n"); return; a=b=c=0; printf("請(qǐng)輸入分?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)計(jì)結(jié)果-n");printf(" -n");printf(" 科目 高于%d分人數(shù)n

34、",n);printf(" 英語(yǔ) %dn",c);printf(" 數(shù)學(xué) %dn",b);printf(" C語(yǔ)言 %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);/申請(qǐng)空間構(gòu)建節(jié)點(diǎn)i->next=N

35、ULL;/i這時(shí)為空 r=i;lp:fp=fopen("s.txt","rb"); if(fp=NULL)printf("=>提示:文件還不存在是否創(chuàng)建?(y/n)n");printf("=>請(qǐng)輸入你的選擇:"); 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)入記錄請(qǐng)稍后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é)點(diǎn)掛入連接 count+;fclose(fp);/關(guān)閉文件printf("n=>提示:記錄導(dǎo)入完畢,共導(dǎo)入%d條記錄。n",count);while(1)caidan(); printf("請(qǐng)選擇你的操作:"); scanf("%d",&sel);if(sel=0) if(wang=1)getchar(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論