當前位置:首頁 » 考試成績 » 學生成績排序與查找的設計與實現

學生成績排序與查找的設計與實現

發布時間: 2021-01-25 21:43:48

『壹』 用C++編寫函數實現排序,設計排序演算法對N個學生的成績進行排序,排序方式根據函數的style參數確定

//a為輸來入的數據數自組,n 為數組的元素個數,style 為排序方式
//沒有編譯器,沒測試
void sort(int a[],int n,char style)
{
int i,j,t;
n--;
if (style=='a')
{
while(n>0)
{j=0;
for(i=0;i<n;i++)
if(a[i]>a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
j=i;
}
n=j;
}
}
else
{
while(n>0)
{j=0;
for(i=0;i<n;i++)
if(a[i]<a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
j=i;
}
n=j;
}

}
}

『貳』 求答案!《學生成績管理系統》的設計與實現

要免費的木有,想要找人代做,可以找我,聯系方式見個人簡介。

『叄』 學生成績核算系統的設計與實現

#include "iostream.h"
#include "string.h"
#include "fstream.h"
#define N 100
struct stu
{
char name[10];
char sex[3];
char subject[10];
char subna[4];
char id[9];
float xf;
float pscj;
float sycj;
float jmcj;
float zhcj;
float sdxf;
};
struct stu s1[N];
struct stu *ps;
struct stu s;
void input();
void check();
void check_num();
void check_name();
void check_idcj();
void shrt();
void shrtzhjx();
void shrtzhsx();
void shrtsdjx();
void shrtsdsx();
void del();
void savequit();
void menu();
int all;
void text();
int main()
{
menu();
return 1;
}
void menu()
{
int x;
x=1;
while(x)
{
cout<<" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "<<endl;
cout<<" 學生成績管理系統 "<<endl;
cout<<endl;
cout<<" 學生成績錄入(1) 學生信息查詢(2) 刪除學生記錄(3) "<<endl;
cout<<endl;
cout<<" 排序 (4) 保存學生信息(5) 查看保存記錄(6) "<<endl;
cout<<endl;
cout<<" 退出軟體系統(0) "<<endl;
cout<<"\n請選擇功能:";
cin>>x;
switch(x)
{
case 1: input();break;
case 2: check();break;
case 3: del();break;
case 4: shrt();break;
case 5: savequit();break;
case 6: text();break;
case 0: cout<<"成功退出系統."<<endl;break;
}
}
}
void input()
{
int i,u;
cout<<"請輸入您要錄入的學生人數(目前僅限100人):";
cin>>all;
ps=s1;
for(i=1;i<=all;i++,ps++)
{
cout<<"請輸入第"<<i<<"名學生信息"<<endl;
cout<<"學號:";
cin>>ps->id;
cout<<endl;
cout<<"姓 名:";
cin>>ps->name;
cout<<endl;
cout<<"性 別:";
cin>>ps->sex;
cout<<endl;
cout<<"課程編號:";
cin>>ps->subna;
cout<<endl;
cout<<"課 程:";
cin>>ps->subject;
cout<<endl;
cout<<"學 分:";
cin>>ps->xf;
cout<<endl;
cout<<"平時成績:";
cin>>ps->pscj;
cout<<endl;
cout<<"實驗成績:";
cin>>ps->sycj;
cout<<endl;
cout<<"卷面成績:";
cin>>ps->jmcj;
cout<<endl;
cout<<"停止錄入請輸入0,繼續錄入輸入1:";
cin>>u;
cout<<endl;
if(ps->sycj>0)
ps->zhcj=(float)(ps->pscj*0.15+ps->sycj*0.15+ps->jmcj*0.7);
else
ps->zhcj=(float)(ps->pscj*0.3+ps->jmcj*0.7);
if(ps->zhcj>=90&&ps->zhcj<=100)
ps->sdxf=ps->xf;
else if(ps->zhcj>=80&&ps->zhcj<90)
ps->sdxf=ps->xf*0.8;
else if(ps->zhcj>=70&&ps->zhcj<80)
ps->sdxf=ps->xf*0.75;
else if(ps->zhcj>=60&&ps->zhcj<70)
ps->sdxf=ps->xf*0.6;
else ps->sdxf=60;
if(u!=1) menu();
}
}
void check()
{
int a;
cout<<" <<查詢界面>> "<<endl;
cout<<endl;
cout<<" <學生基本信息查詢> "<<endl;
cout<<endl;
cout<<" (1) 按學號查詢 "<<endl;
cout<<" (2) 按姓名查詢 "<<endl;
cout<<endl;
cout<<" <學生考試成績查詢>"<<endl;
cout<<endl;
cout<<" (3) 按學號查詢 "<<endl;
cout<<" (0)返回上一級菜單 "<<endl;
cout<<"請選擇查詢方式:";
cin>>a;
switch(a)
{
case 1: check_num();break;
case 2: check_name();break;
case 3: check_idcj();break;
case 0: break;
}
}
void check_num()
{
int student=0,i;
char id[9];
ps=s1;
cout<<"請輸入您要查詢的學號:";
cin>>id;
for(i=0;i<N;i++,ps++)
{
if(strcmp(id,ps->id)==0)
{cout<<"學 號:"<<ps->id<<" "<<"姓 名:"<<ps->name<<" "<<"性 別:"<<ps->sex<<endl;
student=1;}
}
if(student==0)
cout<<"----------------查詢結果:無此學生!!";
cout<<endl;
check();
}
void check_name()
{
int student=0,i;
student=0;
ps=s1;
char name[10];
cout<<"請輸入您要查詢的姓名:";
cin>>name;
ps=s1;
for(i=0;i<N;i++,ps++)
{
if(strcmp(name,ps->name)==0)
{cout<<"學 號:"<<ps->id<<" "<<"姓 名:"<<ps->name<<" "<<"性 別:"<<ps->sex<<endl;
student=1;
}
}
if(student==0)
cout<<"----------------查詢結果:無此學生!!"<<endl;
cout<<endl;
check();
}
void check_idcj()
{
int student=0,i;
char id[9];
cout<<"請輸入您要查詢的學號:";
cin>>id;
ps=s1;
for(i=0;i<N;i++,ps++)
{
if(strcmp(id,ps->id)==0)
{
cout<<"\n學號:"<<ps->id<<endl<<"姓名:"<<ps->name<<endl;
cout<<"課程編號:"<<ps->subna<<endl<<"課程:"<<ps->subject<<endl;
cout<<"學分:"<<ps->xf<<endl<<"平時成績:"<<ps->pscj<<endl<<"卷面成績:"<<ps->jmcj<<endl;
cout<<"綜合成績:"<<ps->zhcj<<endl<<"實得學分:"<<ps->sdxf<<endl;
student=1;
}
}
if(student==0)
cout<<"----------------查詢結果:無此學生!!";
cout<<endl;
check();
}
void shrt()
{
int i;
cout<<" <<排序界面>>"<<endl;
cout<<endl;
cout<<" (1)按綜合成績降序."<<endl;
cout<<" (2)按綜合成績升序."<<endl;
cout<<" (3)按實得學分降序."<<endl;
cout<<" (4)按實得學分升序."<<endl;
cout<<" (0)返回主界面."<<endl;
cout<<"請選擇排序方式: "<<endl;
cin>>i;
switch(i)
{
case 1: shrtzhjx();break;
case 2: shrtzhsx();break;
case 3: shrtsdjx();break;
case 4: shrtsdsx();break;
case 0: break;
}
}
void shrtzhjx()
{
int i,j,n,k;
float a[N],temp;
ps=s1;
for(i=0;i<N;i++,ps++)
a[i]=ps->zhcj;
for(i=1,k=all;i<all;i++,k--)
for(j=0;j<k-1;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
cout<<"------------是否查看排序後結果(1/0)? "<<endl;
cin>>n;
if(n)
for(i=1,j=0;i<=all;i++,j++)
cout<<"第"<<i<<"名:"<<" "<<a[j]<<endl;
shrt();
}
void shrtzhsx()
{
int i,j,n,k;
float a[N],temp;
ps=s1;
for(i=0;i<N;i++,ps++)
a[i]=ps->zhcj;
for(i=1,k=all;i<all;i++,k--)
for(j=0;j<k-1;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
cout<<"------------是否查看排序後結果(1/0)? "<<endl;
cin>>n;
if(n)
for(j=0;all>0;all--,j++)
cout<<"第"<<all<<"名:"<<" "<<a[j]<<endl;
shrt();
}
void shrtsdjx()
{
int i,j,n,k;
float a[N],temp;
ps=s1;
for(i=0;i<N;i++,ps++)
a[i]=ps->sdxf;
for(i=1,k=all;i<all;i++,k--)
for(j=0;j<k-1;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
cout<<"------------是否查看排序後結果(1/0)? "<<endl;
cin>>n;
cout<<endl;
i=1;
if(n)
while(i<=all)
{
j=0;
cout<<"第"<<i<<"名:"<<a[j]<<endl;
j++;
i++;
}
shrt();
}
void shrtsdsx()
{
int i,j,n,k;
float a[N],temp;
ps=s1;
for(i=0;i<N;i++,ps++)
a[i]=ps->sdxf;
for(i=1,k=all;i<all;i++,k--)
for(j=0;j<k-1;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
cout<<"------------是否查看排序後結果(1/0)? "<<endl;
cin>>n;
cout<<endl;
if(n)
while(all>0)
{
j=0;
cout<<"第"<<all<<"名:"<<a[j]<<endl;
j++;all--;
}
shrt();
}
void del()
{
char id[9];
cout<<"------------請輸入學生學號進行刪除:";
cin>>id;
int i;
ps=s1;
for(i=0;i<N;i++,ps++)
if(strcmp(id,ps->id)==0)
for(;i<(N-i);i++,ps++)
{
strcpy(ps->id,(ps+1)->id);
strcpy(ps->name,(ps+1)->name);
strcpy(ps->subject,(ps+1)->subject);
strcpy(ps->subna,(ps+1)->subna);
strcpy(ps->sex,(ps+1)->sex);
ps->jmcj=(ps+1)->jmcj;
ps->pscj=(ps+1)->pscj;
ps->sdxf=(ps+1)->sdxf;
ps->sycj=(ps+1)->sycj;
ps->xf=(ps+1)->xf;
ps->zhcj=(ps+1)->zhcj;
}
cout<<"-----------------已刪除學號為"<<id<<"的學生-------------------"<<endl;
}
void savequit()
{
ofstream ofile("student.txt",ios::app);
int i;
ps=s1;
for(i=0;i<all;i++,ps++)
{
ofile<<"學號:"<<ps->id<<endl;
ofile<<"姓名:"<<ps->name<<endl;
ofile<<"性別:"<<ps->sex<<endl;
ofile<<"課程編號:"<<ps->subna<<endl;
ofile<<"課程:"<<ps->subject<<endl;
ofile<<"平時成績:"<<ps->pscj<<endl;
ofile<<"卷面成績:"<<ps->jmcj<<endl;
ofile<<"實驗成績:"<<ps->sycj<<endl;
ofile<<"綜合成績:"<<ps->zhcj<<endl;
ofile<<"學分:"<<ps->xf<<endl;
ofile<<"實得學分:"<<ps->sdxf<<endl;
}
ofile.close();
cout<<"-----------------------------學生信息已經保存."<<endl;
}
void text()
{
ifstream infile("student.txt",ios::in);
if(!infile) cout<<"不能打開此文檔!"<<endl;
int i;
char put[101];
for(i=0;i<N;i++)
{
infile.getline(put,100);
cout<<put<<endl;
}
infile.close();
}

『肆』 學生成績管理系統的設計與實現

給一個我以前寫過的吧,功能應該差不多#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

『伍』 c語言實現設計一個學生成績管理系統課程

參考代碼如下,不過還是建議自己寫一寫比較好:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student //結構體
{
char name[20]; //姓名
char number[20]; //學號
double math; //數學
double english; //英語
double chinese; //語文
double program; //程序
}s[50];

void head() //界面
{
printf(
"**********************************************************************\n"
"** **\n"
"** **\n"
"** 學生成績管理系統 **\n"
"** **\n"
"** 1.信息錄入 **\n"
"** 2.信息統計 **\n"
"** 3.信息瀏覽 **\n"
"** 4.信息查詢 **\n"
"** 5.信息排序 **\n"
"** 6.信息刪除 **\n"
"** 0.退出系統 **\n"
"** **\n"
"**********************************************************************\n"
);
}
void ru(struct student s[], int* n) //文件導入函數
{
FILE *p;
int i=*n;
if((p=fopen("數據.txt", "r"))==NULL)
{
n=n;
}
else
{
while(!feof(p))
{
fscanf(p, "%s%s%lf%lf%lf%lf\n", s[i].name, s[i].number, &s[i].math, &s[i].english, &s[i].chinese, &s[i].program);
i++;
*n=*n+1;
}
}
fclose(p);
}
void chu(struct student s[], int n)
{
FILE *p;
int i=0;
if((p=fopen("數據.txt", "w"))==NULL)
{
printf("無法打開此文件!");
}
else
{
while(i<n-1)
{
fprintf(p, "%s %s %lf %lf %lf %lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
i++;
}
fprintf(p, "%s %s %lf %lf %lf %lf", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
fclose(p);
}
void dayin(struct student s[], int n) //顯示所有信息
{
int i;
double all=0.0;
printf("\n姓名\t\t學號\t\t數學\t英語\t語文\t程序\t總分\n");
for (i=0; i<n; i++)
{
all=s[i].math+s[i].english+s[i].chinese+s[i].program;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program, all);
}
}
void shuru(struct student s[], int* n) //信息輸入函數
{
int i=*n, j, k, m;
printf("請輸入學生姓名:");
scanf("%s", s[i].name);
printf("請輸入學生學號:");
for (j=0; ; j++)
{
m=0;
scanf("%s", s[i].number);
for (k=0; k<i; k++)
{
if (strcmp(s[i].number, s[k].number)==0)
{
m=m+1;
printf("學號重復,請重新輸入學號:");
break;
}
}
if (m==0)
{
break;
}
}
printf("請輸入數學成績:");
scanf("%lf", &s[i].math);
printf("請輸入英語成績:");
scanf("%lf", &s[i].english);
printf("請輸入語文成績:");
scanf("%lf", &s[i].chinese);
printf("請輸入程序成績:") ;
scanf("%lf", &s[i].program);
printf("添加信息成功!\n");
*n=*n+1;
chu(s, *n);
}
void paixu(struct student s[], int n) //排序函數
{
int i, j;
double all1, all2;
struct student stu;
for (i=0; i<n-1; i++)
{
for (j=i+1; j<n; j++)
{
all1=s[i].math+s[i].english+s[i].chinese+s[i].program;
all2=s[j].math+s[j].english+s[j].chinese+s[j].program;
if (all1<all2)
{
stu=s[i];
s[i]=s[j];
s[j]=stu;
}
}
}
printf("排序後的數據:\n");
dayin(s, n);
}
void chazhao(struct student s[], int n) //查找函數
{
char name[20], num[20];
int m1, m2=0, i, j;
printf("1.按姓名查找\n2.按學號查找\n選擇查詢方式(1或2):");
scanf("%d", &m1);
if (m1==1)
{
printf("請輸入您要查找的學生姓名:");
scanf("%s", name);
for (i=0; i<n; i++)
{
if (strcmp(s[i].name, name)==0)
{
m2=m2+1;
if (m2==1)
{
printf("\n姓名\t\t學號\t數學\t英語\t語文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("沒有此學生信息!\n");
}
}
else if (m1==2)
{
printf("請輸入您要查找的學生學號:");
scanf("%s", num);
j=0;
for (i=0; i<n; i++)
{
if (strcmp(s[i].number, num)==0)
{
m2=m2+1;
if (m2==1)
{
printf("\n姓名\t\t學號\t數學\t英語\t語文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("沒有此學生信息!\n");
}
}
}
void shanchu(struct student s[], int* n) //刪除函數
{
char num[20];
int m=0, i, j;
printf("請輸入您要刪除的學生學號:");
scanf("%s", num);
for (i=0; i<=*n; i++)
{
if (strcmp(s[i].number, num)==0)
{
m=m+1;
for (j=i; j<*n; j++)
{
s[j]=s[j+1];
}
*n=*n-1;
}
}
if (m==0)
{
printf("沒有此學生信息!\n");
}
else
{
chu(s, *n);
printf("刪除完畢!\n");
}
}
void allAndAver(struct student s[], int n)
{
int i ;
double all=0.0, aver=0.0;
for (i=0; i<n; i++)
{
all=s[i].math+s[i].english+s[i].chinese+s[i].program;
aver=all/4;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\n", s[i].name, s[i].number, all, aver);
}
}
void Fail(struct student s[], int n) //統計單科不及格人數
{
int i, fail[4]={0};
for (i=0; i<n; i++)
{
if (s[i].math<60)
{
fail[0]++;
}
if (s[i].english<60)
{
fail[1]++;
}
if (s[i].chinese<60)
{
fail[2]++;
}
if (s[i].program<60)
{
fail[3]++;
}
}
printf("\n不及格信息:\n");
printf("數學不及格的人數為:%d人\n", fail[0]);
printf("英語不及格的人數為:%d人\n", fail[1]);
printf("語文不及格的人數為:%d人\n", fail[2]);
printf("程序不及格的人數為:%d人\n", fail[3]);
}
void Max(struct student s[], int n) //統計單科最高分人數
{
int i, counter[4]={0};
double max[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i<n; i++)
{
if (s[i].math>max[0])
{
max[0]=s[i].math;
}
if (s[i].math>max[1])
{
max[1]=s[i].math;
}
if (s[i].math>max[2])
{
max[2]=s[i].math;
}
if (s[i].math>max[3])
{
max[3]=s[i].math;
}
}
for (i=0; i<n; i++)
{
if (s[i].math==max[0])
{
counter[0]++;
}
if (s[i].math==max[1])
{
counter[1]++;
}
if (s[i].math==max[2])
{
counter[2]++;
}
if (s[i].math==max[3])
{
counter[3]++;
}
}
printf("\n最高分信息:\n");
printf("數學最高分為:%.1lf, 人數為:%d人\n", max[0], counter[0]);
printf("英語最高分為:%.1lf, 人數為:%d人\n", max[1], counter[1]);
printf("語文最高分為:%.1lf, 人數為:%d人\n", max[2], counter[2]);
printf("程序最高分為:%.1lf, 人數為:%d人\n", max[3], counter[3]);
}
void Min(struct student s[], int n) //統計單科最低分人數
{
int i, counter[4]={0};
double min[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i<n; i++)
{
if (s[i].math<min[0])
{
min[0]=s[i].math;
}
if (s[i].math<min[1])
{
min[1]=s[i].math;
}
if (s[i].math<min[2])
{
min[2]=s[i].math;
}
if (s[i].math<min[3])
{
min[3]=s[i].math;
}
}
for (i=0; i<n; i++)
{
if (s[i].math==min[0])
{
counter[0]++;
}
if (s[i].math==min[1])
{
counter[1]++;
}
if (s[i].math==min[2])
{
counter[2]++;
}
if (s[i].math==min[3])
{
counter[3]++;
}
}
printf("\n最低分信息:\n");
printf("數學最低分為:%.1lf, 人數為:%d人\n", min[0], counter[0]);
printf("英語最低分為:%.1lf, 人數為:%d人\n", min[1], counter[1]);
printf("語文最低分為:%.1lf, 人數為:%d人\n", min[2], counter[2]);
printf("程序最低分為:%.1lf, 人數為:%d人\n", min[3], counter[3]);
}
void tongji(struct student s[], int n) //統計函數
{
printf("統計信息如下:\n");
printf("\n姓名\t\t學號\t\t總分\t平均分\n");
allAndAver(s, n);
Max(s, n);
Min(s, n) ;
Fail(s, n);
}
int main() //主函數
{
int k, n=0;
ru(s, &n);
chu(s, n);
while (1)
{
head();
printf("\n請按對應的鍵選擇相應的功能:");
scanf("%d",&k);
switch (k)
{
case 1:
shuru(s, &n);
break;
case 2:
tongji(s, n);
break;
case 3:
dayin(s, n);
break;
case 4:
chazhao(s, n);
break;
case 5:
paixu(s, n);
break;
case 6:
shanchu(s, &n);
break;
case 0:
exit(1);
break;
default : printf("請輸入正確的命令!\n");
}
system("pause");
system("cls");
}
return 0;
}

『陸』 c語言程序設計作業學生成績管理系統 1)實現成績管理功能(添加、刪除、排序) 2)實現成績統計功能(最高

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 20
void read_file(); //導入數據
void input();//輸入數據
void ave();//求每個學生平均分
void ave_all();//求三科成績平均分
void save_score();//保存數據
void dis_menu(); //顯示菜單
void ave_english();// 計算英語平均分
void ave_math();//計算數學平均分
void ave_c(); //計算c語言平均分
void sort_ave();//按每位同學的平均分排序
void display();//顯示全部信息
void display_1(int);//列印學生個人信息
void display_2();//按學號列印學生成績條
void display_3();//按姓名列印學生成績條
int changeStrInt(char *ch);//把字元串轉化為整型
typedef struct
{
int num;//學號
char name[30];
float english;
float math;
float c;
float ave;
}Stu;
Stu stu[MAX];
bool tag=true,Tag=true;
float sum_eng=0;
float sum_math=0;
float sum_c=0;
int class_num=0;
float ave_eng=0;
float ave_mat=0;
float ave_C=0;
//test.cpp
void main()
{
dis_menu();
}
//test.cpp
void dis_menu()
{
int i=0,j=0;
char ch,c;
do{
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");
fflush(stdin);
scanf("%d",&i);
switch(i)
{
case 1:
read_file();
break;
case 2:
input();
break;
case 3:printf("*************按平均分排序*****************\n");
sort_ave();
printf("是否列印學生成績信息?(Y or N)\n");
fflush(stdin);
c=getchar();
switch(c)
{
case 'Y':
case 'y':
display();
break;
default: break;
}
break;
case 4:
printf("***********1:按學號查詢:******************\n");
printf("***********2:按姓名查詢:******************\n");
scanf("%d",&j);
switch(j)
{
case 1:
display_2();
break;
case 2:
display_3();
break;
default:
break;
}
break;
case 5:
save_score();
break;
case 6:
ave_all();
printf("數學\t英語\tc語言\n");
printf("%.2f\t%.2f\t%.2f\n",ave_mat,ave_eng,ave_C);
break;
default:
printf("感謝使用本系統!\n");
system("exit");
exit(0);
}
printf("是否繼續?(Y or N)\n");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='Y'||ch=='y');

}

int changeStrInt(char *ch)
{ int a=1,b=0,c=0,i;
for (i=strlen(ch)-1;i>=0;i--)
{ if (ch[i]<='9'&&ch[i]>='0')
{ b=a*(ch[i]-'0');
a=a*10;
c=c+b;
}
else
{ printf("%c不合法,無法將此字元轉化為整形!\n",ch[i]);
return 0;
}
}
return c;
}

void read_file()
{
FILE *fp;
char filepath[20];
long position; char ch;
int i=0; char str_num[20]="\0";
char str_english[20]="\0"; char str_c[20]="\0";
char str_math[20]="\0";
printf("輸入原始數據存放路徑:\n");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("原始數據導入失敗,請檢查輸入路徑是否正確\n");
return;
}
while(i!=1)
{
ch = fgetc(fp);
if(ch=='\n')
{
position=ftell(fp);
i++;
}
}
fseek(fp, position,SEEK_SET); //定位
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%s\t%s\t%s\t%s\t%s\t\n",str_num,stu[i].name,
str_english,str_c,str_math);
stu[i].num=changeStrInt(str_num);
stu[i].english=(float)changeStrInt(str_english);
stu[i].math=(float)changeStrInt(str_math);
stu[i].c=(float)changeStrInt(str_c);
class_num++;
}
fclose(fp);
ave();
printf("原始數據導入成功!\n");
}
void ave_all()
{ int i;
for(i=0;i<class_num;i++)
{
sum_math+=stu[i].math;
sum_eng+=stu[i].english;
sum_c+=stu[i].c;
}
ave_english();
ave_math();
ave_c();

}
void ave()
{
int i;
for(i=0;i<class_num;i++)
stu[i].ave=(stu[i].english+stu[i].math+stu[i].c)/3;
}

void ave_english()
{
ave_eng=sum_eng/class_num;
}

void ave_math()
{
ave_mat=sum_math/class_num;
}

void ave_c()
{
ave_C=sum_c/class_num;
}

void sort_ave()
{
ave();
Stu temp;
int i,j;
for(i=1;i<class_num;i++)
for(j=1;j<=class_num-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{
temp=stu[j-1];
stu[j-1]=stu[j];
stu[j]=temp;
}
}
if(tag)
{
printf("排序完成!\n");

}
}

void input()
{
char ch;
int i,num;
FILE *fp; char filepath[30];
printf("輸入學生人數:\n");
scanf("%d",&num);
printf("輸入學生信息: 學號 姓名 高等數學 大學英語 c語言\n");
for(i=0;i<num;i++)
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,&stu[i].c);
class_num=num;
printf("是否保存輸入信息?(Y or N)\n");
fflush(stdin);
ch=getchar();
if(ch=='Y'||ch=='y')
{ printf("輸入保存路徑:\n");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("保存失敗,請檢查輸入路徑是否有誤!\n");
return;
}
fprintf(fp,"學號\t姓名\t數學\t英語\tc語言\n");
for(i=0;i<class_num;i++)
{
fprintf(fp,"%d\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,stu[i].c);

}
printf("保存成功!\n");
}

}

void save_score()
{
char filepath[30];
FILE *fp;
int i;
tag=false;
sort_ave();
printf("輸入要保存的路徑:\n"); //例如C:\student.dat或.txt .dat是二進制文件
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w+"))==NULL)
{
printf("保存失敗,請檢查文件名,路徑是否正確!\n");
return;
}
fprintf(fp,"學號\t姓名\t英語\tc語言\t高數\t平均成績\n");
for(i=0;i<class_num;i++)
{
fprintf(fp,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].num,
stu[i].name,stu[i].english,stu[i].c,stu[i].math,stu[i].ave);
}
fclose(fp);
printf("學生成績文件已經保存完畢!\n");
}

void display_1(int i)
{
if(Tag)
printf("學號\t姓名\t英語\tc語言\t高數\t平均成績\n");
printf("%d\t%s\t%.2f\t%.2f\t %.2f\t%.2f\n",stu[i].num,stu[i].name,
stu[i].english,stu[i].c,stu[i].math,stu[i].ave);
fflush(stdin);
return;
}

void display_2()
{
int i,no;
volatile int flag=0;
printf("請輸入你要查詢學生的學號:\n");
fflush(stdin);
scanf("%d",&no);
for(i=0;i<class_num;i++)
{
if(no==stu[i].num&&!flag)
{
printf("學生信息如下:\n");
fflush(stdin);
display_1(i);
flag=1;
}
}
if(!flag)
{
printf("查詢學生不存在,請檢查學號輸入是否正確!\n");
return;
}

}

void display_3()
{
char name[30];
int i;
volatile int flag=0;
printf("輸入你要查詢學生的姓名:\n");
fflush(stdin);
gets(name);
for(i=0;i<class_num;i++)
{
if((strcmp(stu[i].name,name)==0)&&!flag)
{
printf("學生信息如下:\n");
display_1(i);
flag=1;
}
}
if(!flag)
{
printf("查詢學生不存在,請檢查學號輸入是否正確!\n");
return;
}

}

void display()
{
int i;
printf("學生信息如下:\n");
printf("名次\t學號\t姓名\t數學\t英語\tc語言\t平均分\n");
for(i=0;i<class_num;i++)
printf("%d\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",i+1,stu[i].num,stu[i].name,stu[i].math,stu[i].english,stu[i].c,stu[i].ave);

}
大體框架就是這樣,只需要稍微修改或添加個別功能,應該能看懂吧,看懂的話修改還是挺Easy的,最近忙著考試,沒空該了,呵呵,抱歉哈,希望對你有幫助...

『柒』 用c語言設計一個程序 要求:能實現對學生成績的錄入、顯示、查找、排序、插入和刪除操作。

你好!
是的,正如樓上所說,與其在這乾等,還不如在網上下載一篇類似文章,將其中的代碼按自己的要求修改,這樣不但能增長知識,作出來了還能提升自己的成就感。

『捌』 如何用c語言程序設計實現學生成績的錄入,查詢,排序,刪除等操作。

錄入的話,可以直接從文件裡面導入。

查詢,最簡單的方法就是for循環一個一個查,當然,想要更快的話,可以用二分搜索。

排序嘛~~~快排就行了。

刪除,這個比較麻煩,必須看你的數據結構。如果是數組的話,把後面每一個元素前移。如果是鏈表的話,就直接將next指針往下連就行了。

『玖』 設計並實現一個學生管理系統,即定義一個包含學生信息(學號,姓名,成績)的順序表,可以不考慮重名的情

額,怎麼看不到要求只要定義鏈表嗎?那你定義一個結構體,鏈表的節點就是一個結構體對象,用指針指向next就好

『拾』 跪求C++:設計和實現簡單的學生成績管理程序(用鏈表實現),網上的程序太復雜了,誰給個簡單的

#include<fstream>
#include<iostream>

usingnamespacestd;

#defineMAX4

structStudent
{
intstuId;//成績排名
charstuName[20];//姓名
doublestuScore[MAX];//成績
doublestuSum;//總成績
Student*next;//指向下一節點
};

classStudentManager//鏈表管理類
{
public:
intaddStu(Student*stu);//添加結點,尾插法
intsortAllStu();//排序
Student*findStu(intstuId);//根據總成績排名查找結點
voidsaveToFile();//保存到文件

StudentManager();
~StudentManager();
private:
intlength;//鏈表長度
Student*head,*end;//頭指針、尾指針
};

StudentManager::StudentManager()
{
head=NULL;
end=NULL;
length=0;
}

StudentManager::~StudentManager()
{
if(head)
{
deletehead;
head=NULL;
}
if(end)
{
deleteend;
end=NULL;
}
}

intStudentManager::addStu(Student*stu)
{
if(head==NULL)
{
head=stu;
end=head;
}
else
{
end->next=stu;
stu->next=NULL;
end=stu;//一直保持指向鏈尾
}
length++;
returnlength;
}

intStudentManager::sortAllStu()
{

Student*p=head;
while(p)
{
//求和
inti=0;
for(i=0;i<MAX;i++)
{
p->stuSum+=p->stuScore[i];
}

p->stuId=-1;
p=p->next;
}

Student*t=newStudent(),*temp=NULL;
t->stuId=-1;
t->stuSum=-1;
inti;
for(i=0;i<length;i++)
{
p=head;
temp=t;
while(p)
{
if(p->stuId==-1&&p->stuSum>temp->stuSum)
{
temp=p;
}
p=p->next;
}
if(temp->stuSum!=-1)
{
temp->stuId=i;
}
else
break;
}

temp=NULL;//
if(t)
{
deletet;
t=NULL;
}

return0;
}

Student*StudentManager::findStu(intstuId)
{
Student*p=head;
while(p)
{
if(p->stuId==stuId)
{
returnp;
}
p=p->next;
}
returnNULL;
}

voidStudentManager::saveToFile()
{

ofstreamofile;
ofile.open("stu.txt",ios::out);
if(!ofile)
{
cerr<<"openfilefailed! ";
exit(1);
}
Student*p=NULL;
inti=0;
for(i=0;i<length;i++)
{
p=findStu(i);
if(!p)
{
cout<<"err ";
break;
}
ofile<<"name:"<<p->stuName<<"id:"<<p->stuId<<"sum:"<<p->stuSum<<"score:";
ofile<<p->stuScore[0]<<""<<p->stuScore[1]<<""<<p->stuScore[2]<<""<<p->stuScore[3]<<"";
ofile<<" ";
}
ofile.close();
cout<<"success! ";
}

intmain()
{
StudentManager*sm=newStudentManager();
Studentstu1={-1,"zhangsan",78.0f,89.0f,64.0f,90.0f,0.0f,NULL};
Studentstu2={-1,"lisi",58.0f,87.0f,96.0f,80.0f,0.0f,NULL};
Studentstu3={-1,"wangwu",79.0f,80.0f,82.0f,80.0f,0.0f,NULL};
sm->addStu(&stu1);
sm->addStu(&stu2);
sm->addStu(&stu3);
sm->sortAllStu();
sm->saveToFile();
return0;
}

熱點內容
武漢大學學生會輔導員寄語 發布: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