版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 學(xué)生成績管理系統(tǒng)</b></p><p> 課題設(shè)計(jì)的目的與要求</p><p> 通過軟件開發(fā)的實(shí)際操作,進(jìn)一步掌握數(shù)據(jù)庫的開發(fā)和應(yīng)用,提高數(shù)據(jù)庫的實(shí)用性,培養(yǎng)的工程的設(shè)計(jì)分析能力</p><p><b> 具體如下:</b></p><p> 學(xué)習(xí)和實(shí)踐在分
2、析和設(shè)計(jì)計(jì)算機(jī)應(yīng)用系統(tǒng)所需要的知識(shí),包括面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì),編碼和測(cè)試方面的知識(shí);</p><p> 進(jìn)一步加強(qiáng)和提高軟件工程文檔的編寫能力;</p><p><b> 設(shè)計(jì)正文</b></p><p><b> 1、 系統(tǒng)需求分析</b></p><p> 學(xué)生成績管理系統(tǒng)主要滿足來
3、自三方面的需求,這三個(gè)方面分別是學(xué)生用戶、 教師用戶和管理員用戶。</p><p> ?。?)學(xué)生用戶是主要的需求者。主要的需求功能是查詢成績,查看是否補(bǔ)考, 重修,學(xué)分等。</p><p> ?。?)教師用戶的主要需求功能是登記、查詢和修改學(xué)生成績。</p><p> ?。?)管理員用戶的功能需求比較復(fù)雜,包括對(duì)學(xué)生信息、教師信息、成績
4、信息 進(jìn)行管理。在學(xué)生信息管理子模塊中,實(shí)現(xiàn)對(duì)學(xué)生信息的添加、修改、刪除操作, 還可以輸入查詢條件進(jìn)行查詢操作。在教師管理子模塊中,實(shí)現(xiàn)對(duì)教師信息的添加、 修改、刪除等操作。對(duì)其他信息子模塊中,要實(shí)現(xiàn)編輯院系信息,編輯班級(jí)信息, 編輯課程信息。</p><p> 在這個(gè)系統(tǒng)中將管理員用戶,教師用戶,學(xué)生用戶的權(quán)限進(jìn)行嚴(yán)格的劃分,管 理員擁有最高的權(quán)限,可以查看、維護(hù)系統(tǒng)中的所有信息
5、,比如,添加,修改學(xué)生 信息。而修改密碼的權(quán)限是每個(gè)用戶都有的,用以修改自己的密碼信息。通過進(jìn)行 嚴(yán)格的權(quán)限劃分,可以更好地進(jìn)行管理,也可更好地保護(hù)用戶信息安全。</p><p><b> 數(shù)據(jù)詞典</b></p><p> 數(shù)據(jù)流編號(hào):S001</p><p> 數(shù)據(jù)流名稱:管理員登陸信息</p><p&
6、gt;<b> 簡稱:管理員信息</b></p><p><b> 數(shù)據(jù)流來源:管理員</b></p><p> 數(shù)據(jù)流去向:學(xué)生成績管理系統(tǒng)</p><p> 數(shù)據(jù)流組成:管理員賬號(hào)和密碼</p><p> 數(shù)據(jù)流量;100/天</p><p> 高峰流量:50
7、0/天</p><p> 數(shù)據(jù)流編號(hào):S002</p><p> 數(shù)據(jù)流名稱: 教師登陸信息</p><p><b> 簡稱: 教師信息</b></p><p><b> 數(shù)據(jù)流來源: 教師</b></p><p> 數(shù)據(jù)流去向:學(xué)生成績管理系統(tǒng)</p>
8、<p> 數(shù)據(jù)流組成: 教師姓名,編號(hào)、院系</p><p> 數(shù)據(jù)流量;1000/天</p><p> 高峰流量:10000/天</p><p> 數(shù)據(jù)流編號(hào):S003</p><p> 數(shù)據(jù)流名稱:學(xué)生成績查詢信息</p><p><b> 簡稱: 學(xué)生成績</b>&
9、lt;/p><p><b> 數(shù)據(jù)流來源: 學(xué)生</b></p><p> 數(shù)據(jù)流去向: 學(xué)生成績管理系統(tǒng)</p><p> 數(shù)據(jù)流組成: 學(xué)生姓名、學(xué)號(hào)、成績、課程</p><p> 數(shù)據(jù)流量;1000/天</p><p> 高峰流量:10000/天</p><p>
10、; 2. 系統(tǒng)總體設(shè)計(jì)</p><p> 2.1 設(shè)計(jì)問題域子系統(tǒng)</p><p> 學(xué)生成績管理系統(tǒng)時(shí)用于學(xué)生查詢成績,老師登記成績和管理員維護(hù)信息的一個(gè)平 臺(tái)。整個(gè)學(xué)生成績管理系統(tǒng)分為學(xué)生模塊,教師模塊,管理員模塊和公共模塊四個(gè)模塊。 以下是學(xué)生成績管理系統(tǒng)的總設(shè)計(jì)圖和各模塊的說明</p><p><b> 總體設(shè)計(jì)圖<
11、/b></p><p><b> ?。?)各模塊功能</b></p><p><b> 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p> 學(xué)生成績管理系統(tǒng)是實(shí)現(xiàn)學(xué)生查詢成績,教師登記成績,管理員維護(hù)信息的平臺(tái)。 整個(gè)學(xué)生成績管理系統(tǒng)分為學(xué)生模塊,教師模塊,管理員模塊和公共模塊四個(gè)模塊。</p><
12、;p><b> 數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 4.1 概念模型設(shè)計(jì)</p><p> 由前面的需求分析得到實(shí)體主要有3個(gè):教師、學(xué)生、管理員、課程、成績</p><p> 教師屬性:姓名、編號(hào)、院系、</p><p> 學(xué)生屬性:姓名、學(xué)號(hào)、院系、班級(jí)</p><p>
13、管理員屬性:姓名、編號(hào)</p><p> 課程屬性:課程名稱、課程編號(hào)、授課教師</p><p> 成績屬性:課程名稱、學(xué)生姓名、教師姓名、成績</p><p> (1)教師與課程的關(guān)系</p><p> 教師與課程的關(guān)系是n﹕m,一個(gè)教師可以教多個(gè)課程,一個(gè)課程可以由多個(gè)教師教</p><p> ?。?)教師
14、與學(xué)生的關(guān)系</p><p> 教師與學(xué)生的關(guān)系是n﹕m,一個(gè)教師可以教多個(gè)學(xué)生,一個(gè)學(xué)生由多個(gè)老師教</p><p> (3)學(xué)生與課程的關(guān)系</p><p> 學(xué)生與課程的關(guān)系是n﹕m,一個(gè)學(xué)生可以有多個(gè)課程,一個(gè)課可以有多個(gè)學(xué)生上</p><p> (4)學(xué)生與成績的關(guān)系n﹕m</p><p><b
15、> 4.2邏輯結(jié)構(gòu)設(shè)計(jì)</b></p><p> ?、賹-R圖轉(zhuǎn)化為關(guān)系模型:</p><p> 管理員(姓名、編號(hào))</p><p> 學(xué)生(姓名、學(xué)號(hào)、院系、班級(jí) )</p><p> 教師(姓名、編號(hào)、院系)</p><p> 課程(課程名稱、課程編號(hào)、授課老師)</p>
16、<p> 成績(課程名稱、學(xué)生姓名、老師姓名、成績)</p><p><b> ②數(shù)據(jù)表設(shè)計(jì)</b></p><p> ?、?學(xué)生表Student的詳細(xì)數(shù)據(jù)字段</p><p> ?、?教師表Teacher的詳細(xì)數(shù)據(jù)字段</p><p> ?、?課程表Course的詳細(xì)數(shù)據(jù)字段</p>&
17、lt;p> ④ 成績表Score的詳細(xì)數(shù)據(jù)字段</p><p> ?、?管理員表User的詳細(xì)數(shù)據(jù)字段</p><p> 4.3 物理結(jié)構(gòu)設(shè)計(jì)</p><p><b> 5系統(tǒng)編碼</b></p><p> #include <stdio.h></p><p> #in
18、clude <stdlib.h></p><p> #include <malloc.h></p><p> #define LEN sizeof(Student)</p><p> #define NULL 0</p><p> typedef struct student</p><p&
19、gt;<b> {</b></p><p> int num; /*學(xué)號(hào)*/</p><p> char name[20]; /*姓名*/</p><p> int score[3]; /*成績*/</p><p> struct student *next;</p><p><b
20、> }Student;</b></p><p> int n; /*聲明一個(gè)全局變量*/</p><p> Student *cin(void); </p><p> Student *sort_1(Student *head,int); /*聲明按學(xué)號(hào)排序函數(shù)*/</p><p> void print(Stud
21、ent *head); /*聲明顯示函數(shù)*/</p><p> Student *sort_all(Student *head); /*聲明排序函數(shù)*/</p><p> void find(Student *head); /*聲明查詢函數(shù)*/</p><p> Student *add_new(Student *head);</p><p
22、> Student *cin()</p><p><b> {</b></p><p> int flag; </p><p> Student *head,*p1,*p2;</p><p><b> n=0;</b></p><p> head=(Stud
23、ent *)malloc(LEN);</p><p><b> p2=head;</b></p><p> printf("\n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),學(xué)號(hào)為0表示結(jié)束輸入:",n+1); </p><p> scanf("%d",&flag);</p><p>
24、 while(getchar()!='\n');</p><p> for(;flag;) /*輸入每個(gè)學(xué)生的信息*/</p><p><b> {</b></p><p><b> n++;</b></p><p> p1=(Student *)malloc(LEN);&l
25、t;/p><p> p1->num=flag;</p><p> printf("請(qǐng)輸入第%d名學(xué)生的姓名:",n); /*輸入姓名*/</p><p> scanf("%s",p1->name); </p><p> printf("請(qǐng)輸入第%d名學(xué)生的成績:",n
26、); /*輸入成績*/</p><p> scanf("%d",&p1->score[0]);</p><p> p1->sum=p1->score[0]+p1->score[1]+p1->score[2];</p><p> p2->next=p1;</p><p>&l
27、t;b> p2=p1;</b></p><p> printf("\n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào),沒有此學(xué)生則輸入0表示結(jié)束:",n+1); </p><p> scanf("%d",&flag);</p><p><b> }</b></p><p&g
28、t; p2->next=NULL;</p><p> printf("\n\n");</p><p> return head;</p><p><b> }</b></p><p> Student *sort_all(Student *head) /*定義排序函數(shù)*/</p&
29、gt;<p><b> {</b></p><p> int choose;</p><p><b> for(;;) </b></p><p><b> {</b></p><p> printf("\n\t\t# # # # # 學(xué)生成績統(tǒng)
30、計(jì)排序 # # # #\n");</p><p> printf("\t\t#\t1.按學(xué)生學(xué)號(hào)排序\t #\n");</p><p> printf("\t\t#\t8.顯示當(dāng)前學(xué)生成績\t #\n");</p><p> printf("\t\t#\t0.返回上一級(jí)菜單\t #\n");
31、</p><p> printf("請(qǐng)輸入你要執(zhí)行的操作:");</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> switch(choose)</p><p
32、><b> {</b></p><p><b> case 1:</b></p><p><b> case 2:</b></p><p><b> case 3:</b></p><p> case 4:head=sort_1(head,
33、choose);break;</p><p> case 5:print(head);sort_2(head);break;</p><p> case 6:print(head);break;</p><p> case 0:return head;</p><p><b> }</b></p>
34、<p><b> }</b></p><p><b> }</b></p><p> Student *sort_1(Student *head,int choose) /*定義按學(xué)號(hào)排序函數(shù)*/</p><p><b> {</b></p><p> St
35、udent *p1,*p2=head->next,*pm,*px;</p><p> Student mid;</p><p> if (!p2) return head;</p><p> for(p1=p2;p1->next!=NULL;p1=p1->next)</p><p><b> {</b
36、></p><p><b> pm=p1;</b></p><p> for(p2=p1->next;p2!=NULL;p2=p2->next)</p><p> switch(choose)</p><p><b> {</b></p><p>
37、 case 1:if (pm->num>p2->num) pm=p2;break;</p><p> case 2:if (pm->sum<p2->sum) pm=p2;break;</p><p> case 3:if (pm->score[0]<p2->score[0]) pm=p2;break;</p><
38、p> case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;</p><p> case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;</p><p><b> }</b></p><p> if (pm
39、!=p1)</p><p><b> {</b></p><p><b> mid=*pm;</b></p><p><b> *pm=*p1;</b></p><p><b> *p1=mid;</b></p><p>
40、 px=pm->next;</p><p> pm->next=p1->next;</p><p> p1->next=px;</p><p><b> }</b></p><p><b> }</b></p><p> printf(&qu
41、ot;\n排序后的成績表為:\n");</p><p> print(head); </p><p> return head;</p><p><b> }</b></p><p> void find(Student *head) /*定義查詢函數(shù)*/</p><p><
42、;b> {</b></p><p> Student *p;</p><p> int choose,fnum;</p><p> char tem[20];</p><p> if (n==0) {printf("\n當(dāng)前系統(tǒng)沒有任何學(xué)生數(shù)據(jù)!\n ");return;}</p>
43、<p><b> for(;;)</b></p><p><b> {</b></p><p> printf("\n請(qǐng)輸入您要查詢學(xué)生的方式:\n\n");</p><p> printf("1、按學(xué)號(hào)查詢;2、按姓名查詢;0、我不查詢了。\n\n");<
44、/p><p> printf("請(qǐng)選擇:");</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> if (choose==1) </p><p><b&
45、gt; {</b></p><p> printf("\n請(qǐng)輸入你要查詢的學(xué)生的學(xué)號(hào),輸入0退出學(xué)號(hào)查詢:");</p><p> scanf("%d",&fnum);</p><p> for(;fnum;)</p><p><b> {</b>&l
46、t;/p><p> for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);</p><p><b> if (!p) </b></p><p> printf("\n學(xué)號(hào)為%d學(xué)生的數(shù)據(jù)為:\n",p->num);</p>
47、<p> printf("學(xué)號(hào)\t姓名\t成績 總分\n");/*輸出所有的學(xué)生信息*/</p><p> printf("%d\t%s\t%s\t %d %d %d %d\n",p->num,</p><p> p->name,p->sex ,p->score[0],p->score[1],p->
48、score[2],p->sum);</p><p> printf("\n\n請(qǐng)輸入你還要查詢的學(xué)生的學(xué)號(hào),輸入0表示不按學(xué)號(hào)查詢了:");</p><p> scanf("%d",&fnum);</p><p><b> }</b></p><p><b
49、> }</b></p><p><b> } </b></p><p> else if (choose==2)</p><p><b> {</b></p><p> printf("\n請(qǐng)輸入你要查詢的學(xué)生的姓名,輸入0退出姓名查詢:");<
50、/p><p> scanf("%s",tem); </p><p> for(;strcmp(tem,"0");)</p><p><b> {</b></p><p> for(p=head->next;p!=NULL&&strcmp(p->nam
51、e,tem);p=p->next);</p><p><b> if (!p)</b></p><p><b> }</b></p><p><b> } </b></p><p> else if (choose==0) {printf("\n你選擇了
52、不查詢!\n");break;}</p><p> else {printf("\n你以其他方式選擇了不查詢!\n");break;}</p><p><b> }</b></p><p><b> }</b></p><p> printf("***
53、***********************學(xué)生成績統(tǒng)計(jì)一覽************************\</p><p> *****\n");</p><p> printf("學(xué)號(hào)\t姓名\成績 總分\n");</p><p> for(;p;p=p->next)</p><p> pr
54、intf("%d\t%s\t%s\t %d %d %d %d\n",</p><p> p->num,p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->sum=p->score[0]+p->score[1]+p->score[2]); </p><p&g
55、t;<b> }</b></p><p> struct student *del(struct student *head,long num) /*定義刪除學(xué)生信息函數(shù)*/</p><p> {struct student *p1,*p2;</p><p> if(head==NULL) {printf("\nlist nu
56、ll! \n");return head;}</p><p><b> p1=head;</b></p><p> while(num!=p1->num && p1->next!=NULL)</p><p> {p2=p1;p1=p1->next;}</p><p>
57、if(num==p1->num)</p><p> {if(p1==head)head=p1->next;</p><p> else p2->next=p1->next;</p><p> printf("delete:%ld\n",num);</p><p><b> n=n-
58、1;</b></p><p><b> }</b></p><p> else printf("%ld not deen found! \n",num);</p><p> return(head);</p><p><b> }</b></p>
59、<p> int main()/*主函數(shù)即用戶的操作界面*/</p><p><b> {</b></p><p> Student *head;</p><p> int choose,i,num; /*聲明局部變量*/</p><p> head=(Student *)malloc(LEN);&
60、lt;/p><p> head->next=NULL; </p><p><b> for(;;)</b></p><p><b> {</b></p><p> printf("\n\t\t* * * * * 學(xué)生成績管理系統(tǒng) * * * *\n"); /*學(xué)生成績管
61、理系統(tǒng)*/</p><p> printf("\t\t*\t3.查詢學(xué)生數(shù)據(jù)\t\t *\n"); /*.查詢學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t4.插入學(xué)生數(shù)據(jù)\t\t *\n"); /*插入學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t5.顯示當(dāng)前成績表\t *\n
62、"); /*顯示當(dāng)前成績表*/</p><p> printf("\t\t*\t6.刪除學(xué)生數(shù)據(jù)\t\t *\n"); /*刪除學(xué)生數(shù)據(jù)*/</p><p> printf("\t\t*\t0.退出成績管理系統(tǒng)\t *\n"); /*退出成績管理系統(tǒng)*/</p><p> printf("\n請(qǐng)輸入你
63、要執(zhí)行的操作:"); /*請(qǐng)輸入你要執(zhí)行的操作*/</p><p> scanf("%d",&choose);</p><p> while(getchar()!='\n');</p><p> switch(choose)</p><p><b> }</b>
64、;</p><p><b> }</b></p><p><b> } </b></p><p><b> 6. 系統(tǒng)測(cè)試</b></p><p> 在系統(tǒng)測(cè)試中,我們首先對(duì)各個(gè)子模塊進(jìn)行單元測(cè)試,先判斷每個(gè)子模塊的運(yùn)行是否正常,每個(gè)子模塊判斷好了,就把他們集成在一起,
65、進(jìn)行系統(tǒng)測(cè)試,查出是否有錯(cuò)誤。最后找?guī)讉€(gè)人進(jìn)行黑盒子測(cè)試。</p><p> 三、課程設(shè)計(jì)總結(jié)或結(jié)論</p><p> 首先,通過這次的課程設(shè)計(jì)的實(shí)踐,讓我對(duì)軟件工程技術(shù)有了進(jìn)一步的了解, 提高了軟件的運(yùn)用能力,分析能力和解決問題的能力。同時(shí),讓我對(duì)設(shè)計(jì)、編程等有了不同的認(rèn)識(shí),讓我知道了自己的不足之處。</p><p> 其次,本系統(tǒng)的實(shí)現(xiàn)會(huì)有不
66、足之處,但在功能上可以滿足用戶的需要。在其他 方面的不足,將在今后的學(xué)習(xí)中不斷改進(jìn)。</p><p> 然后,通過這次的課程設(shè)計(jì),我發(fā)現(xiàn)對(duì)我的提高很大,編程是一個(gè)詳細(xì)又周密 的任務(wù),需要人的周密思考,和高度的耐心,這可以讓我克服不細(xì)致,沒耐心的毛病,在以后的工作和學(xué)習(xí)中會(huì)有很大的幫助。</p><p> 最后,我還學(xué)會(huì)了怎樣借鑒別人的經(jīng)驗(yàn)和方法,知道如何查閱
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)——學(xué)生成績管理系統(tǒng)
- 課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績管理系統(tǒng) 課程設(shè)計(jì)
- 課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)9
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)10
- vfp課程設(shè)計(jì)--- 學(xué)生成績管理系統(tǒng)
- java課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- vfp課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- vb課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- web課程設(shè)計(jì).學(xué)生成績管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論