c語言學生成績記錄設計
㈠ c語言課程設計 成績記錄薄
c++語言行嗎>
㈡ 學生成績記錄簿設計 編制一個C語言成績記錄簿,每個學生信息包括:學號、姓名、C語言成績。具體功能:
剛給人補一個來……
你有學習源C語言程序指導書么?就是全是編程解答的一本書,上面有該實驗源代碼,你要是一點沒寫就可以一下。如果沒有,你可以網路當當網《C程序設計題解與實驗指導》清華大學出版社李丹程等著,上面有個閱讀,點一下就行,還不用買。
㈢ c語言的 學生成績記錄薄
㈣ c語言課程設計總結 題目是學生成績記錄薄設計
我簡單寫,請借鑒:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "time.h"
#include "string.h"
#include<iostream>
using namespace std;
struct Student //定義學生結構
{
char id[20]; //id
char name[11]; //姓名
char res[4]; //成績
int end; //存儲時顯示換行, 可去掉
Student(){end = 0x0a0d;} //回車,換行
}list[100]; //100個賬號, 測試
void main()
{
srand((unsigned)time(0)); //種子
char buf[256]; //緩存
//初始化學生100名
int i;
for(i=0;i<100;++i)
{
strcpy(list[i].id ,itoa(i,buf,10));
strcpy(list[i].name ,"某人");
strcpy(list[i].res, itoa(rand()%100,buf, 10));
}
//保存數據
FILE * pf = fopen("data.txt", "wb");
for(i=0;i<100;++i)
{
fwrite(&list[i], sizeof(Student), 1, pf);
}
fclose(pf);
//讀出數據
Student list_1[100]; //新數組
pf = fopen("data.txt", "rb");
for(i=0;i<100;++i)
{
fread( &list_1[i], sizeof(Student), 1, pf);
}
//顯示 list_1 測試
for(i=0;i<100;++i)
{
cout<<list_1[i].id<<" "<<list_1[i].name <<" "<<list_1[i].res<<endl;
}
}
㈤ 求大神指教:學生成績記錄簿設計,編制一個C語言成績記錄簿,每個學生信息包括:學號、姓名、C語言成績。
// 包含必須的頭文件
#include<stdio.h> #include<stdlib.h> #include<string.h>
// 定義課程的結構體
struct course {
int num; //課程編號
char name[20]; // 課程名字
int result; // 學生的成績
float credit; // 學分
};
// 定義成績記錄簿的結構體,每個學生修了4門課
struct scorelist { int num; //學號
char name[10]; //學生姓名
struct course subject[4]; //課程相關的數據。意思是一個學生修了4門課
};
int n=0; // n用來存儲一共有多少個學生
struct scorelist score[200]; //初始化成績記錄簿,上限為200條學生成績
// 查詢課程的函數
void queryclass() { int number,i,j,max=0,count=0; float average;//平均分
float pass=0; //及格人數
printf("*********請輸入要查詢的課程編號:"); scanf("%d",&number);
// 遍歷所有的學生,列印每個學生修的課程成績 for(i=0;i<n;i++) // 遍歷所有學生
{ for(j=0;j<4;j++) // 遍歷當前學生所修的4門課 {
if(score[i].subject[j].num==number) // 如果符合此條件,說明當前條目即為用戶查詢的課程 {
printf("學號:%d 姓名:%s %s:%d\n",score[i].num,score[i].name,score[i].subject[j].name,score[i].subject[j].result);
if(score[i].subject[j].result>=60) pass++; max+=score[i].subject[j].result; count++; } } }
if(count!=0) {
average=(float)max/count; pass=pass/count;
printf("平均分:%f\n",average);
printf("及格率:%.2f%c\n\n",pass*100,37); } }
// 查詢學生信息 void querystudent() { char xm[10]; int i,flag=0,j,a,xh;
printf("*********請輸入要查詢的項目: 1.學號 2.姓名;"); scanf("%d",&a);
if(a==1) scanf("%d",&xh); else scanf("%s",xm);
// 根據用戶輸入判定用戶是根據學號還是姓名查詢 switch(a) {
// 根據學號查詢
case 1:
// 遍歷查找用戶所輸入的學號
for(i=0;i<n;i++) if(score[i].num==xh){ j=i;flag=1;} if(flag==0) printf("*****抱歉沒有找到.******"); // 沒有找到,跳出 else //找到了用戶輸入的學號,列印 { printf("學號:%d 姓名: %s\n",score[j].num,score[j].name); printf("**課程編號 課程名稱 課程成績 課程學分**\n"); for(i=0;i<4;i++)
{printf("%d %s %d %5.2f\n",score[j].subject[i].num, score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit); } } break;
// 根據姓名查詢 case 2:
// 遍歷查找用戶輸入的姓名 for(i=0;i<n;i++) if(strcmp(score[i].name,xm)==0) {j=i;flag=1; } if(!flag) printf("*****抱歉沒有找到.******"); else // 找到了用戶輸入的學生姓名,列印 { printf("學號:%d 姓名: %s\n",score[j].num,score[j].name); printf("課程編號 課程名稱 課程成績 課程學分\n"); for(i=0;i<4;i++) {
printf("%d %s %d %f\n",score[j].subject[i].num, score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit); } } break;
default:printf("****輸入錯誤!!****"); } }
// 刪除一條學生記錄 void del() { char xm[10];
printf("****請輸入姓名: "); scanf("%s",score[n].name);ch=getchar(); for(i=0;i<4;i++)
{ printf("***請輸入第%d門的課程編號 : ",i+1); scanf("%d",&score[n].subject[i].num);
printf("***請輸入第%d門的課程名稱 : ",i+1); scanf("%s",score[n].subject[i].name);
printf("***請輸入第%d門的課程成績 : ",i+1); scanf("%d",&score[n].subject[i].result);
printf("***請輸入第%d門的課程學分 : ",i+1); scanf("%f",&score[n].subject[i].credit); } n++;
printf("\n1、繼續添加 2、退出[ ]\b\b"); scanf("%d",&choice); if(choice==2) break; } }
// 寫入文件 void writefile() { FILE *fp; int i;
fp=fopen("score_list","wb");//以寫二進制的模式打開文件
//遍歷所有記錄,並把每一個結構體對象以二進制形式寫入文件 for(i=0;i<=n-1;i++)
fwrite(&score[i],sizeof(struct scorelist),1,fp); printf(" !!!文件已保存為scorelist\n\n"); fclose(fp); //關閉文件 }
// 讀文件,並初始化學生成績數組 void readfile()
{ struct scorelist add; FILE *fp; n=0; fp=fopen("score_list","rb"); // 以讀取二進制文件的模式打開文件 fread(&add,sizeof(struct scorelist),1,fp); // 讀取一個結構體長度的數據並把它付給add對象。
// 持續讀取文件,初始化新的add對象,並把它加到score的數組中去 while(!feof(fp)){ score[n]=add;n++;
fread(&add,sizeof(struct scorelist),1,fp); } printf(" !!! 文件scorelist已讀取\n"); fclose(fp); // 關閉文件 }
// 主程序入口 main() { int a; struct scorelist add; FILE *fp;
// 如果沒有score_list這個文件,創建它 if((fp=fopen("score_list","rb"))==NULL) fp=fopen("score_list","wb");
else{ // 如果有score_list這個文件,那麼將其中的數據讀取到全局的score數組。參考readfile() fread(&add,sizeof(struct scorelist),1,fp); while(!feof(fp)){ score[n]=add;n++;
fread(&add,sizeof(struct scorelist),1,fp); } }
fclose(fp);
// 程序一直讀取用戶輸入並解析,然後調用不同的函數進行處理,並返回結果。 while(1) {
printf("********************************************************************************");
printf("\t\t 歡迎 Welcome to\n");
printf("\n\t\t\t 使用成績記錄簿系統1.0\n");
printf("****right歸山東超峰所有********************在此鳴謝 網路知道 老師****************\n")
printf("*************************************MENU***************************************"); printf("\n"); printf(" 成績記錄簿\n"); printf("** ****1.添加\n"); printf("** *****2.刪除\n"); printf("** *****3.查學生成績\n"); printf("** *****4.查班成績表(附加功能@顯示平均分和及格率@)\n"); printf("** *****5.寫入文件\n"); printf("** *****6.讀取文件\n");
printf("** *****0.退出\n"); printf("\n\t\t輸入你的選擇Enter your choice(0--6):"); scanf("%d",&a); getchar(); switch(a) {
case 1:append();break; case 2:del();break; case 3:querystudent();break; case 4:queryclass();break; case 5:writefile();break; case 6:writefile();readfile();break; case 0:writefile();exit(0);break; default:printf("*********錯!請再輸入一遍********"); } }
}
㈥ C語言製作成績記錄簿
#include<stdio,h>
#include<stdlib.h>
struct node
{ char data;struct node *next;};
struct node *insert(struct node *h,char c)
{ struct node *p,*p1,*p2;
p=(struct node *)malloc(sizeof(struct node)); p->data=c;p->next=NULL;
if(h==NULL)h=p;
else
{ p1=p2=h;
while(c>p1->data&&p1->next!=NULL) { p2=p1;p1=p1->next;}
if(c<=p1->data)
if(p1==h) { p->next=h;h=p;}
else { p2->next=p;p->next=p1;}
else { p1->next=p;}
}
return h;
}
struct node *del(struct node *h)
{
struct node *p=h;
while(p!=NULL)
{ if(p->data%2==0) p->next=p->next->next;
p=p->next;
}
return h;
}
void printf(struct node *h)
{ struct node *p=h;
while(p!=NULL)
{ printf("%c",p->data); p=p->next;
printf("\n");
}
void main()
{ struct node *head=NULL; char *item="32659",*p=item;
puts(item);
while(*p) head=insert(head,*p++);
print(head); del(head); print(head);
}
㈦ 用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語言設計一個學生成績統計程序,
要求輸入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;
}