c語言評分系統的功能結構圖,數據結構 C語言描述

本文目錄一覽:

C語言什麼叫系統模塊圖?

系統模塊(功能)結構圖

結構化設計方法,採用類似於結構化分析的「由大到小」、「自頂向下,逐層分解」的基本思想描述(分解)系統。結構化設計方法,首先以數據流圖為基礎導出系統模塊(功能)結構圖。在導出系統模塊(功能)結構圖的過程中,以獨立性、低耦合性、高內聚性、公共模塊作為模塊劃分的原則。先將系統數據流圖中的加工轉換成模塊,再將各大模塊繼續劃分為較小的模塊,直到每一模塊都是功能單一的模塊。

2.學生成績管理系統 (c語言做)

給你找一份類似的。不完全一致。做課程設計還是可行的。自己稍加修改即可!

總體設計

一、 仔細閱讀系統要求,首先將此系統化分為如下模塊(即如下函數)

1、輸入初始的學生信息:其中包括學生的姓名、學號和性別以及學生的語文、數學、英語和計算機等相關信息;可用函數cin(stu *p1)來實現此操作。

2、查詢模塊:可用stu *lookdata(stu *p1) 來實現。找到就輸出此學生全部信息包括學生的語文、數學、英語和計算機等的成績。

3、插入模塊:可用insert( )函數來實現。其中通過學號的大小來比較的,並且以此來排序。

4、輸出學生的信息以及成績:通過學生的姓名來查看學生的語文、數學、英語和計算機等相關成績,同時也可以分別通過caverage() 、maverage() 、eaverage() 和comaverage() 來輸出語文、數學、英語和計算機等成績的平均分數、最高和最低分數。

5、退出系統:可用一個函數exit()來實現,首先將信息保存到文件中,釋放動態創建的內存空間,再退出此程序。

二、系統主模塊結構圖:

詳細設計

一、 界面設計

此系統界面採用圖形和數字化菜單設計。

主界面設計如下:

學生成績管理系統

請選擇相應的數字執行相應的功能:

1:是否輸入其他數據

2:查看數據

3:插入數據

4:查找數據

5:更新數據

6:保留數據

7:顯示或打印數據

8:語文成績狀況

9:數學成績狀況

10:英語成績狀況

11:計算機成績狀況

12:?

13:退出系統

二、 數據結構設計:

程序設計中用到的結構體類型:

學生信息結構體類型:

typedef struct student{

char name[MAX];

int num[MAX];

char sex[MAX];

int chinese;

int mathematic;

int english;

int computer;

struct student *next;

}

程序代碼:

//原始密碼是123456

#include”stdio.h”

#include”stddef.h”

#include”stddef.h”

#include”string.h”

#define MAX 10

typedef struct student{ /*定義結構體*/

char name[MAX]; /*姓名*/

int num[MAX]; /* 學號*/

char sex[MAX]; /*性別*/

int chinese; /*語文*/

int mathematic; /* 數學*/

int english; /*英語*/

int computer; /*計算機*/

struct student *next; /*結構體指針*/

}stu;

stu *head; /*頭指針*/

void print() /*顯示或打印函數*/

{

system(“cls”);

printf(“\t\t\tScore Manage System\n”); /*成績管理系統*/

printf(“1Enter Record\t”); /*輸入數據*/

printf(“2Display\t”); /*顯示*/

printf(“3Insert\t”); /*插入數據*/

printf(“4Quest\t”); /*訪問數據*/

printf(“5Update\t”); /*以前數據*/

printf(“6Save\t”); /*保留數據*/

printf(“7Fresh\t”); /*更新數據*/

printf(“8Chinese Average\t”); /*語文平均成績*/

printf(“9Math Average\t”); /*數學平均成績*/

printf(“10English Average\t”); /*英語平均成績*/

printf(“11Computer Average\t”); /*計算機平均成績*/

printf(“12Quit\t\n”); /*退出*/

}

void cin(stu *p1) /*輸入相關數據的函數*/

{ printf(“Enter name:\n”);

scanf(“%s”,p1-name);

printf(“Enter num:\n”);

scanf(“%d”,p1-num);

printf(“Enter sex:\n”);

scanf(“%s”,p1-sex);

printf(“Enter score:\n”);

printf(“Enter chinese:\n”);

scanf(“%d”,p1-chinese);

printf(“Enter math:\n”);

scanf(“%d”,p1-mathematic);

printf(“Enter English:\n”);

scanf(“%d”,p1-english);

printf(“Enter Computer:\n”);

scanf(“%d”,p1-computer);

}

stu *cindata() /*其他數據是否繼續輸入的函數*/

{ stu *p1,*p2;

int i=1;

char ch;

p1=(stu *)malloc(sizeof(stu));

head=p1;

while(i)

{

cin(p1);

printf(“Do you Want to Continue?yes or no”); /*是否繼續輸入數據*/

ch=getchar();

ch=getchar();

if(ch==’n’||ch==’N’)

{ i=0;

p1-next=NULL;

}

else

{ p2=p1;

p1=(stu *)malloc(sizeof(stu));

p2-next=p1;

}

}

return(p1-next);

}

stu *lookdata(stu *p1) /*查看數據的函數*/

{

while(p1!=NULL)

{ printf(“Num:%d\t”,p1-num);

printf(“Name:%s\t”,p1-name);

printf(“Sex:%s\t”,p1-sex);

printf(“\n”);

printf(“Chinese:%d\t”,p1-chinese);

printf(“Math:%d\t”,p1-mathematic);

printf(“English:%d\t”,p1-english);

printf(“Computer:%d\t”,p1-computer);

printf(“\n”);

p1=p1-next;

}

return p1;

}

void insert() /*通過比較學號來插入數據的函數*/

{ stu *p1,*p3,*p2;

char ch;

p1=head;

p3=(stu *)malloc(sizeof(stu));

p3-next=NULL;

if(head==NULL){ head=p3; return;}

cin(p3);

while(p1!=NULL(p1-nump3-num)) /*通過學號的比較來插入*/

{ p2=p1;p1=p1-next;}

if(p2==head) {p3-next=head; head=p3; return;}

p3-next=p1;

p2-next=p3;

}

find(stu *p2) /*通過姓名查找查看數據的函數*/

{ char name[20];

int b=0;

printf(“Enter the name of the student you want to find:”); /*通過姓名查看*/

scanf(“%s”,name);

while(p2!=NULL)

{if(strcmp(name,p2-name)==0)

{

printf(“The data you want has be found\n”);

printf(” Name:%s\t”,p2-name);

printf(“Num:%d\t”,p2-num);

printf(“sex%s\t”,p2-sex);

printf(“\n”);

printf(“Chinese:%d\t”,p2-chinese);

printf(“Math:%d\t”,p2-mathematic);

printf(“English:%d\t”,p2-english);

printf(“Computer:%d\t”,p2-computer);

printf(“\n”);

b=1;

}

else if(b==0)

printf(“sorry not find data!”);

p2=p2-next;

}

if(b==1)

{

print();

printf(“Find one\n”);}

else

{print();

printf(“Not find\n”);

}

}

void caverage() /*求各學生語文平均分、最高和最低分成績的函數*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf(“not data!”);

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-chinese;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-chinese)

max=p1-chinese;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-chinese)

min=p1-chinese;

}

printf(“Chinese Average:%f”,aver);

printf(“Chinese Max:%f”,max);

printf(“Chinese Min:%f”,min);

}

void maverage() /*求各學生數學平均分、最高和最低分成績的函數*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf(“not data!”);

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-mathematic;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-mathematic)

max=p1-mathematic;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-mathematic)

min=p1-mathematic;

}

printf(“Mathe Average:%f”,aver);

printf(“Mathe Max:%f”,max);

printf(“Mathe Min:%f”,min);

}

void eaverage() /*求各學生英語平均分、最高和最低分成績的函數*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf(“not data!”);

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-english;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-english)

max=p1-english;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-english)

min=p1-english;

}

printf(“English Average:%f”,aver);

printf(“English Max:%f”,max);

printf(“English Min:%f”,min);

}

void comaverage() /*求各學生計算機平均分、最高和最低分成績的函數*/

{ stu *p1;

int i;

float max=0.0,min=200.0;

float sum=0.0,aver=0;

p1=head;

if(p1==NULL)

printf(“not data!”);

else

{for(i=0;p1!=NULL;i++,p1=p1-next)

sum+=p1-computer;

aver=sum/i;

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

{if(maxp1-computer)

max=p1-computer;

}

p1=head;

for(i=0;p1!=NULL;i++,p1=p1-next)

if(minp1-computer)

min=p1-computer;

}

printf(“Computer Average:%f”,aver);

printf(“Computer Max:%f”,max);

printf(“Computer Min:%f”,min);

}

update(stu *p2) /*通過姓名查找來更新數據*/

{

char name[10]; /*p2為指向結構體struct student的指針*/

int b=0;

printf(“Enter The Name”); /*輸入姓名*/

scanf(“%s”,name);

while(p2!=NULL)

{if(strcmp(name,p2-name)==0)

{

printf(“Find you data\n”);

scanf(“Name:%s”,p2-name);

scanf(“Num:%s”,p2-num);

scanf(“Sex:%s”,p2-sex);

scanf(“Chinese:%d”,p2-chinese);

scanf(“Math:%d”,p2-mathematic);

scanf(“english:%d”,p2-english);

scanf(“Computer:%d”,p2-computer);

printf(“Success!”);

b=1;}

else if(b==0)

printf(“Sorry not Find data!”);

p2=p2-next;}

if(b==0)

{print();

printf(“Sorry not Find data!”);

}

else

{

print();

printf(“Finish!”);

}

}

save(stu *p2) /*保留數據函數*/

{

FILE *fp;

char file[10];

printf(“Enter file name”); /*輸入文件名*/

scanf(“%s”,file);

fp=fopen(file,”w”);

while(p2!=NULL)

{

fprintf(fp,”%s”,p2-name);

fprintf(fp,”%s”,p2-num);

fprintf(fp,”%s”,p2-sex);

fprintf(fp,”%d”,p2-chinese);

fprintf(fp,”%d”,p2-mathematic);

fprintf(fp,”%d”,p2-english);

fprintf(fp,”%d”,p2-computer);

p2=p2-next;

}

fclose(fp);

}

char password[7]=”123456″; /*定義初始密碼*/

void main() /*主函數*/

{ int choice;

stu *p2;

char s[8];

int flag=0,i; /*標誌項*/

int n=3;

do{ printf(“Enter password:\n”);

scanf(“%s”,s);

if(!strcmp(s,password)) /*進行密碼匹配驗證*/

{ printf(“PASS\n\n\n”);

flag=1;

break;

}

else{

printf(“Error Enter again:\n”);

n–;

}

}

while(n0);

if(!flag)

{printf(“you have Enter 3 times!”); /*輸入密碼超過了3次!!*/

exit(0); /*自動退出*/

}

/*密碼驗證成功後進入的界面*/

printf(“~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n”); /*操作界面*/

printf(“\t\tWelcom to the Mis\n”);

printf(“Author:—–\tClass:——\tNum:——\n”); /*作者,班級和號碼*/

printf(“Adress:HG\n”); /*地址*/

printf(“%%%%%%%%%%%%%%%%%%%%%%%%%%%\n”);

printf(“\t\tEnter OP:\n”);

printf(“\n\n\n\n”);

printf(“==============\t\t==============\n”);

printf(“==============\t\t==============\n”);

printf(“\t\tEnter the MIS yes or no\n”); /*問進入系統與否*/

scanf(“%d”,choice);

if(choice==’n’||choice==’N’)

exit(1);

print();

while(1)

{

printf(“Enter choice:”);

scanf(“%d”,i);

if(i1||i13)

{

printf(“Enter num from 1 to 13:\n”); /*再從1-13中進行選擇*/

exit(1);

}

switch(i)

{ case 1:

p2=cindata(); /*其他數據是否繼續輸入的函數*/

break;

case 2:

p2=lookdata(head); /*查看數據的函數*/

break;

case 3:

insert(); /*通過比較學號來插入數據的函數*/

break;

case 4:

find(head); /*通過姓名查找查看數據的函數*/

break;

case 5:

update(head); /*通過姓名查找來更新數據*/

break;

case 6:

save(head); /*保留數據函數*/

break;

case 7:

print(); /*顯示或打印函數*/

break;

case 8:

caverage(); /*求各學生語文平均分、最高和最低分成績的函數*/

break;

case 9:

maverage(); /*求各學生數學平均分、最高和最低分成績的函數*/

break;

case 10:

eaverage(); /*求各學生英語平均分、最高和最低分成績的函數*/

break;

case 11:

comaverage(); /*求各學生計算機平均分、最高和最低分成績的函數*/

break;

case 12:

; /*空操作*/

case 13:

exit(1); /*退出*/

break;

}

scanf(“%d”,i);

}

}

c語言編程:歌唱比賽評委評分系統

#include stdio.h

#includestring.h

void main()

{

int i,j,m,n;

float num,xgrade[100],max,min,pgrade[100],pdis[100];

char str[10],xname[100][10],pname[100][10];

printf(“請輸入評委人數:”);

scanf(“%d”,m);

printf(“\n請分別輸入評委姓名:\n”);

for(i=0;im;i++)

{

scanf(“%s”,pname[i]);//評委姓名

pgrade[i]=0;//評委給的分

pdis[i]=0;//評委給分和最後結果的差距

}

printf(“\n請輸入選手人數:”);

scanf(“%d”,n);

printf(“\n請分別輸入選手姓名:\n”);

for(i=0;in;i++)

{

scanf(“%s”,xname[i]);//選手姓名

xgrade[i]=0;//選手成績

}

for(i=0;in;i++)

{

max=0;min=10;//評委給選手的最大最小成績

printf(“\n請給選手%s打分!”,xname[i]);

for(j=0;jm;j++)

{

printf(“\n%s老師給的分數為:”,pname[j]);

scanf(“%f”,pgrade[j]);

xgrade[i]+=pgrade[j];//加到該選手的總分數中

if(maxpgrade[j])

max=pgrade[j];

if(minpgrade[j])

min=pgrade[j];

}

xgrade[i]=(xgrade[i]-max-min)/(m-2);//最後成績為總成績-最高分-最低分,然後平均

for(j=0;jm;j++)//算出每個評委本次評分和最終成績的差,加到pdis中保存起來

{

pdis[j]+=pgrade[j]xgrade[i]?(pgrade[j]-xgrade[i]):(xgrade[i]-pgrade[j]);

}

}

for(i=0;in-1;i++)

for(j=0;jn-1-i;j++)

if(xgrade[j]xgrade[j+1])

{

strcpy(str,xname[j]);

strcpy(xname[j],xname[j+1]);

strcpy(xname[j+1],str);

num=xgrade[j];

xgrade[j]=xgrade[j+1];

xgrade[j+1]=num;

}

printf(“\n選手按名次排名為:\n”);

printf(“選手名\t得分\n”);

for(i=0;in;i++)

printf(“%s\t%f\n”,xname[i],xgrade[i]);

for(i=0;im-1;i++)

for(j=0;jm-1-i;j++)

if(pdis[j]pdis[j+1])

{

strcpy(str,pname[j]);

strcpy(pname[j],pname[j+1]);

strcpy(pname[j+1],str);

num=pdis[j];

pdis[j]=pdis[j+1];

pdis[j+1]=num;

}

printf(“\n評委按名次排名為:\n”);

printf(“評委名\t差分\n”);

for(i=0;im;i++)

printf(“%s\t%f\n”,pname[i],pdis[i]);

}

vae.la

C語言程序設計 學生成績管理信息系統

我還有代碼呢,要的話,馬上帖出來..給個紅棋吧,呵呵

一、 課題設計名稱

學生成績管理信息系統分析設計

二、 課題設計目的

通過本次課程的設計,加深對信息系統基礎理論和基本知識的理解,掌握使用信息系統分析、設計的基本方法,提高解決實際管理問題、開發信息系統的實踐能力。

三、 任務要求:

用信息系統開發工具(例如Visual Foxpro、Visual Basic、Delphi等)開發一個實用的中小型管理信息系統。

1、根據課程設計時間選擇適當規模大小的設計課題。

2、根據合理的進度安排,按照系統開發的流程及方法,踏實地開展課程設計活動。

3、課程設計過程中,根據選題的具體需求,在開發各環節中撰寫相關的技術文檔(小組各成員可分別完成某階段的技術文檔),最後要求提交詳細的課程設計報告。

4、開發出可以運行的管理信息系統,通過上機檢查。

四、 課題設計報告書要求:

1、 課題設計報告書第一頁為封面,封面上寫清楚標題、班級、姓名、指導老師、完成日期,格式自己設計。

2、 課題設計報告書第二頁為本任務書。

3、 課題設計報告書第三頁為教師評語。

4、 課題設計報告書第四頁為目錄。

5、 課題設計報告書第五頁開始為具體內容:

(1)可行性分析

(2)系統分析部分

1)業務流程圖

2)數據流程圖

3)功能分析圖

4)數據字典

5)數據加工處理的描述

6)管理信息系統流程設想圖(新系統模型)

(3)系統設計部分

1)功能結構圖設計

2)新系統信息處理流程設計

3)輸出設計(主要指打印輸出設計)

4)存儲文件格式設計(數據庫結構設計)

5)輸入設計(主要指數據錄入卡設計)

6)代碼設計(職工證號和部門代號等)

7)程序設計說明書

(4)附錄或參考資料

6、課題設計報告書最後一頁是本次課程設計的小節和參考文獻。

7、字數要求不少於4000字。

8、打印紙張使用B5紙,頁邊距設為上、下、左2厘米,右1.5厘米,

五、 如有雷同,將作不及格處理。

六、 完成時間:2007.1.5

計算機二系

尚晉

2007.10.28

教師評語

評分模塊 評分標準及分值 得分

平時成績(20分) 1. 態度(10分)

2. 考勤(10分)

分析與設計部分

(65分) 3. 需求分析(5分)

4. 系統複雜度(5分)

系統分析部分(20分) 5. 業務流程圖(5分)

6. 數據流程圖(5分)

7. 功能分析圖(3分)

8. 數據字典(7分)

系統設計部分

(35分) 9. 系統配置方案設計(5分)

10. 用戶界面導航圖(5分)

11. 界面設計(5分)

12. 有效性驗證(5分)

13. 錯誤處理(5分)

14. 編碼設計(5分)

15. 數據庫設計(5分)

報告部分(10分) 16. 條理清晰、語言精練準確(5分)

17. 描述圖形工具使用恰當(5分)

組長加分(5分) 18. 組織得力,合作完成情況好(5分)

總分(100分)

成績:

學生成績管理信息系統

1. 系統規劃

1.1項目開發的背景

伴隨着信息社會的到來,信息的極大豐富必然要求人們適應信息社會,信息和材料、能源一樣成為一種社會的基本生產資料,在人類的社會生產活動中發揮着重要的作用,其中最重要的前提就是充分利用人們的才智和學習能力。傳統的教學只教會了學生相關的知識,沒有教會學生如何利用這些知識,以及再學習的能力。特別對於「管理信息系統」這類實用性比較強的課程,更需要培養學生的實際動手能力。.教與學互動與結合,強調應用,不僅讓學生了解課程上講授的管理信息系統方法和原理,而且讓學生們利用這些知識解決實際問題。這對學生的實際工作能力是一個很好的鍛煉。密切結合學生獨立完成的系統開發作業,通過指導教師的點評,使學生能夠在較短的時間內,通過實踐,真正掌所學的知識。同時人們對信息和數據的利用與處理也已經進入了自動化、網絡化和社會化的階段,因此,開發相關的管理信息系統已經成為各行各業的必要和必需了,管理信息系統作為一門邊緣學科,集管理科學、信息科學、系統科學、現代通信技術和電子計算機技術於一體,可以解決企業或組織所面臨的問題,對於成績管理員的勞動強度、提高工作質量和效率;方便管理人員對信息的查詢、提高信息資源的利用效率和管理水平都具有重要意義。

1.2 可行性分析

基於以上對問題的調查和分析,利用計算機給我們提供的信息,及時地了解學生的信息,並且形成一整套動態的管理就十分必要了。本系統開發的主要目的是對學生信息和成績的實現計算機管理。學生管理系統的建立,是在進行對大量用戶需求與調查分析得到的。

(1)技術可行性

成績管理系統主要是用於計算機教育部關於教學計劃、課程、教師信息、成績的查詢和管理。通過使用Microsoft公司提供的Visual FoxPro 6.0工具以及SQL Server數據庫可以實現對有關課的教學計劃、課程等的網上查詢和管理,主要目的是對學生成績實現計算機管理。

(2)經濟可行性

開發學生成績管理系統費用較底,可利用現有的微機設備,經濟上是可行的,非常適合於成績管理,因為該系統實現了將管理和查詢網絡

化,極大地方便了管理員、教師、學生。

(3)操作可行性

本系統的界面設計簡單直觀,易於理解。它使用的控件都是用戶常用的或常見的,操作起來很容易上手。不需要特別的培訓和講解,用戶便能使用該系統。

(4)組織與管理可行性

成績管理員是對學生的成績進行管理的,但過去由於採用人工方法進行管理,工作效率低,勞動強度大,所以他們希望採用計算機管理,將已有的管理經驗轉化到管理軟件中。這就使得系統調查、需求分析能夠得到有關人員的大力支持和積極配合。

1.3 制定系統開發計劃

開發學生成績管理系統的計劃見表1-1

表1-1 實驗小學學生成績管理系統開發簡略計劃表

序號 項目內容 時間進度 項目負責人

1 系統規劃和可行性分析 2007年12月 向萬秀

2 系統分析 2007年12月 張春先、向萬秀、刁勝

3 系統設計 2007年12月 向萬秀、張春先

4 系統實施與測試 2007年12月 向萬秀

5 系統評價與維護 2007年12月 張春先

6 安全保障措施 2007年12月 向萬秀、張春先

2系統分析

1現行系統業務流程的調查

對某學校進行實地調查,其現行的成績管理工作都是採用傳統的手工管理,經過對成績管理員、學生和教師的全面的調查研究,手工工作效率低,工作質量差,不適合現在學校成績管理系統的需求,所以需要改進傳統的成績管理模式。實現科學化管理。

對現行系統的調查業務流程圖如下圖1-1所示:

學生

1-1 業務流程圖

2 需求分析

(1) 功能描述

本系統包括用戶管理、學生註冊、班級信息錄入、學生信息錄入、班級課程錄入、學校專業信息錄入、課程信息錄入、學生成績錄入、教師信息錄入、各方面的查詢等等。

1.教學管理功能

① 新本學期所開設課程的錄入與查詢:例如在2006年上學期開設課程:C語言與經濟數學。

說明:所有的課程成績均由三部分組成:平時成績,上機成績, 筆試成績。所佔的比重分別為:30%,10%,60%,在該系統中這三部分及其比重是固定不變的。

② 對各系科的課程安排的錄入與查詢,課程安排即是該學期每個學科

的選課課程、任課教師以及上課時間和上課地點。

說明:每一個院系中所有的不同專業所選的課程都是一樣的。但是同一院系的學生不一定有同一個教師授課。

(2).成績管理的功能(教師使用)如下:

① 錄入成績:既可以單個錄入也可以批量錄入,其中批量錄入以成績單單位,每次從系統中調出一張成績單,編輯完成後一次性提交。

成績單:成績單包括學期、院系、專業、課程、任課教師、學生成績。

② 查詢成績:單個查詢(學生可使用),根據學生的學號或姓名查詢出該學生的所有課程的成績信息。批量查詢以成績單為單位,每次查詢出一張成績單。

③ 打印成績:可以一次打印一張成績單,也可以按要求批量打印。

④ 統計調整:對成績單中的成績進行統計,指出各個分數段的人數分佈情況。因為有時學生的成績整體上偏低,需要進行調整,一次系統可以按照用戶設置的規則對成績單中的成績進行調整。

成績調整規則:將成績單中總分在某一分數段的學生成績調整到另外一個分數段。例如將50到60分的學生成績全部調整到60到65分之間。為了使調整過程儘可能合理,還可以對待調整分數段的學生成績進行限制,例如設置其筆試成績必須在50分以上,而平時成績則可以適當放寬。

⑤ 每學期考試不及各的學生自動納入新學期的跟考或輔修教學計劃中。

(3).權限說明:

① 管理員可使用功能:教師信息管理、系科顯示、課程管理、教學計劃管理、學生成績查詢;

② 教師可使用成績管理各項功能:對學生成績的添、刪除、修改、查詢、分析、調整;

③ 學生可使用的功能:查詢單個學生所有成績,班級成績,學生平均成績,最高分,最低分等。

為學校教師和學生提供快捷的查詢手段,讓老師和學生能夠及時查詢學生成績信息,更快而又方便的進行查詢。

(4).性能要求

本系統採用計算機對學生成績進行管理,進一步提高辦學效益和現代化水平。幫助廣大教師提高工作效率,實現學生成績信息管理工作流程的系統化、規範化和自動化。如果本系統能被學校所採用,將會改變以前靠手工管理學生成績的狀況,可以樹立良好的辦學形象,提高工作效率。由於現在實行九年義務教育,學校學生不斷增加,該系統可高效的進行大規模的查詢。系統的安全保密性高,能防止非法訪問。

3新系統的邏輯模型的建立

(1) 新開發的學生成績管理系統的功能分析

在學生成績管理信息系統中,主要有三類外部實體:學生、教師、教務處工作人員。學生成績管理信息系統的大部分功能是為教務處工作人員設置的。經調查分析,新開發飛的學生成績管理信息系統應具有以下的功能。

(1.1) 查詢學生的基本信息和成績信息,包括學生信息的添加、修改、刪除等。

(1.2) 管理學生成績,包括考試管理,成績管理等。

(1.3) 成績的處理,即統計成績、分析成績等。

(2) 繪製數據流圖

繪製數據流圖時,只考慮學生和教務處兩個外部實體,頂層數據流圖如圖1-2所示。

學生成績錄入 教師課程信息

學生成績單

學生登錄信息

學生選課信息 輔修/跟考通知單

用戶名、密碼 部門信息

課程類型 學生成績信息

課程信息 學生考試信息

圖1-2 頂層數據流圖

0層數據流如圖1-3所示。由於1層圖沒有完整繪製,0層圖中只屬於一個加工的文件(例如權限表)也在0層圖上出現。

0層數據流圖通過反應整個系統中不同數據流向,來揭示系統的組成結構以及各組成部門之間的關係,這種關係主要體現在對數據的操作和處理上。

用戶名、密碼

學生信息

部門信息

學生成績

學生信息

學生成績單

成績類型 輔修/跟考通知

學生成績 不及格成績

缺考

圖1-3 0層數據流圖

學生信息數據流程圖如圖1-4、1-5所示。

學生信息 審查1.1 合格單 是否新生1.2 新生信息

學生紀錄

學生成績

總學生紀錄表及成績

圖1-4 1層數據流圖

(3) 數據字典

數據字典是進行數據收集和數據分析所獲得的主要成果,是系統中各類數據描述的集合。數據字典通常包括數據項、數據流、數據存儲、處理邏輯。

數據項

名稱:學生信息

別名:學生信息

說明:學生信息=學生基本信息+學生記錄+學生成績記錄

類型:字符型

長度:12

取值範圍:0000000000001~99999999999

數據流條目:

合格單=姓名+系別+班級+專業

新生信息=入學時間+姓名+性別+年齡+專業+系別+班級

加工條目:

加工名:審查

編號:1.1

輸入:學生信息

輸出:合格單

加工邏輯:根據學生信息判斷是否是新生

加工邏輯

加工邏輯

加工名:是否是新生

編號:1.2

輸入:合格單

輸出:新生信息

加工邏輯:根據合格單建立新生信息

加工名:錄入、存儲學生信息、各科成績

編號:1。3

輸入:新生信息、考試成績

輸出:本次考試成績

2層數據流圖

學號、課程號 有效查詢 成績

考試成績 成績單

學生紀錄 班級 統計成績

各科

本次成績 升留級名單 學生紀錄

成績標準

圖1-5 2 層數據流圖

數據字典:

數據項

名稱:學號、課程號

別名:編號

說明:惟一標識一個學生編號

類型:字符型

長度:12

取值範圍:0000000000001~9999999999999

數據存儲文件

數據存儲條目:

數據存儲名稱:考試成績

組成:姓名+班級+專業+系別+成績+學號

組織方式:索引文件,以學號為關鍵字

加工處理

加工邏輯

加工名:有效性檢查

編號:2。1

輸入信息:學號、課程號

輸出信息:有效查詢

加工邏輯:根據所輸入的信息來檢查有效性

加工名:查詢成績

編號:2。2

輸入信息:考試成績

輸出信息:成績

加工邏輯:根據考試成績查詢成績

加工條目:

加工名:統計選擇

編號:3。1

輸入信息:學生記錄

輸出信息:按規定統計成績

加工邏輯:根據所輸入學生記錄,按班級、單科統計成績

數據存儲條目:

文件名:成績標準 組成:成績

加工條目:

加工名:是否升級

編號:4。1

輸入信息:本次成績、成績標準

輸出信息:升留級名單

加工邏輯:根據本次成績

IF 大於等於標準成績 ELSE 降級

ENDLF THEN 升級

加工名:更新記錄

編號:4。2

輸入信息:升留級名單

輸出信息:學生記錄

加工邏輯:根據升留級名單修學生記錄

3.系統設計

1. 系統總體結構設計與功能模塊劃分及系統功能描述

本系統的主要任務是實現對學校教導處的學生信息管理、成績管理、課程管理及相關查詢。其主要功能包括:

學生成績管理模塊,學生信息管理模塊、系統模塊等等。

學生信息管理功能

(1)班級管理。提供給班主任進行本班學生的信息更新、刪除。

(2)添加學生。以班級為單位,進行學生入庫。其中分為單個添加和成批添加。單個添加學生供數量較少的學生信息入庫;成批添加可以從現存的學生信息EXCEL文件中成批錄入到數據庫中。

(3)刪除學生。當學生畢業後,學生信息轉移備份數據庫中,系統的基本數據庫中需要刪除學生信息。該功能主要進行成批地刪除學生信息,如連續學號區段的多位學生信息刪除,整個班級的刪除,所有學生信息的刪除。

(4)新生管理。本部分的功能主要有新生導入、分班、及設置學號。新生導入實現從現存的EXCEL新生名單中錄入學生信息。分班功能實現按新生的報考專業、成績及性別進行分班。設置學號實現自動為各班學生編髮學號。

學生信息備份。在學生信息刪除前,將其按班級為單位保存到備份數據庫。

(5)學生信息模塊主要包括對學生信息的存儲,審查記錄以及學生對學生整個信息的調查進行分類和查找。可以實現添加、修改、刪除、查詢學生信息管理的調查。

(6)學生基本信息管理功能包括:學生信息、學生記錄、學生成績、總學生記錄表和成績。

(7)學生基本信息包括:學生學號、學生班級號、課程號、學生聯繫方式等等

(8)課程管理。提供本學期各年級各專業所開課程名稱的錄入、修改、刪除。它是學生成績管理的基礎。用以保證數據庫中一致性原則。

2.系統功能分析

系統開發的總體任務是實現學生信息關係的系統化,規範化和自動化。

學生基本信息所需要完成的功能主要有:

●學生信息的輸入,包括輸入學生基本信息、所在班級、所學課和 成 績等。

● 學生信息的查詢,包括輸入學生基本信息、所在班級、已學課程和成績 等。

● 學生信息的修改。

● 班級管理信息的輸入、查詢、修改,包括輸入班級設置,年級信息等。

● 基本課程信息的輸入、查詢、修改。

● 學生成績信息的輸入、查詢、修改。

對上述各功能進行集中、分塊、按照結構化程序設計的要求。

2.繪製學生信息管理模塊功能結構圖如圖

圖1-6 學生信息系統管理的功能結構圖

3.系統配置方案設計

鑒於本系統的業務性質,必須選擇具有較高的可靠性、穩定性和必要的容錯能力的計算機硬件和軟件系統,以保證任何情況下都不至於丟失、損壞數據。

必須具有較高的響應速度,以保證各項具體業務的順利進行。

應考慮具有良好的可維護性,可操作性和可擴充性,以保證將來系統規模的擴展和升級的需要。

4.開發與運行環境的使用

開發前台工具:Visual FoxPro 6.0

操作系統對整個網絡起着重要的作用,Windows 2000作為一種強健的、多用途的操作系統,不僅能夠運行強有力的客戶/服務器應用軟件,還可以提供可靠的文件與打印服務,再加其內置的通信與Internet/Internet服務功能,以及安裝、使用、管理和維護的方便性,因此,本系統採用Microsoft Windows 2000Server作為操作系統。

本系統準備採用客戶機/服務器(C/S)結構模式。C/S結構的最大優勢在於廣泛採用了網絡技術,將系統中的各部分任務分配給分佈在網絡上的擔任不同角色的計算機。把較複雜的計算機管理任務交給服務器完成。再把一些頻繁與用戶打交道的任務交給客戶機完成。通過這種結構完全實現了網絡上信息資源的共享。

開發基於C/S結構的管理系統所用到的開發工具包括前台開發工具和後台數據庫管理系統,主要根據開發者對開發工具的熟悉程度而定。本系統的前端開發工具採用Visual FoxPro 6.0。

5.編碼(Code)設計

6.數據庫設計

(1) 概念結構設計

經過本次實驗,概念結構設計的主要工作是根據用戶需求設計概論性數據模型。概念模型是一個面向問題的模型,它獨立於具體的數據庫管理系統,從用戶的角度看待數據庫,反映用戶的現實環境,與將來數據庫如何實現無關。概念模型設計的典型方法是E-R方法,即用實體—聯繫模型表示。

E-R方法使用E-R圖來描述現實世界,E-R圖包含三個基本成分:實體、聯繫、屬性。E-R圖直觀易懂,能夠比較準備地反映現實世界的信息聯繫,從概念上表示一個數據庫的信息組織情況。

實體:是指客觀世界存在的事物,可以是人或物,也可以是抽象概念。E-R圖中各實體的關係說明如下。

學號記載學生成績管理系統中所登記的一類編號,而所有的學生姓名是所代表的是學生的代碼。中兩個實體之間為一對多關係。

學生可以選擇多門課程,一門課程可以有多個學生選擇。其中本系統中E-R圖包括學生性別、出生日期等等。課程中包括課程號、課程名、教師姓名等等。

M N

學生與課程之間的關係

課程名是惟一的,而選課的學生是多個的,這兩個實體之間為一對一關係。

一個學校有多位老師,這兩個實體之間為一對多關係。

學生與課程表中的同一課程對應多個不同的老師與學生,這兩個實體間為一對多關係。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/232000.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:49
下一篇 2024-12-11 12:49

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 數據結構學生成績管理系統

    在現代教育中,學生成績的管理已經成為了一個不可或缺的部分。藉助數據結構,一個高效、可靠的學生成績管理系統可以被輕鬆實現。 一、數據結構的選擇 在構建學生成績管理系統時,選擇合適的數…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論