编辑一个c语言 成绩记录薄,每个学生信息包括 学号 姓名c语言成绩 外语成绩 数学成绩
// 包含必须的头文件
#include #include #include
// 定义课程的结构体
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
",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
",average);
printf("及格率:%.2f%c
",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
",score[j].num,score[j].name); printf("**课程编号 课程名称 课程成绩 课程学分**
"); for(i=0;i<4;i++)
{printf("%d %s %d %5.2f
",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
",score[j].num,score[j].name); printf("课程编号 课程名称 课程成绩 课程学分
"); for(i=0;i<4;i++) {
printf("%d %s %d %f
",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("
1、继续添加 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
"); 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已读取
"); 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(" 欢迎 Welcome to
");
printf("
使用成绩记录簿系统1.0
");
printf("****copyright归山东超峰所有********************在此鸣谢 百度知道 老师****************
")
printf("*************************************MENU***************************************"); printf("
"); printf(" 成绩记录簿
"); printf("** ****1.添加
"); printf("** *****2.删除
"); printf("** *****3.查学生成绩
"); printf("** *****4.查班成绩表(附加功能@显示平均分和及格率@)
"); printf("** *****5.写入文件
"); printf("** *****6.读取文件
");
printf("** *****0.退出
"); printf("
输入你的选择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("*********错!请再输入一遍********"); } }
}
我以前做过的一个,
你看看,
/*
数据描述:学号 姓名 班级 高数 英语 总分
程序完成功能:
(1) 浏览数据 (2) 增加数据 (3) 修改数据
(4) 查询数据(按姓名,按总分) (5) 退出
*/
#include
#include
#include
using namespace std;
class student
{
public:
student(int , string ,int ,int ,int );
string getName(){return _name;};
int getID(){return _ID;};
void setID(int i){_ID=i;};
void setName(string);
void setClass(int c){_class=c;};
void setMath(int m){_math=m;_total=_math+_english;};
void setEnglish(int e){_english=e;_total=_math+_english;}
void print();
static int _stNum;
private:
int _ID;
string _name;
int _class;
int _math;
int _english;
int _total;
};
int student::_stNum=0;
student::student(int id, string name, int iclass, int ma, int en)
{
_ID=id;
_name=name;
_class=iclass;
_math=ma;
_english=en;
_total=_math+_english;
_stNum++;
};
void student::setName(string s)
{
_name=s;
};
void student::print()
{
cout<<_ID
<<""<< _name
<<""<<_class
<<""<<_math
<<""<<_english
<<""<<_total <<endl;
}
void printMenu(void);
void printHead(void);
void printTail(int);
void main()
{
int tmp_ID;
string tmp_name;
int tmp_class;
int tmp_math;
int tmp_english;
int order=0;
vector stvec;
printMenu();
cin>>order;
while(order!=5)
{
switch(order)
{
case 1:
if (stvec.size()==0)
{
coutNo data in the system!"<<endl<<endl;
printMenu();
cin>>order;
break;
}
else
{
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
printHead();
for(;iter!=iter_end;iter++)
{
(*iter).print();
}
printTail(stvec.size());
printMenu();
cin>>order;
break;
}
case 2:
coutID:";
cin>>tmp_ID;
coutName:";
cin>>tmp_name;
coutClass:";
cin>>tmp_class;
coutMark of Math:";
cin>>tmp_math;
coutMark of English:";
cin>>tmp_english;
stvec.push_back(student(tmp_ID,tmp_name,tmp_class,tmp_math,tmp_english));
printMenu();
cin>>order;
break;
case 3:
{
string search_name;
bool isFind=false;
coutName:";
cin>>search_name;
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
isFind=true;
coutID:";
cin>>tmp_ID;
coutName:";
cin>>tmp_name;
coutClass:";
cin>>tmp_class;
coutMark of Math:";
cin>>tmp_math;
coutMark of English:";
cin>>tmp_english;
(*iter).setID(tmp_ID);
(*iter).setName(tmp_name);
(*iter).setClass(tmp_class);
(*iter).setMath(tmp_math);
(*iter).setEnglish(tmp_english);
}
}
if(!isFind)
{
cout<<"There no student named "<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
case 4:
string search_name;
int search_ID;
int name_ID=0;
bool isFind=false;
cout<<"-----------"<<endl;
cout<<"1.Name:"<<endl;
cout<<"2.ID:"<<endl;
cout<<"-----------"<<endl;
cin>>name_ID;
if (name_ID==1)
{
coutname:"<<endl;
cin>>search_name;
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
if(!isFind)
{
cout<<endl<<"Your search:"<<endl;
printHead();
}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student named :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
if (name_ID==2)
{
coutID:"<<endl;
cin>>search_ID;
vector::iterator iter=stvec.begin();
vector::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getID()==search_ID)
{
if(!isFind)
{cout<<endl<<"Your search:"<<endl;
printHead();}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student ID :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
}
}
}
void printMenu(void)
{
cout<<endl<<"*************Make**your**choice***************"<<endl;
cout<<"1. View the data"<<endl;
cout<<"2. ADD the data"<<endl;
cout<<"3. Update the data"<<endl;
cout<<"4. Search the data"<<endl;
cout<<"5. Quit"<<endl;
cout<<"********************************************"<<endl<<endl;
}
void printHead(void)
{
cout<<"-------------------------------------------------"<<endl;
cout<<"IDNameClassMathEnglishTotal"<<endl;
}
void printTail(int i)
{
cout<<"There are total ";
if (i ==1)
{cout<< i<<" student"<<endl;}
else if(i >1)
{cout<<i<<" students"<<endl;}
cout<<"-------------------------------------------------"<<endl;
}
{
char name[20];
char sex[5];
int scores[3];
float ave;
int max;
int min;
};
main()
{
struct student stu[100];
int i,j,N,y=0,k=0;
int sum=0,max=0,min=0;
for(i=0;i<100;i++)
{
for(j=0;j<3;j++)
{
stu[i].scores[j]=0;
}
}
printf("input N:\n");
scanf("%d",&N);
for(i=0;i<N;i++)
{
printf("input NO.%d student's name and sex:\n",i+1);
scanf("%s",stu[i].name);
scanf("%s",stu[i].sex);
printf("input subject:\n");
for(j=0;j<3;j++)
{
scanf("%d",&stu[i].scores[j]);
}
}
for(j=0;j<3;j++)
{
sum=0;
for(i=0;i<N;i++)
{
sum+=stu[i].scores[j];
}
stu[i].ave=sum/N;
printf("___________________________\n");
printf("subject average NO.%d is:\n",j+1);
printf(" %10.2f\n",stu[i].ave);
}
for(j=0;j<3;j++)
{
min=stu[0].scores[j];
max=0;
for(i=0;i<N;i++)
{
if(stu[i].scores[j]>max)
{
max=stu[i].scores[j];
y=i;
}
if(stu[i].scores[j]<min)
{
min=stu[i].scores[j];
k=i;
}
}
printf("************************\n");
printf("subject NO.%d is:\n",j+1);
printf("________________________\n");
printf("%-2s's scores is max:%-4d\n",stu[y].name,max);
printf("%-2s's scores is min:%-4d\n",stu[k].name,min);
}
}
雪榕必仙: /*students.c*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include "students.h"struct list //结构体 {int sno;char sname[2];int sage;char sprof[2];int sclass;struct list *next; }; stud *Create(int n) {stud *p,*c,*h;p=(stud *) malloc (...
泰和县13025745213: 编制一个C语言成绩记录簿,要求每个学生信息包括:学号、姓名、C语言成绩.具体功能: (1)创建信息 - ?
雪榕必仙: 我以前做过的一个, 你看看,/* 数据描述:学号 姓名 班级 高数 英语 总分程序完成功能:(1) 浏览数据 (2) 增加数据 (3) 修改数据(4) 查询数据(按姓名,按总分) (5) 退出 */#include #include #include using namespace std;...
泰和县13025745213: 编制一个C语言成绩记录簿 - ?
雪榕必仙: 设计要求: 成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分.在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分.也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率. 2. 提高水平 在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入. 3. 提示 在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型. 知识范围;C程序设计第三版谭浩强
泰和县13025745213: 成绩记录薄的程序怎么写?? 编制一个C语言成绩记录薄,每个学生信息包括:学号、姓名、C语言成绩.具体功能:⑴创建信息链表并以磁盘文件保存;⑵读取磁盘文件并显示输出所有学生的成绩;⑶按学号或姓 - ?
雪榕必仙: /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*其它说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*...
泰和县13025745213: 用C语言编一个成绩记录簿 - ?
雪榕必仙: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1000 typedef struct Lesson //定义课程结构体 { int Lesson_Num; char Lesson_Name[50]; int Lesson_Mark; int Lesson_Credit; }Lesson; typedef struct Student //定义学生的结构...
泰和县13025745213: 用c语言编写一个程序实现学员成绩管理,每个学生包括3门课的成绩? ?
雪榕必仙: #include #define n 20 int static index=0; struct student { int num; char name[n]; float ... printf("三门成绩: "); for(i=0;ichengji;qchengji 3;q ) { sum=sum *q; } return sum/3;...
泰和县13025745213: 求大神指教:学生成绩记录簿设计,编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩. - ?
雪榕必仙: // 包含必须的头文件 #include<stdio.h> #include<stdlib.h> #include<string.h> // 定义课程的结构体 struct course { int num; //课程编号 char name[20]; // 课程名字 int result; // 学生的成绩 float credit; // 学分 }; // 定义成绩记录簿的结构体,每个...
泰和县13025745213: 请把算法给我,谢了!急求!!! 编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言平时 - ?
雪榕必仙: 给一个我以前写过的吧,功能应该差不多 #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...
泰和县13025745213: 用C语言设计.假设每个学生记录包括学生的学号、姓名、3门课成绩、平均成绩等信息.试设计一个学生成绩管 - ?
雪榕必仙: #include<stdio.h> #define N 30 #define S 3 int main() {float ave[N];int n,i,j,k,;int sum[N]={0},;int num[N],s[N][S];printf("请输入参加考试的学生总数:n=");scanf("%d",&n);printf("请输入学生学号及MA、EN、PH成绩:\n");for(i=0;...
泰和县13025745213: C语言作业 用C语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩.从键盘输入学员信息, - ?
雪榕必仙: #include <stdio.h>#include <math.h>int main (){int num,i,j;double arry[20][3],C,area;printf("请输入三角形的个数,不要超过20个:\n");scanf("%d",&num);printf("请依次输入三角形的边长,按空格隔开\n"); for (i=1;i<=num;i++) { for(j=0;j...