C窗體學生成績統計系統
A. c語言學生成績統計系統,
#include<stdio.h>
#include<string.h>
#define NUM1 3
#define NUM2 3
#define NUM3 3
struct student
{
char name[10];
int score;
}c1[NUM1],c2[NUM2],c3[NUM3];//定義三個結構體數組
int i,j,k;
FILE *fp1_order,*fp2_order,*fp3_order;//定義文件指針
//=========================================================
void main(void)
{
void data_in(void);
void score_order(void);
void save_in(void);
void save_order(void);
void open_order(void);
printf("******************************學生成績文件管理******************************\n");
printf(" programmer:喻翔\n\n");
printf("一、輸入三個班的學生姓名和成績:\n\n");
data_in();
printf("\n\n\n");
printf("############################################################################\n\n");
printf("二、保存輸入的姓名和成績:\n\n");
save_in();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("三、排名並保存姓名和成績:\n\n");
score_order();
save_order();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("四、驗證排名後保存的文件:\n\n");
open_order();
printf("\n\n\n");
}
//============================================
void data_in(void)
{
printf("請輸入一班%d個學生的姓名和成績:\n",NUM1);
for(i=0;i<NUM1;i++)
{
printf("第%d個:",i+1);
scanf("%s %d",c1[i].name,&c1[i].score);
}
printf("\n\n\n請輸入二班%d個學生的姓名和成績:\n",NUM2);
for(j=0;j<NUM2;j++)
{
printf("第%d個:",j+1);
scanf("%s %d",c2[j].name,&c2[j].score);
}
printf("\n\n\n請輸入三班%d個學生的姓名和成績:\n",NUM3);
for(k=0;k<NUM3;k++)
{
printf("第%d個:",k+1);
scanf("%s %d",c3[k].name,&c3[k].score);
}
}
//=============================================================
void score_order(void)
{
int h,t;
char s[10];
for(h=0;h<NUM1-1;h++)
for(i=0;i<NUM1-1-h;i++)
if(c1[i].score<c1[i+1].score)
{
t=c1[i].score;
c1[i].score=c1[i+1].score;
c1[i+1].score=t;
strcpy(s,c1[i].name);//一定要使用strcpy()函數
strcpy(c1[i].name,c1[i+1].name);
strcpy(c1[i+1].name,s);
}
for(h=0;h<NUM2-1;h++)
for(j=0;j<NUM2-1-h;j++)
if(c2[j].score<c2[j+1].score)
{
t=c2[j].score;
c2[j].score=c2[j+1].score;
c2[j+1].score=t;
strcpy(s,c2[j].name);
strcpy(c2[j].name,c2[j+1].name);
strcpy(c2[j+1].name,s);
}
for(h=0;h<NUM3-1;h++)
for(k=0;k<NUM3-1-h;k++)
if(c3[k].score<c3[k+1].score)
{
t=c3[k].score;
c3[k].score=c3[k+1].score;
c3[k+1].score=t;
strcpy(s,c3[k].name);
strcpy(c3[k].name,c3[k+1].name);
strcpy(c3[k+1].name,s);
}
}
//=====================================================================
void save_in(void)
{
FILE *fp1_in,*fp2_in,*fp3_in;
if((fp1_in=fopen("data1_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_in);
if((fp2_in=fopen("data2_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_in);
if((fp3_in=fopen("data3_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_in);
}
//==============================================================
void save_order(void)
{
if((fp1_order=fopen("data1_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_order);
if((fp2_order=fopen("data2_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_order);
if((fp3_order=fopen("data3_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_order);
}
//=============================================================
void open_order(void)
{
fp1_order=fopen("data1_order.dat","rb");
printf("一班的成績排名如下:\n");
printf("名次 姓名 C語言成績\n");
printf("----------------------------------------\n");
for(i=0;i<NUM1;i++)
{
printf("第%d名 ",i+1);
fread(&c1[i],sizeof(struct student),1,fp1_order);
printf("%s %d\n",c1[i].name,c1[i].score);
}
fp2_order=fopen("data2_order.dat","rb");
printf("\n\n\n二班的成績排名如下:\n");
printf("名次 姓名 C語言成績\n");
printf("----------------------------------------\n");
for(j=0;j<NUM2;j++)
{
printf("第%d名 ",j+1);
fread(&c2[j],sizeof(struct student),1,fp2_order);
printf("%s %d\n",c2[j].name,c2[j].score);
}
fp3_order=fopen("data3_order.dat","rb");
printf("\n\n\n三班的成績排名如下:\n");
printf("名次 姓名 C語言成績\n");
printf("----------------------------------------\n");
for(k=0;k<NUM3;k++)
{
printf("第%d名 ",k+1);
fread(&c3[k],sizeof(struct student),1,fp3_order);
printf("%s %d\n",c3[k].name,c3[k].score);
}
}
B. 用C語言設計一個學生成績統計系統
// Note:Your choice is C++ IDE
#include <iostream>
#include <string>
using namespace std;
//N代表科目數,M代表人數
#define N 2
#define M 3
class student
{public:
float score[N];
string name;
float average;
float total;
int rank;
student();
void inscore();
void calav();
void caltt();
void show();
};
void student::inscore()
{
int i;
cout<<"輸入姓名:";
cin>>name;
cout<<"輸入成績:";
for(i=0;i<N;i++)
{
cin>>score[i];
}
caltt();
calav();
}
void student::calav()
{
average=total/N;
}
void student::caltt()
{
int i;
for(i=0;i<N;i++)
total+=score[i];
}
void student::show()
{
int i;
cout<<rank<<" "<<name<<" ";
for(i=0;i<N;i++)
cout<<score[i]<<" ";
cout<<endl;
}
void setrank(student sys[M])
{
int i,j;
student tmp=sys[0];
for(i=0;i<M-1;i++)
{
for(j=i+1;j<M;j++)
if(sys[j].average>sys[i].average)
{
tmp=sys[j];
sys[j]=sys[i];
sys[i]=tmp;
}
sys[i].rank=i+1;
}
sys[i].rank=i+1;
}
void findsc(student sys[M])
{
string n;
int i;
cout<<"請輸入查詢的名字:";
cin>>n;
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(i=0;i<M;i++)
if(sys[i].name==n)
{
sys[i].show();
}
}
void findrank(student sys[M])
{
string n;
int i;
cout<<"請輸入查詢的名字:";
cin>>n;
for(i=0;i<M;i++)
if(sys[i].name==n) cout<<sys[i].rank;
}
void find10(student sys[M])
{
int j;
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(j=0;j<10;j++)
sys[j].show();
}
void findgrade(student sys[M])
{
int i,j;
cout<<"1.>=85 2.>=75 3.>=60 4.<60"<<endl;
cin>>i;
switch(i)
{
case 1:
{
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(j=0;j<M;j++)
sys[j].show();
}
break;
case 2:
{
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(j=0;j<M;j++)
if(sys[j].average>=75 && sys[j].average<85) sys[j].show();
}
break;
case 3:
{
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(j=0;j<M;j++)
sys[j].show();
}
break;
case 4:
{
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(j=0;j<M;j++)
if(sys[j].average<60) sys[j].show();
}
break;
}
}
void findbad(student sys[M])
{
int i,j,k;
for(i=0;i<M;i++)
{
k=0;
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(j=0;j<N;j++)
{
if(sys[i].score[j]<60) k++;
if(k==3)
}
}
}
void pub(student sys[M])
{
int i;
cout<<"排名 "<<"姓名 "<<"--成績--"<<endl;
for(i=0;i<M;i++)
sys[i].show();
}
int main()
{
student st[M];
int i,j;
while(1)
{
cout<<
"-------------------------------\n"<<
"1.輸入成績\n"<<
"2.查詢任一學生成績\n"<<
"3.查詢任一學生排名\n"<<
"4.查詢前十的學生\n"<<
"5.查詢成績級別的情況\n"<<
"6.查詢三門不及格的學生\n"<<
"7.按成績高低,順序輸入所有學生\n"<<
"-------------------------------"<<endl;
cin>>i;
switch(i)
{
case 1:
for(j=0;j<M;j++)
{
cout<<"輸入第"<<j+1<<"個學生的成績"<<endl;
st[j].inscore();
};
setrank(st);
break;
case 2:findsc(st);system("pause");break;
case 3:findrank(st);system("pause");break;
case 4:find10(st);system("pause");break;
case 5:findgrade(st);system("pause");break;
case 6:findbad(st);system("pause");break;
case 7:pub(st);system("pause");break;
}
}
return 0;
}
C. c\c++課程設計 學生成績管理及統計系統
#include <string.h>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>//包含system函數頭文件
#define LEN sizeof(struct student)
struct student
{
char num[20];//學號
char name[100];//用戶姓名
char phone[20];//電話號碼
char home[100];//通訊地址
char birthday[20];//出生日期
struct student *next;
};
void face(void)//功能選擇面板
{
printf("********************************************************************");
printf("\t\t\t\t☆★☆★☆★ ~_~ ~_~ ~_~ ☆★☆★☆★\n");
printf("\n\t\t\t☆★歡迎使用張億斐電話號碼查詢系統☆★");
printf("\n\n\t☆★選擇你需要操作的功能:☆★(現無記錄,建議先填加記錄)★☆\n");
printf("\n");
printf("\t\t\t1.【增加系統信息〗\n");
printf("\t\t\t2.〖顯示系統中所有記錄】\n");
printf("\t\t\t3.【刪除需要刪除的信息〗\n");
printf("\t\t\t4.〖以名字查詢所需的信息】\n");
printf("\t\t\t5.【保存系統中的所有記錄到指定文件中〗\n");
printf("\t\t\t6.〖退出不保存!!】\n");
printf("\n");
printf("\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★");
printf("\n\n********************************************************************\n\n");
}
void print(struct student *head)
{
struct student *p;
p=head;
system("CLS");//調用DOS命令CLS能夠清屏
printf("*************************************************************\n");
printf("==================== → 用戶信息記錄表 ← ===================\n");
printf("*************************************************************\n");
if(head!=NULL)
do
{
printf("聯系人學號:%s\n",p->num);
printf("聯系人姓名:%s\n",p->name);
printf("聯系人電話號碼:%s\n",p->phone);
printf("學生地址:%s\n",p->home);
printf("聯系人出生日期:%s\n",p->birthday);
printf("********************************************************\n");
p=p->next;
}while(p!=NULL);
else
{
printf("對不起!!沒有任何聯系人記錄!!\n\n");
printf("=============================================================\n");
}
}
//增添電子通訊錄中的內容,即創建連表過程
struct student *append(struct student *head)
{
struct student *p0=NULL,*p1,*p2;//p0為要插入的新節點
p1=head;
p2=head;
system("CLS");
printf("\n\n***********************************************************\n");
printf("\t\t你能在此目錄下創建並添加聯系人信息");
printf("\n***********************************************************\n");
p0=(struct student *)malloc(LEN);
printf("請輸入聯系人學號:");
gets(p0->num);
printf("請輸入聯系人姓名:");
gets(p0->name);
printf("請輸入聯系人電話號碼:");
gets(p0->phone);
printf("請輸入聯系人地址:");
gets(p0->home);
printf("請輸入聯系人出生日期:");
gets(p0->birthday);
//對插入的節點排序,按姓名的拼音順序
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{
while((strcmp(p0->name,p1->name)>0)&&(p1->next!=NULL))
{p2=p1;p1=p1->next;}
if((strcmp(p0->name,p1->name))<=0)
{
if(head==p1)
head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{p1->next=p0;p0->next=NULL;}
printf("恭喜你!!成功添加了聯系人信息!!");
printf("\n************************************************************\n");
printf("\n\n");
}
return(head);
}
//電子通訊錄的維護(刪除),通過輸入聯系人學號刪除聯系人數據
struct student *del(struct student *head)
{
struct student *p1,*p2;
char num[12];
system("CLS");
printf("\n\n************************************************************\n");
printf("================= → 用戶信息記錄刪除功能 ← ===============\n");
printf("************************************************************\n");
printf("輸入要刪除的聯系人學號:");
gets(num);
p1=head;
if (head==NULL)
{
printf("很抱歉!!沒有任何聯系人紀錄!!\n");
printf("\n*******************************************************\n");
return(head);
}
while(p1!=NULL)
{
if(strcmp(p1->num,num)==0)
{
if(p1==head)
head=p1->next;
else p2->next=p1->next;
free(p1);
printf("刪除記錄成功!!\n");
return(head);
}
p2=p1;
p1=p1->next;
}
printf("對不起!!沒有要刪除的聯系人紀錄!!\n");
return(head);
}
//電子通訊錄的查找,關鍵字為用戶姓名;
void search(struct student *head)
{
struct student *p1,*p2;
char name[20];
p1=head;
p2=p1;
system("CLS");
printf("\n**************************************************************\n");
printf("================ → 用戶信息記錄查詢功能 ← ==================\n");
printf("**************************************************************\n");
printf("輸入要查找聯系人的姓名:");
gets(name);
while(p1!=NULL)
{
if(strcmp(p1->name,name)==0)
{
printf("聯系人學號:");
puts(p1->num);
printf("聯系人姓名:");
puts(p1->name);
printf("聯系人電話號碼:");
puts(p1->phone);
printf("聯系人地址:");
puts(p1->home);
printf("聯系人出生日期:");
puts(p1->birthday);
printf("\n=============================================================\n");
break;
}
p2=p1;
p1=p1->next;
}
if(p1==NULL)
printf("對不起!!沒有該聯系人的紀錄!!\n");
}
//電子通訊錄的記錄存檔操作,使用文件指針;
void save(struct student *head)
{
FILE *fp,*fp1;
struct student *p;
p=head;
fp=fopen("record.txt","w");
fp1=fopen("record1.txt","w");
fprintf(fp1,"=============== → 用戶信息記錄表 ← =================\n");
while(p!=NULL)
{
//首先把數據保存在record.txt中,這是提供給load函數用的數據
//fprintf(fp," %s %s %s %s %s %s",p->num,p->name,p->phone,p->email,p->home,p->birthday);
//然後把數據保存在record1.txt中,這是能提供直接查詢看的,有比較友好的畫面
fprintf(fp1,"====================================================\n");
fprintf(fp1,"聯系人學號:%s\n",p->num);
fprintf(fp1,"聯系人姓名:%s\n",p->name);
fprintf(fp1,"聯系人電話:%s\n",p->phone);
fprintf(fp1,"聯系人家庭地址:%s\n",p->home);
fprintf(fp1,"聯系人出生日期:%s\n",p->birthday);
p=p->next;
}
fprintf(fp1,"*************************************************************\n");
fclose(fp1);
fclose(fp);
printf("\n\n恭喜你!!成功儲存,你能在record1.txt找到相應紀錄\n");
printf("**************************************************************\n");
printf("PRESS ANY KEY TO EXIT.\n\n");
getchar();
exit(1);
}
//電子通訊錄的記錄讀盤操作,使用文件指針;
struct student *load(void)
{
FILE *fp;
struct student *head=NULL,*p1=NULL,*p2=NULL;
char c;
int i;
fp=fopen("record.txt","r");
for(i=1;(c=fgetc(fp))!=-1;i++)
{
p1=(struct student *)malloc(LEN);
//fscanf(fp,"%s %s %s %s %s %s",p1->num,p1->name,p1->phone,p1->email,p1->home,p1->birthday);
if(i==1)
{head=p1;p2=p1;}
else
{p2->next=p1;p2=p1;}
}
if(p1==NULL)
{fclose(fp);return(head);}
p2->next=NULL;
fclose(fp);
return(head);
}
main()
{
FILE *fp1,*fp2;
int c;//功能選擇需要的號碼
system("cls");
system("color 5f");
system("cls");
struct student *head=NULL;
if ((fp1=fopen("record.txt","r"))==NULL)
{
fp2=fopen("record.txt","w");//如果不存在record.txt就創建一個
fclose(fp2);
}
head=load();
while(1)
{
face();
printf("選擇你需要操作的功能號碼:");
scanf("%d",&c);
getchar();
switch(c)
{
case 1:head=append(head);break;
case 2:print(head);break;
case 3:head=del(head);break;
case 4:search(head);break;
case 5:save(head);break;
case 6:exit(0);break;
default :printf("Enter error!!\n");
}
//printf("*****************\n");
printf("◇◆請按ENTER返回功能操作菜單◇◆\n");
//printf("*****************\n");
getchar();
system("CLS");
}
}
D. C 語言實現 學生成績統計、排序的實現
#include "stdio.h"
#include "conio.h"
int i;
int temp;
int j;
int choose;
struct{
int stuid;
char stuname[20];
char obj1[20];
char obj2[20];
char obj3[20];
char obj4[20];
int grade1;
int grade2;
int grade3;
int grade4;
}info[3];
/*初始化數據*/
void inputinfo(){
for(i=0;i<3;i++){
printf("The %d student id :",i+1);
scanf(" %d",&info[i].stuid);
printf("The %d student name:",i+1);
scanf(" %c",&info[i].stuname);
getchar();
printf("The %d student objectname1:",i+1);
scanf(" %c",&info[i].obj2);
getchar();
printf("The %d student grade1:",i+1);
scanf(" %d",&info[i].grade1);
getchar();
printf("The %d student objectname2:",i+1);
scanf(" %c",&info[i].obj2);
getchar();
printf("The %d student grade2:",i+1);
scanf(" %d",&info[i].grade2);
getchar();
printf("The %d student objectname3:",i+1);
scanf(" %c",&info[i].obj3);
getchar();
printf("The %d student grade3:",i+1);
scanf(" %d",&info[i].grade3);
getchar();
printf("The %d student objectname4:",i+1);
scanf(" %c",&info[i].obj4);
getchar();
printf("The %d student grade4:",i+1);
scanf(" %d",&info[i].grade4);
getchar();
}
}
/*每門課程的平均成績*/
void getAveGrade(){
int grade1 = 0;
int grade2 = 0;
int grade3 = 0;
int grade4 = 0;
for(i=0;i<3;i++){
grade1 = grade1 + info[i].grade1;
grade2 = grade2 + info[i].grade2;
grade3 = grade3 + info[i].grade3;
grade4 = grade4 + info[i].grade4;
}
printf("The %c is: %d",info[0].obj1,grade1/3);
printf("The %c is: %d",info[1].obj2,grade2/3);
printf("The %c is: %d",info[2].obj3,grade3/3);
printf("The %c is: %d",info[3].obj4,grade4/3);
}
/*輸出有課程不及格學生的姓名,學號及其各門課程的成績*/
void getflunkinfo(){
for(i=0;i<3;i++){
if(info[i].grade1<60 || info[i].grade2<60 || info[i].grade3<60 || info[i].grade4<60){
printf("Student id: %d",info[i].stuid);
printf("Student Name: %c",info[i].stuname);
printf("The %c : %d",info[i].obj1,info[i].obj1);
printf("The %c : %d",info[i].obj2,info[i].obj2);
printf("The %c : %d",info[i].obj3,info[i].obj3);
printf("The %c : %d",info[i].obj4,info[i].obj4);
}
}
}
/*輸出個人平均分超過90分的學生姓名,學號*/
void getGoodStudent(){
for(i=0;i<3;i++){
int count = (info[i].grade1 + info[i].grade2 + info[i].grade3 + info[i].grade4)/3;
if(count>=90){
printf(" The good student id is : %c",info[i].stuid);
printf(" The good student name is : %c",info[i].stuname);
}
}
}
/*對4門課程中的任何一門,可隨意抽取1門按學生成績進行排序*/
void geteachgrade(){
int count[3];
printf("Please input the number 1~4: ");
scanf(" %d",&choose);
if(choose==1){
for(i=0;i<3;i++){
count[i] = info[i].grade1;
}
}
else if(choose==2){
for(i=0;i<3;i++){
count[i] = info[i].grade2;
}
}
else if(choose==3){
for(i=0;i<3;i++){
count[i] = info[i].grade3;
}
}
else if(choose==4){
for(i=0;i<3;i++){
count[i] = info[i].grade4;
}
}
/*冒泡排序*/
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(count[j]<count[i]){
temp = count[i];
count[i] = count[j];
count[j] = temp;
}
}
}
for(i=0;i<10;i++){
printf(" %d ",count[i]);
}
}
/*退出*/
void exit(){
exit(0);
}
void main()
{
inputinfo();
printf("Please input the number 1~5: ");
scanf(" %d",&choose);
if(choose==1){
getAveGrade();
}
else if(choose==2){
getflunkinfo();
}
else if(choose==3){
getGoodStudent();
}
else if(choose==4){
geteachgrade();
}
else if(choose==5){
exit();
}
}
E. 用c語言編寫 簡單學生成績統計軟體
#include<stdio.h>
intmain()
{
floatmark1,mark2,c;
intyou=0;
for(;;)
{
printf("請輸入兩門抄課程的成績襲_____");
scanf("%f,%f",&mark1,&mark2);
c=(mark1+mark2)/2;
printf(" 你的總分是:%.2f平均分是:%.2f 總評為:",mark1+mark2,c);
if(c>=85)
{
printf("優 ");
you++;
}
if(c>=70&&c<85)
printf("中 ");
if(c<70)
printf("差 ");
printf("目前得優的人數為%d ",you);
getchar();
}
return0;
}
F. 用c語言編寫一個學生成績統計系統 急!!
思路提示。創建一個頭文件,定義二維數組保存學生成績。聲明求學生總成績以及各科最高最低成績函數。創建源文件,實現上述頭文件聲明的函數。創建main函數調用上述方法即可
G. c語言編一個學生成績統計程序
#include <stdio.h>
void main()
{
int i, n, reno; float score[30], avr, a, b, c;
char name[30][9];
for(i = 0; i < 30; i++)
{
printf("%d號的成績:", i+1); scanf("%f", &score[i]);
if(score[i] < 0) break;
printf("%d號的姓名:", i+1); scanf("%s", name[i]);
}
n = i;
printf("統計不及格人數:\n");
reno = 0; avr = 0;
for(i = 0; i < n; i++)
{
if( score[i] < 60) { reno++; printf("%d, %s\n", i+1, name[i]); }
avr += score[i];
}
printf("不及格人數為%d\n\n", reno);
printf("統計成績在平均分及平均分之上的學生人數:\n");
avr /= n;reno = 0;
for(i = 0; i < n; i++)
{
if(score[i] >= avr) { reno++; printf("%d, %s\n", i+1, name[i]); }
}
printf("成績在平均分及平均分之上的學生人數為%d\n\n", reno);
printf("統計各分數段的人數及所佔百分比(分數段為<60,60~79,>=80):\n");
a = b = c =0;
for(i = 0; i < n; i++)
{
if(score[i] < 60) a++;
else if(score[i] >= 80) c++;
else b++;
}
printf("<60:\t%.1f%%\n60~79:\t%.1f%%\n>=80:\t%.1f%%\n",100*a/n,100*b/n,100*c/n);
}
H. 用C語言做一個學生成績統計系統,求幫忙(源代碼。。)
可以給你。需要點時間。現在在上課。
#include <stdio.h>
void main()
{
int Password =0,i=0,sum=0;
clrscr();
printf("\n===請輸入密碼!====\n");
while(Password != 1234)
{
if(i>3)
{
printf(" 密碼錯誤!\n ");
return;
}
i++;
printf(" 請輸入密碼!\n");
}
//以上為三次密碼部分,密碼默認1234。
int k=0,b=0;
int stu[50];
loop:
printf("1. 學生成績錄入(限人數50)\n");
printf("2. 顯示學生成績\n");
printf("3. 統計總分平均分\n");
printf("4. 最高分和最低分\n");
printf("5. 統計各分數段人數\n");
printf("6. 退出\n");
abc:
scanf("%d",&k);
switch(k)
{
case 1:
printf("請輸入50個學生成績:\n");
for(i=0;i<50;i++)
{
scanf("%d",&stu[i]);
b=i;
}
printf("請選擇下一個選項:\n");
goto abc;
case 2:
if(b == 50)
{
printf(" 顯示學生成績:\n");
for(i=0;i<50;i++)
printf(" %d ",stu[i]);
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 3:
if(b == 50)
{
printf(" 顯示學生總分:\n");
for(i=0;i<50;i++)
sum += stu[i];
printf(" %d ",sum);
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 4:
if(b == 50)
{
printf(" 顯示學生最大分,最小分:\n");
min = stu[0];
max = stu[49];
for(i=0;i<50;i++)
if(min > stu[i])
min = stu[i];
for(i=0;i<50;i++)
if(max < stu[i])
max = stu[i];
printf(" %d %d ",max ,min);
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 5:
if(b == 50)
{
printf(" 統計各分數段人數:\n");
// ************************************
// 哥們,這里你自己來寫好嗎?我給點提示,把及格,不及格寫出來。細分分數段,你自己來吧。
int x=0,y=0;
for(i=0;i<50;i++)
if (stu[i]>=60)
x++;
else
y++;
printf(" 及格人數 %d 人,不及格人數 %d 人\n",x,y);
// ***********************************
printf("請選擇下一個選項:\n");
goto abc;
}
else
{
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
case 6:
break;
default:
clrscr();
printf("========================\n");
printf(" 請先輸入50個學生成績:\n");
goto loop;
}
//switch語句結束。
getch();
}
親,剛寫好了。我沒調試。這個僅供參考。自己調試,有錯就找找。
I. 用C語言設計一個學生成績統計程序,
要求輸入10個學生5門功課的成績,分別用子函數求出:(1)每個學生的平均分;(2)每門功課的平均分;(3)找出最高分所對應的學生和功課。
#include<stdio.h>
#include<stdlib.h>
structstudent
{
doublescore[5];
}s[10];
voidavg()
{
printf(" ");
doublesum;
for(inti=0;i<10;i++)
{
sum=0;
printf("第%d位學生的平均分數是:",i+1);
for(intj=0;j<5;j++)
sum+=s[i].score[j];
printf("%.2lf ",sum/5);
}
printf(" ");
return;
}
voidtavg()
{
printf(" ");
doublesum;
for(intj=0;j<5;j++)
{
sum=0;
for(inti=0;i<10;i++)
sum+=s[i].score[j];
printf("第%d門功課的平均分是:%.2lf ",j+1,sum/10);
}
return;
}
voidmaxsc()
{
printf(" ");
doublemax=-1;
inti,j;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
if(max<s[i].score[j])
{
max=s[i].score[j];
}
}
printf("最高分是:%.2lf分,對應學生與功課如下: ",max);
for(i=0;i<10;i++)
{
for(intj=0;j<5;j++)
if(max==s[i].score[j])
{
printf("第%d位學生的第%d門成績 ",i+1,j+1);
}
}
printf(" ");
}
intmain()
{
inti,j;
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
printf("輸入第%d位學生的第%d門功課的成績:",i+1,j+1);
scanf("%lf",&s[i].score[j]);
printf(" ");
}
printf(" ");
}
printf("學生平均分數情況: ");
avg();//每個學生的平均分
printf("功課平均分數情況: ");
tavg();//每門功課的平均分
printf("最高分數即對應學生功課: ");
maxsc();//最高分對應的學生和功課
system("PAUSE");
return0;
}
J. c語言學生成績統計系統
#include<stdio.h>
#include<string.h>
#define NUM1 3
#define NUM2 3
#define NUM3 3
struct student
{
char name[10];
int score;
}c1[NUM1],c2[NUM2],c3[NUM3];//定義三個結構體數組
int i,j,k;
FILE *fp1_order,*fp2_order,*fp3_order;/*/定義文件指針
/*/=========================================================
void main(void)
{
void data_in(void);
void score_order(void);
void save_in(void);
void save_order(void);
void open_order(void);
printf("******************************學生成績文件管理******************************\n");
printf(" programmer:喻翔\n\n");
printf("一、輸入三個班的學生姓名和成績:\n\n");
data_in();
printf("\n\n\n");
printf("############################################################################\n\n");
printf("二、保存輸入的姓名和成績:\n\n");
save_in();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("三、排名並保存姓名和成績:\n\n");
score_order();
save_order();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("四、驗證排名後保存的文件:\n\n");
open_order();
printf("\n\n\n");
}
//=============================================================
void data_in(void)
{
printf("請輸入一班%d個學生的姓名和成績:\n",NUM1);
for(i=0;i<NUM1;i++)
{
printf("第%d個:",i+1);
scanf("%s %d",c1[i].name,&c1[i].score);
}
printf("\n\n\n請輸入二班%d個學生的姓名和成績:\n",NUM2);
for(j=0;j<NUM2;j++)
{
printf("第%d個:",j+1);
scanf("%s %d",c2[j].name,&c2[j].score);
}
printf("\n\n\n請輸入三班%d個學生的姓名和成績:\n",NUM3);
for(k=0;k<NUM3;k++)
{
printf("第%d個:",k+1);
scanf("%s %d",c3[k].name,&c3[k].score);
}
}
//=============================================================
void score_order(void)
{
int h,t;
char s[10];
for(h=0;h<NUM1-1;h++)
for(i=0;i<NUM1-1-h;i++)
if(c1[i].score<c1[i+1].score)
{
t=c1[i].score;
c1[i].score=c1[i+1].score;
c1[i+1].score=t;
strcpy(s,c1[i].name);//一定要使用strcpy()函數
strcpy(c1[i].name,c1[i+1].name);
strcpy(c1[i+1].name,s);
}
for(h=0;h<NUM2-1;h++)
for(j=0;j<NUM2-1-h;j++)
if(c2[j].score<c2[j+1].score)
{
t=c2[j].score;
c2[j].score=c2[j+1].score;
c2[j+1].score=t;
strcpy(s,c2[j].name);
strcpy(c2[j].name,c2[j+1].name);
strcpy(c2[j+1].name,s);
}
for(h=0;h<NUM3-1;h++)
for(k=0;k<NUM3-1-h;k++)
if(c3[k].score<c3[k+1].score)
{
t=c3[k].score;
c3[k].score=c3[k+1].score;
c3[k+1].score=t;
strcpy(s,c3[k].name);
strcpy(c3[k].name,c3[k+1].name);
strcpy(c3[k+1].name,s);
}
}
//=====================================================================
void save_in(void)
{
FILE *fp1_in,*fp2_in,*fp3_in;
if((fp1_in=fopen("data1_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_in);
if((fp2_in=fopen("data2_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_in);
if((fp3_in=fopen("data3_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_in);
}
//==============================================================
void save_order(void)
{
if((fp1_order=fopen("data1_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_order);
if((fp2_order=fopen("data2_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_order);
if((fp3_order=fopen("data3_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_order);
}
//=============================================================
void open_order(void)
{
fp1_order=fopen("data1_order.dat","rb");
printf("一班的成績排名如下:\n");
printf("名次 姓名 C語言成績\n");
printf("----------------------------------------\n");
for(i=0;i<NUM1;i++)
{
printf("第%d名 ",i+1);
fread(&c1[i],sizeof(struct student),1,fp1_order);
printf("%s %d\n",c1[i].name,c1[i].score);
}
fp2_order=fopen("data2_order.dat","rb");
printf("\n\n\n二班的成績排名如下:\n");
printf("名次 姓名 C語言成績\n");
printf("----------------------------------------\n");
for(j=0;j<NUM2;j++)
{
printf("第%d名 ",j+1);
fread(&c2[j],sizeof(struct student),1,fp2_order);
printf("%s %d\n",c2[j].name,c2[j].score);
}
fp3_order=fopen("data3_order.dat","rb");
printf("\n\n\n三班的成績排名如下:\n");
printf("名次 姓名 C語言成績\n");
printf("----------------------------------------\n");
for(k=0;k<NUM3;k++)
{
printf("第%d名 ",k+1);
fread(&c3[k],sizeof(struct student),1,fp3_order);
printf("%s %d\n",c3[k].name,c3[k].score);
}
}