當前位置:首頁 » 考試成績 » 學生成績管理系統前段設計

學生成績管理系統前段設計

發布時間: 2020-12-30 11:24:55

1. 求學生成績管理系統設計

你好貪呀,連概念結構設計和邏輯結構設計都要呀.在這里我給你講一下設計思想好了.版
首先,你得選定一個權軟體開發平台和工具.比如在windows平台,用delphi,vb 開發.
之後,選擇資料庫,如果單機版的話,請你用access,如果網路版的話用sql server.
然後對系統進行分析,之後開始設計.

其實對於學生成績管理來說,成績管理只是一方面,還要進行學生管理,教師管理,課程管理,成績分析等等.成績管理的前提是學生,教師,課程.在成績管理之後還要考慮成績分析,這是很重要的.一個管理信息系統(MIS)不光要對數據進行存儲,處理,而且還要對數據進行分析,如果可以的話還要做出決策支持.
如果要做網路版的話,還得考慮一些網路方面的控制.
分析之後,如果要做到將來維護方便還得做成模塊化,之後開始設計及編碼.
這是一點介見,如果你將來要想干計算機編程這一行的話,那麼,你就要自己來做,自己來分析和思考.這樣才能進步.

2. 1. 學生成績管理系統設計

可以通過Bai Hi通知我
有時間可能完成你所面臨的任務
一樣的要求也可能通知我

ES:\\
交易提醒:預付定金是詐騙

3. 簡單的學生成績管理系統的設計

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 學號 */
char name[20];
char sex[10];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];/* 最近更新時間 */
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("\t1登記學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5保存學生資料\t\t\t\t\t0退出系統\n");
printf("********************************************************************************\n");
}

void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:輸入錯誤!\n");
}

void Nofind()
{
printf("\n=====>提示:沒有找到該學生!\n");
}

void printc() /* 本函數用於輸出中文 */
{
printf(" 學號\t 姓名 性別 英語成績 數學成績 C語言成績 總分 平均分\n");
}

void printe(Node *p)/* 本函數用於輸出英文 */
{
printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 該函數用於定位連表中符合要求的接點,並返回該指針 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按學號查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查詢 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add(Link l) /* 增加學生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 將指針置於最末尾 */
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}
p=(Node *)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入性別:");
scanf("%s",p->data.sex);
getchar();
printf("請你輸入c語言成績:");
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入數學成績:");
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入英語成績:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息輸入已經完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;
}
}

void Qur(Link l) /* 查詢學生 */
{
int sel;
char findmess[20];
Node *p;
if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;
}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 學號 */
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}

void Del(Link l) /* 刪除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號(原來是%s):",p->data.num);
scanf("%s",p->data.num);
printf("請你輸入新姓名(原來是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("請你輸入新性別(原來是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入新的數學成績(原來是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:資料修改成功!\n");
shoudsave=1;
}
else
Nofind();

}

void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("\n=====>提示:沒有資料可以顯示!\n");
return;
}
printf("\t\t\t\t顯示結果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}

void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; /* 用於指向分數最高的接點 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;

r=r->next;
}
printf("------------------------------統計結果--------------------------------\n");
printf("總分最高者:\t%s %d分\n",pt->data.name,pt->data.totle);
printf("平均分最高者:\t%s %d分\n",pa->data.name,pa->data.ave);

printf("英語最高者:\t%s %d分\n",pe->data.name,pe->data.egrade);
printf("數學最高者:\t%s %d分\n",pm->data.name,pm->data.mgrade);
printf("c語言最高者:\t%s %d分\n",pc->data.name,pc->data.cgrade);
printstart();
}

void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用於做新的連表 */
ll->next=NULL;

if(l->next==NULL)
{
printf("\n=====>提示:沒有資料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接點用於保存信息 */
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已經完成!\n");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->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);
shoudsave=0;
}
fclose(fp);
}

int main()
{
Link l;/* 連表 */
FILE *fp; /* 文件指針 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;

l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
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)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加學生 */
case 2:Del(l);break;/* 刪除學生 */
case 3:Qur(l);break;/* 查詢學生 */
case 4:Modify(l);break;/* 修改學生 */
case 5:Save(l);break;/* 保存學生 */
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
system("pause");
return 0;
}

4. 學生成績管理系統的設計與實現

給一個我以前寫過的吧,功能應該差不多#include #include #include #include #include #include #include #include #include using namespace std;/*定義學生結構體*/struct Student{ char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average;};/*聲明學生數組及學生數量*/struct Student students[1000];int num=0; /*求平均值*/float Avg(struct Student stu){ return (stu.Mark1+stu.Mark2+stu.Mark3)/3;} /*通過學號返回數組下標*/int Student_SearchByIndex(char id[]){ int i; for (i=0;i

5. 如何設計一個學生成績管理系統

這個我以前做過的,
登陸界面要分2種情況,第一個是管理員登陸
第二個是學生登陸,要設定許可權

管理員可以對學生進行管理,可以對學生的成績進行增刪改查的管理。
也可以對學生的信息進行操作,可以增加科目,可以注冊學生,可以編輯學生所在的班級,以及班主任姓名。

學生界面的話,這個許可權就很少了,可以查詢自己的各科成績。你可以把這個查詢做的豐富一點。比如按科目查詢,可以做模糊查詢。可以查詢本次考試的最高分等等。
因為這個系統比較簡單,所以沒什麼好說的,
資料庫我用的是sqlserver,表結構你可以自己想想啊,全說明了就沒意思了。
希望對你能有幫助

6. 設計一個簡單的學生成績管理系統,

我沒寫,只能和你說說怎麼寫。
可以由類模板和數組寫。
我說說類模板的吧。
定義一個Student類存放學生信息(姓名,初始排名,各科成績,個人總分);
初始排名由輸入順序排,在計算名字的時候就可以通過冒泡排序。
在裡面定義計算總分的函數。
下面定義一個Caozuo類,用學生鏈表的做。你可以去找下這個例子。
數組的就很簡單了,你只要想想。先定義數組(姓名,成績),總分就是個人每科成績的和,下面5個函數都可以通過數組遍歷實現。如
cout<<"請輸入你要查詢的學生的名字:"<<endl;
cin>>n;
for(int i=0;i<=Maxsize;i++)
{
if(Student[i].name==n)
Student[i].Print();
}

7. 學生成績管理系統有什麼設計原則

#包括
包括
結構學生{
詮釋身份證;
字元名稱[10];
詮釋年齡
>字元性[10];
字元張谷[20];
整數分殊;
字元專業戶[50];
} ST [50];
我= 0;
無效淑如(){
燒焦了;
做{
printf的(「\ n請輸入學號:」);
scanf函數( 「%d」,&ST [i]的ID);
fflush(stdin)中;
printf的(「\ n請輸入你的名字:」);
獲取(ST [I]名);
printf的(「\ n」);
printf的(「請輸入年齡:」);
scanf的(「為%d」,&ST [i]的年齡); printf(「請\ n請輸入性別:」);
得到(ST [I]。性);

fflush(stdin)中
fflush(stdin)中;
printf的(「\ n請輸入院系:」);
得到(ST [I]。張谷);
printf的(「\ n請輸入成績:」);
scanf的(「%D」,ST [I]。分殊);
fflush(stdin)中;
printf的(「\ n請輸入一個專業:);
獲得(ST [I]。專業戶);
printf的(「\ n是否繼續輸入學生信息?(Y / N)」);
fflush(stdin)中;
= getchar函數();
+ +;
}(A =='Y'&& <= 50);

}

BR />無效仙師()
年齡{
詮釋;
printf的(「\ t學號\ t姓名\ t \ t性別\ t學院\ T專業\ T分數的\ n「);
為(J = 0; <; + +)
printf的(」\ t%D \ T%S \ T%D \ T%S \ t%的小號\ t%d \ t其中%s \ n「,
ST [J]。身份證,ST [J]。名稱,ST [J]。年齡,ST [J]。性別,ST張谷[J]。 ,ST [J]。分殊,ST [J]。專業戶);
}

無效叉著()
{
INT M
字元名稱[20],B;

{
printf的(「\ n請輸入要發現學生的姓名:」);
fflush(stdin)中;
獲取(名稱);
為(M = 0,M <I,M + +)
{
(STRCMP(名,ST [M]。名)== 0)
{
printf的(「\ n \你在位置%d的學生發現!!\ n」;,M +1); BR />打破;
}
}
(M> = 20)
printf的(「\ n \ t沒有找到這個學生!\ n」); />其他
{
printf的(「學生編號性別年齡教師專業成績」);
printf的(「\ t%D \ T%S \ T%D \ T%\噸%S \ T%d \ t其中%s \ n「,
ST [M]。身份證,ST [M]。名稱,ST [M]。年齡,ST [M]。性別,ST [M]。張谷,ST [M]。分殊,ST [M]。專業戶);
}
printf的(「\ n能否找到另一種是學生嗎?(Y / N)」);
> fflush(stdin)中
B = getchar函數();

}而(B =='Y');

}
a>
無效閃出()
{
字元名稱[20],C;
整數A,B;

{
輸出(「\ n請輸入你要刪除的學生姓名:\ n」);
fflush(stdin)中
獲取(名稱);
(A = 0; <我一個+ +)
{
(STRCMP(名稱,ST [A]。名)== 0)
打破;
}
/ a>(B = A,B <I,B + +)
ST [B] = ST [+1];
(A>;我)
printf的(「 \ T沒有找到這名學生!!\ n「);

其他
{
-
仙師();
} BR />
printf的(「\ n是否繼續刪除另一名學生的信息?(Y / N)」);
fflush(stdin)中;
C = getchar函數(); BR />},而(C =='Y');

}

無效charu()

淑如( );

}

廉政的main()
{
詮釋改變;
做{
系統(「CLS」);
printf的(「========================的====學生信息管理系統==== =============================== \ n「);
printf的(」\ t \ t:輸入學生信息\ n「);
printf的(」\ t \ t:學生信息\ n「);
printf的(」
\ t \ t:查找學生信息\ n「);的printf (「\ t \ t:刪除學生信息\ n」);
printf的(「\ t \ t五:插入學生信息\ n」);
printf的(「\ t \ t VI:退出程序\ n「);
fflush(stdin)中;
printf的(」\ t \ t請輸入選項:);
scanf的(「%d」,&的變化);切換(改變)

{
案件1:
淑如();突破;
案例2:
仙師()突破;
案例3:
的叉著();突破;
情況4:
閃出();突破;
情況下,5:
charu();休息;
案例6:
突破;

}

}(change! = 6);
系統(「暫停」);
返回0;
}

,正如約瑟夫鏈表是相對簡單的,你拿去做可以做到這一點。

8. 學生成績管理系統(C語言)的設計方法論述

程序設計的基本目標是用演算法對問題的原始數據進行處理,從而獲得所期望的效果。但這僅僅是程序設計的基本要求。要全面提高程序的質量,提高編程效率,使程序具有良好的可讀性、可靠性、可維護性以及良好的結構,編制出好的程序來,應當是每位程序設計工作者追求的目標。而要做到這一點,就必須掌握正確的程序設計方法和技術。而C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。所以採用結構化程序設計方法,對管理系統進行自頂向下,逐步細化,模塊化設計.

對題目的需求分析得出:管理系統對學生的成績信息進行管理,學生信息包括:學號、姓名、學期、每門課程的成績、平均成績、名次。實現:學生信息的錄入;修改;刪除和查詢,按學期、學號、姓名等查詢。
而對輸入的學生成績正確的計算了平均分、最高分、最低分、統計了不及格情況及各分數段的人數。並按要求的格式正確列印.
【功能函數設計】
這個程序比較煩瑣,要求計算平均分,還要算最高分、最低分、統計不及格人數和按不同科目的分數順序輸出,如果每一個都寫一個函數,程序會非常的大,同時效率也不是很高。在此用的應該是一種比較好的方法,此處用到了以下幾個函數:
輸入函數:
void input (mark *s)/*數據輸入函數*/
輸出函數:
void print (mark *p)/*輸出學生的記錄的函數*/
void den(mark *p,mark *q,int *m)/*該函數的功能是將第一個的記錄賦給第二個*/
此函數是為後面的sign函數的調用,把一個人的信息存在一個鏈表中,
void converse (mark *s,fsp *q)/*將學生的記錄轉放到中間變數q中*/
此函數實現的功能是把數學,英語,計算機的個作為一個鏈表存儲在一起,為後面的過程更簡便。
void sign(mark *s,mark *a,mark *b,mark *c,mark *d,fsp *q)
此函數的功能是對學生的各科成績及平均分進行排序。
void count(mark *s) /*統計各科平均分 各科的最高(低)分及各分數段的人數*/
void found(mark *s)/*輸入學生的學號查詢學生的成績情況*/

(1) 程序清單
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define N 7 /*學生的人數*/
typedef struct
{
char num[5];
char name[10]; /*記錄姓名和學號*/
float math,english,comput,average; /*各個科目及平均分*/
}mark; /*定義學生記錄結構體類型*/
typedef struct
{
float fen[4];
int n;
}fsp;/*定義學生記錄轉化的中間變數*/
void input (mark *s)/*數據輸入函數*/
{
int i;
mark *p;
printf("請輸入每個學生的記錄\n");
for(i=0,p=s;i<N;i++,p++)
{
scanf("%s%s%f%f%f",p->num,p->name,&p->math,&p->english,&p->comput);
p->average=(p->math+p->english+p->comput)/3;
}
}
void print (mark *p)/*輸出學生的記錄的函數*/
{
int i;
mark *s;
for(i=0,s=p;i<N;i++,s++)
printf("%s %s %.1f %.1f %.1f %.1f\n", s->num,s->name,s->math,s->english,s->comput,s->average);
}
void den(mark *p,mark *q,int *m)/*該函數的功能是將第一個的記錄賦給第二個*/
{
int i; /*m中存放學生的位序號(按成績排序)*/
for(i=0;i<N;i++)
{ strcpy((q+i)->num,(p+*(m+i))->num);
strcpy((q+i)->name,(p+*(m+i))->name);
(q+i)->math=(p+*(m+i))->math;
(q+i)->english=(p+*(m+i))->english;
(q+i)->comput=(p+*(m+i))->comput;
(q+i)->average=(p+*(m+i))->average;
}
}
void converse (mark *s,fsp *q)/*將學生的記錄轉放到中間變數q中*/
{
fsp *p;
int i;
for(i=0,p=q;i<N;i++,p++)
{ p->n=i;
*(p->fen)=(s+i)->math;
*(p->fen+1)=(s+i)->english;
*(p->fen+2)=(s+i)->comput;
*(p->fen+3)=(s+i)->average;
}
}
void sign(mark *s,mark *a,mark *b,mark *c,mark *d,fsp *q)
{ /*對學生的各科成績及平均分進行排序*/
int t[N],i,j,k,x,n;/*t中存放學生的位序號(按成績排序)*/
float temp;/*排序過程中的中間變數 */
for(i=0;i<4;i++)/*i的不同指向不同的科目及平均成績 */
{ for(j=0;j<N;j++)
{ temp=*((q+j)->fen+i); x=j;/*初始化中間變數*/
for(k=j+1;k<N;k++)
if( *((q+k)->fen+i)<temp )
{ x=k; temp=*((q+k)->fen+i);}
if(x!=j)
{ temp=*((q+j)->fen+i);
*((q+j)->fen+i)=*((q+x)->fen+i);
*((q+x)->fen+i)=temp;
n=(q+j)->n; (q+j)->n=(q+x)->n; (q+x)->n=n;
}/*交換兩變數 */
t[j]=(q+j)->n;
}
switch(i)
{ case 0: den(s,a,t);break;
case 1: den(s,b,t);break;
case 2: den(s,c,t);break;
case 3: den(s,d,t);break;
}
}
}
void count(mark *s)/*統計各科平均分 各科的最高(低)分及各分數段的人數*/
{
float ave[3]={0};/*存放各科平均分 */
float m[3][2] ;
int num[3][5]={0};/*存放各分數段的人數*/
int i;
m[0][1]=m[0][0]=s->math;
m[1][0]=m[1][1]=s->english;
m[2][0]=m[2][1]=s->comput;
for(i=0;i<N;i++)
{ ave[0]+=(s+i)->math;
ave[1]+=(s+i)->english;
ave[2]+=(s+i)->comput;
if( (s+i)->math > m[0][0] )
m[0][0]=(s+i)->math;
else if( (s+i)->math < m[0][1] )
m[0][1]=(s+i)->math;
if( (s+i)->english > m[1][0] )
m[1][0]=(s+i)->english;
else if( (s+i)->english < m[1][1] )
m[1][1]=(s+i)->english;

if( (s+i)->comput > m[2][0] )
m[2][0]=(s+i)->comput;
else if( (s+i)->comput < m[2][1] )
m[2][1]=(s+i)->comput;
/*統計各科的最高(低)分*/
if((s+i)->math<60.0)
num[0][0]++;
else if((s+i)->math<70.0)
num[0][1]++;
else if((s+i)->math<80.0)
num[0][2]++;
else if((s+i)->math<90.0)
num[0][3]++;
else num[0][4]++;
/*統計數學各分數段的人數*/
if((s+i)->english<60.0)
num[1][0]++;
else if((s+i)->english<70.0)
num[1][1]++;
else if((s+i)->english<80.0)
num[1][2]++;
else if((s+i)->english<90.0)
num[1][3]++;
else num[1][4]++;
/*統計英語各分數段的人數*/
if((s+i)->comput<60.0)
num[2][0]++;
else if((s+i)->comput<70.0)
num[2][1]++;
else if((s+i)->comput<80.0)
num[2][2]++;
else if((s+i)->comput<90.0)
num[2][3]++;
else num[2][4]++;
/*統計計算機各分數段的人數 */
}
for(i=0;i<3;i++)
ave[i]=ave[i]/N;
printf("三門科的平均分分別為:\n%.1f %.1f %.1f\n",ave[0],ave[1],ave[2]);
printf("三門科的最高分與最底分分別為:\n");
printf("%.1f %.1f\n%.1f %.1f\n%.1f %.1f\n",
m[0][0],m[0][1],m[1][0],m[1][1],m[2][0],m[2][1]);
printf("三門科不及格 60-69 70-79 80-89 90分以上的人數分別為:\n");
printf("數學: %3d%5d%6d%6d%4d\n",num[0][0],num[0][1],num[0][2],num[0][3],num[0][4]);
printf("英語: %3d%5d%6d%6d%4d\n",num[1][0],num[1][1],num[1][2],num[1][3],num[1][4]);
printf("計算機:%3d%5d%6d%6d%4d\n",num[2][0],num[2][1],num[2][2],num[2][3],num[2][4]);
}
void found(mark *s)/*輸入學生的學號查詢學生的成績情況*/
{
char a[10];/*接受輸入的學號*/
int flag,i;/*循環變數*/
char * b="exit";
do
{ flag=0;
printf("請輸入所要查詢的學生的學號或姓名\n");
getchar();
gets(a);
for(i=0;i<N;i++)
if(strcmp(a,(s+i)->num)==0 || strcmp(a,(s+i)->name)==0 )
{printf("該生的學號,姓名,各門課程及平均成績為:\n%s %s %.1f %.1f %.1f %.1f\n"
,(s+i)->num,(s+i)->name,(s+i)->math,(s+i)->english,(s+i)->comput,(s+i)->average);/*成績列印*/
flag=1;}
if(flag==0) printf("查無此人\n");
}while(strcmp(a,b));
printf("查詢結束");
}
main()
{
mark *s,*a,*b,*c,*d;
fsp *p;
s=(mark*)malloc(N*sizeof(mark));
a=(mark*)malloc(N*sizeof(mark));
b=(mark*)malloc(N*sizeof(mark));
c=(mark*)malloc(N*sizeof(mark));
d=(mark*)malloc(N*sizeof(mark));
p=(fsp*)malloc(N*sizeof(fsp));/*各變數空間開辟 */
input(s);
printf("初始化學生的記錄為:\n");
print(s);
converse(s,p);
sign(s,a,b,c,d,p);
printf("按數學成績排序學生的記錄為:\n");
print(a);
printf("按英語成績排序學生的記錄為:\n");
print(b);
printf("按計算機成績排序學生的記錄為:\n");
print(c);
printf("按平均成績排序學生的記錄為:\n");
print(d);
count(s);
found(s);
getch();
}

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919