学生成绩录入查询系统C语言程序
#include
成绩智能查询系统编程(成绩智能查询系统编程怎么用)
成绩智能查询系统编程(成绩智能查询系统编程怎么用)
#include
using
namespace
std;
struct
student
{char
name[50];
int
score;
};
void
teacherC(student
stu)//老师录入成绩
{int
i,n;
cout<<"请输入需要录入的学生的个数n";
cin>>n;
cout<<"请依次输入学生的姓名和成绩n";
for(i=0;i {cin>>stu[i].name>>stu[i].score; }stu[i].score=-1; }void show(student stu) {int i=0; for(;i<100;i++) {if(stu[i].score==-1) break; cout< "< }} int search(student stu,char name) {int i=0,k=-1; for(;i<100;i++) {if(stu[i].score==-1) break; if(strcmp(stu[i].name,name)==0) {k=i; break; }} return k; }void edit(student stu) {int i=0,j=0; char name[30],an; while(1) {cout<<"请输入需要修改的学生名字n"; cin>>name; i=search(stu,name); if(i>=0) {cout<<"该学生的信息为:n"; cout< "< cout<<"确定要修改该学生的信息是的输入Y不是输入N:n"; cin>>an; if(an=='Y'||an=='y') {cout<<"请输入修改后的姓名成绩:n"; cin>>stu[i].name>>stu[i].score; cout<<"修改成功n"; }cout<<"继续修改请输入1退出输入0:n"; cin>>j; if(j==0) break; }else cout<<"没有该学生的信息n"; }} void dele(student stu) {int i=0,j=0; char name[30],an; while(1) {cout<<"请输入需要删除的学生名字n"; cin>>name; i=search(stu,name); if(i>0) {cout<<"该学生的信息为:n"; cout< "< cout<<"确定要删除该学生的信息是的输入Y不是输入N:n"; cin>>an; if(an=='Y'||an=='y') {stu[i].name=0; cout<<"删除成功n"; }cout<<"继续删除请输入1退出输入0:n"; cin>>j; if(j==0) break; }else cout<<"没有该学生的信息n"; }} int main() {int i,n; char name[30]; student stu[100];//学生总数上限为100个 while(1) {cout<<"请做出以下的选择:"< cout<<"输入 退出系统n"; cout<<"输入 1教书录入成绩n"; cout<<"输入 2学生查询成绩n"; cout<<"输入 3修改学生成绩n"; cout<<"输入 4删除学生成绩n"; cin>>i; switch(i) {case 1: teacherC(stu);break; case 2: cout<<"请输入查询的姓名n"; cin>>name;n=search(stu,name);cout<<"该学生成绩是:"< case 3: edit(stu);break; case 4: dele(stu);break; default:if(i!=0)cout<<"请输入有效数字n"; }if(i==0) break; }return 0; } #include #include typedef struct student ST; struct student {int stNu; int stVal; int stMat; int stEng; ST next; }; ST head = NULL; int ShowNode() {int no; ST t; printf("输入学号:"); scanf("%d", &no); for (t = head; t; t = t->next) {if (t->stNu == no) {printf("学号:%d, 语文:%d 数学:%d 英语:%dn", t->stNu, t->stVal, t->stMat, t->stEng); return 0; }} printf("无此学生n"); return 0; }int ChangeNode() {int no; ST t; printf("输入学号:"); scanf("%d", &no); for (t = head; t; t = t->next) {if (t->stNu == no) {printf("输入新的成绩:"); printf("语文成绩:"); scanf("%d", &t->stVal); printf("数学成绩:"); scanf("%d", &t->stMat); printf("英语成绩:"); scanf("%d", &t->stEng); return 0; }} printf("无此学生n"); return 0; }int InsertNode() {ST t; t = (ST)malloc(sizeof t); printf("输入学号:"); scanf("%d", &t->stNu); printf("输入语文成绩:"); scanf("%d", &t->stVal); printf("输入数学成绩:"); scanf("%d", &t->stMat); printf("输入英语成绩:"); scanf("%d", &t->stEng); t->next = head; head = t; return 0; }int DelNode() {ST x, y; int no; printf("输入学号:"); scanf("%d", &no); for (x = y = head; x; y = x, x = x->next) {if (x->stNu == no) {if (x ==y) {x = head = head->next; y->next = NULL; free(y); return 0; }else {y->next = x->next; x->next = NULL; free(x); return 0; }} }printf("无此学生n"); return 0; }int main(void) {int i; while(1) {printf("查询成绩:1n" "更改成绩:2n" "插入成绩:3n" "删除学生:4n" "退出:5n"); scanf("%d", &i); if (1==i) {ShowNode(); }else if(2==i) {ChangeNode(); }else if(3==i) {InsertNode(); }else if(4==i) {DelNode(); }else if(5==i) {break; }else {printf("输入错误!请重新输入!n"); continue; }} return 0; } 我们才做了这个作业。。。 #include #include #include #define LEN sizeof(struct scorenode) #define DEBUG #include struct scorenode {int number;/学号/ char name[8];/姓名/ float cj1;/成绩1/ float cj2;/成绩2/ float cj3;/成绩3 / struct scorenode next; }; typedef struct scorenode score; int n,k;/n,k为全局变量,本程序中的函数均可以使用它/ /==============================================================================================/ score creat(void) /函数creat,功能:创建链表,此函数带回一个指向链表头的指针/ {scorehead; score p1,p2,p3,max; int i,j; float fen; char t[10]; n=0; p1=p2=p3=(score )malloc(LEN);head=p3; /申请一个新单元/ printf("请输入,输0退出!n"); repeat1: printf("请输入学生学号(学号应大于0):");/输入大于0的学号/ scanf("%d",&p1->number); while(p1->number<0) {getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&p1->number); }/输入学号为字符或小于0时,程序报错,提示重新输入学号/ if(p1->number==0) goto end;/当输入的学号为0时,转到末尾,结束创建链表/ else {p3=head; if(n>0) {for(i=0;i {if(p1->number!=p3->number) p3=p3->next; else {printf("学号重复,请重输!n"); goto repeat1; /当输入的学号已经存在,程序报错,返回前面重新输入/ }} }} printf("请输入学生姓名:"); scanf("%s",&p1->name); /输入学生姓名/ printf("请输入cj1(0~100):"); /输入cj1,成绩应在0-100/ scanf("%f",&p1->cj1); while(p1->cj1<0||p1->cj1>100) {getchar(); printf("输入错误,请重新输入cj1"); /输入错误,重新输入成绩1/ scanf("%f",&p1->cj1); }printf("请输入cj2(0~100):"); /输入cj2,成绩应在0-100/ scanf("%f",&p1->cj2); while(p1->cj2<0||p1->cj2>100) {getchar(); printf("输入错误,请重新输入cj2"); /输入错误,重新输入cj2直到正确为止/ scanf("%f",&p1->cj2); }printf("请输入cj3(0~100):");/输入cj3,成绩应在0-100/ scanf("%f",&p1->cj3); while(p1->cj3<0||p1->cj3>100) {getchar(); printf("输入错误,请重新输入cj3"); scanf("%f",&p1->cj3);} /输入错误,重新输入cj3直到正确为止/ head=NULL; while(p1->number!=0) {n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(score )malloc(LEN); printf("请输入,输0退出!n"); repeat2:printf("请输入学生学号(学号应大于0):"); scanf("%d",&p1->number); /输入学号,学号应大于0/ while(p1->number<0) {getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&p1->number); }/输入学号为字符或小于0时,程序报错,提示重新输入学号/ if(p1->number==0) goto end; /当输入的学号为0时,转到末尾,结束创建链表/ else {p3=head; if(n>0) {for(i=0;i {if(p1->number!=p3->number) p3=p3->next; else {printf("学号重复,请重输!n"); goto repeat2; /当输入的学号已经存在,程序报错,返回前面重新输入/ }} }} printf("请输入学生姓名:"); scanf("%s",&p1->name);/输入学生姓名/ printf("请输入cj1(0~100):"); scanf("%f",&p1->cj1);/输入cj1,成绩应在0-100/ while(p1->cj1<0||p1->cj1>100) {getchar(); printf("输入错误,请重新输入cj1"); scanf("%f",&p1->cj1);}/输入错误,重新输入cj1直到正确为止/ printf("请输入cj2(0~100):"); scanf("%f",&p1->cj2);/输入cj2,成绩应在0-100/ while(p1->cj2<0||p1->cj2>100) {getchar(); printf("输入错误,请重新输入cj2"); scanf("%f",&p1->cj2); } /输入错误,重新输入cj2绩直到正确为止/ printf("请输入cj3(0~100):"); scanf("%f",&p1->cj3);/输入cj3,成绩应在0-100/ while(p1->cj3<0||p1->cj3>100) {getchar(); printf("输入错误,请重新输入cj3"); scanf("%f",&p1->cj3);} /输入错误,重新输入cj3直到正确为止/ }end: p1=head; p3=p1; for(i=1;i {for(j=i+1;j<=n;j++) {max=p1; p1=p1->next; if(max->number>p1->number) {k=max->number; max->number=p1->number; p1->number=k; /交换前后结点中的学号值,使得学号大者移到后面的结点中/ strcpy(t,max->name); strcpy(max->name,p1->name); strcpy(p1->name,t); /交换前后结点中的姓名,使之与学号相匹配/ fen=max->cj1; max->cj1=p1->cj1; p1->cj1=fen; /交换前后结点中的cj1,使之与学号相匹配/ fen=max->cj2; max->cj2=p1->cj2; p1->cj2=fen; /交换前后结点中的cj2,使之与学号相匹配/ fen=max->cj3; max->cj3=p1->cj3; p1->cj3=fen; /交换前后结点中的cj3,使之与学号相匹配/ }} max=head;p1=head;/重新使max,p指向链表头/ }p2->next=NULL;/链表结尾/ printf("输入的学生数为:%d个!n",n); return(head); }score add(score head,score stu) /函数add,功能:追加,并且将所有按学号排序/ {score p0,p1,p2,p3,max; int i,j; float fen; char t[10]; p3=stu=(score )malloc(LEN);/开辟一个新单元/ printf("n输入要增加的学生的资料!"); repeat4: printf("请输入学生学号(学号应大于0):"); scanf("%d",&stu->number); /输入学号,学号应大于0/ while(stu->number<0) {getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&stu->number);} /输入错误,重新输入学号/ // if(stu->number==0) goto end2;/当输入的学号为0时,转到末尾,结束追加/ else {p3=head; if(n>0) {for(i=0;i {if(stu->number!=p3->number) p3=p3->next; else {printf("学号重复,请重输!n"); goto repeat4; /当输入的学号已经存在,程序报错,返回前面重新输入/ }} }} // printf("输入学生姓名:"); scanf("%s",stu->name); /输入学生姓名/ printf("请输入cj1(0~100):"); scanf("%f",&stu->cj1); /输入cj1,成绩应在0-100/ while(stu->cj1<0||stu->cj1>100) {getchar(); printf("输入错误,请重新输入cj1"); scanf("%f",&stu->cj1); } /输入错误,重新输入cj1直到正确为止/ printf("请输入cj2(0~100):"); scanf("%f",&stu->cj2);/输入cj2,成绩应在0-100/ while(stu->cj2<0||stu->cj2>100) {getchar(); printf("输入错误,请重新输入cj2"); scanf("%f",&stu->cj2);}/输入错误,重新输入cj2直到正确为止/ printf("请输入cj3(0~100):"); scanf("%f",&stu->cj3);/输入cj3,成绩应在0-100/ while(stu->cj3<0||stu->cj3>100) {getchar(); printf("输入错误,请重新输入cj3"); scanf("%f",&stu->cj3);}/输入错误,重新输入cj3直到正确为止/ p1=head; p0=stu; if(head==NULL) {head=p0;p0->next=NULL;}/当原来链表为空时,从首结点开始存放资料/ else/原来链表不为空/ {if(p1->next==NULL)/找到原来链表的末尾/ {p1->next=p0; p0->next=NULL;/将它与新开单元相连接/ }else {while(p1->next!=NULL)/还没找到末尾,继续找/ {p2=p1;p1=p1->next; }p1->next=p0; p0->next=NULL; }} n=n+1; p1=head; p0=stu; for(i=1;i {for(j=i+1;j<=n;j++) {max=p1; p1=p1->next; if(max->number>p1->number) {k=max->number; max->number=p1->number; p1->number=k; /交换前后结点中的学号值,使得学号大者移到后面的结点中/ strcpy(t,max->name); strcpy(max->name,p1->name); strcpy(p1->name,t); /交换前后结点中的姓名,使之与学号相匹配/ fen=max->cj1; max->cj1=p1->cj1; p1->cj1=fen; /交换前后结点中的cj1,使之与学号相匹配/ fen=max->cj2; max->cj2=p1->cj2; p1->cj2=fen; /交换前后结点中的cj2绩,使之与学号相匹配/ fen=max->cj3; max->cj3=p1->cj3; p1->cj3=fen; /交换前后结点中的cj3,使之与学号相匹配/ }} max=head;p1=head;/重新使max,p指向链表头/ } end2: printf("现在的学生数为:%d个!n",n); return(head); }/======================================================== ======================================/ score search(score head) /函数search,功能:查询学生成绩/ {int number; score p1,p2; printf("输入要查询的学生的学号,"); scanf("%d",&number); while(number!=0) {if(head==NULL) {printf("n没有任何!n");return(head);} printf("-----------------------------------------n"); printf("|学号t|姓名t|cj1t|cj2t|cj3t|n"); printf("-----------------------------------------n");/打印表格域/ p1=head; while(number!=p1->number&&p1->next!=NULL) {p2=p1;p1=p1->next;} if(number==p1->number) {printf("|%dt|%st|%.1ft|%.1ft|%.1ft|n",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3); printf("-----------------------------------------n");}/打印表格域/ else printf("%d不存在此学生!n",number); printf("输入要查询的学生的学号,"); scanf("%d",&number); }printf("已经退出了!n"); return(head); }/============================================= =================================================/ score del(score head)/函数del,功能:删除/ {score p1,p2; int number; printf("输入要删除的学生的学号(输入0时退出):"); scanf("%d",&number); getchar(); while(number!=0)/输入学号为0时退出/ {if(head==NULL) {printf("n没有任何!n"); return(head); }p1=head; while(number!=p1->number&&p1->next!=NULL) /p1指向的不是所要找的首结点,并且后面还有结点/ {p2=p1;p1=p1->next; } /p1后移一个结点/ if(number==p1->number) /找到了/ {if(p1==head) head=p1->next; /若p1指向的是首结点,把地二个结点地址赋予head/ else p2->next=p1->next; /否则将下一个结点地址 赋给前一结点地址/ printf("已经删除:%dn",number);n=n-1; }else printf("%d不存在此学生!n",number); /找不到该结点/ printf("输入要删除的学生的学号:"); scanf("%d",&number); getchar(); }#ifdef DEBUG printf("已经退出了!n"); #endif printf("现在的学生数为:%d个!n",n); return(head); } /================================================== ============================================/ score statistics(score head) /函数statistics,功能:统计学生成绩/ {float sum1=0,sum2=0,sum3=0,e1=0,e2=0,e3=0,max=0,min; score p; int x,y=0,i=0; p=head; printf("1个人总分和平均分t2单科平均分t3总分分t4总分分n"); scanf("%d",&x); getchar(); switch(x) /用switch语句实现功能选择/ {case 1: if(head==NULL) {printf("n没有任何!n");return(head);}/链表为空/ else {printf("---------------------------------------------------------n"); printf("|学号t|姓名t|cj1t|cj2t|cj3t|总分t|平均分t|n"); printf("---------------------------------------------------------n");/打印表格域/ while(p!=NULL) {sum1=p->cj1+p->cj2+p->cj3; /计算个人总分/ e1=sum1/3;/计算个人平均分/ printf("|%dt|%st|%.1ft|%.1ft|%.1ft|%.1ft|%.1ft|n",p->number,p->name,p->cj1,p->cj2,p->cj3,sum1,e1); /打印结果/ printf("---------------------------------------------------------n");/打印表格域/ p=p->next;} }return(head); break; case 2: if(head==NULL) {printf("n没有任何!n");return(head);}/链表为空/ while(p!=NULL) {sum1=sum1+p->cj1; sum2=sum2+p->cj2; sum3=sum3+p->cj3;/计算总分/ y=y+1; e1=sum1/y; e2=sum2/y; e3=sum3/y;/计算平均分/ p=p->next;/使p指向下一个结点/ }printf("cj1平均分是%.1fn",e1); printf("cj2平均分是%.1fn",e2); printf("cj3平均分是%.1fn",e3);/打印结果/ return(head); break; case 3: if(head==NULL) {printf("n没有任何!n");return(head);}/链表为空/ max=p->cj1+p->cj2+p->cj3; while(i {i=i+1; sum1=p->cj1+p->cj2+p->cj3; /计算个人总分/ if(max max=sum1; p=p->next; }printf("总分分:%.1f",max); printf("n"); return(head); break; case 4: if(head==NULL) {printf("n没有任何!n");return(head);}/链表为空/ while(p!=NULL) {min=p->cj1+p->cj2+p->cj3; while(p!=NULL) {sum2=p->cj1+p->cj2+p->cj3; if(min>sum2) min=sum2; p=p->next; }} printf("总分分:%.1f",min); printf("n"); return(head); break; default :printf("输入错误,请重试!n"); }return(head); }/=========================================================== ===================================/ int se(score p1) /函数se,功能:保存学生的资料/ {FILE fp; char filepn[20];/用来存放文件保存路径以及文件名/ printf("请输入文件路径及文件名:"); scanf("%s",filepn); if((fp=fopen(filepn,"w+"))==NULL) {printf("不能打开文件!n"); return 0; }fprintf(fp," 学生成绩管理系统 n"); fprintf(fp,"-------------------------------------------------------n"); fprintf(fp,"| 学号t| 姓名t| cj1t| cj2t| cj3t|n"); fprintf(fp,"-------------------------------------------------------n"); /打印表格域/ while(p1!=NULL) {fprintf(fp,"%dt%st%.1ft%.1ft%.1ftn",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3); p1=p1->next;/下移一个结点/ }fclose(fp); printf("文件已经保存!n"); return 0; }int menu()/函数menu,功能:菜单选择界面/ {int i,k; printf("tttt学生成绩管理系统n"); for(i=0;i<80;i++) printf(""); printf("tt1创建资料ttt2查询成绩ttn"); printf("tt3删除资料ttt4追加资料ttn"); printf("tt5统计成绩ttt6保存资料ttn"); /菜单选择界面/ for(i=0;i<80;i++) printf(""); printf("请选择您所要的作(选择(0)退出):"); scanf("%d",&k);/选择作/ getchar(); return (k);} /==============================================================================================/ main() /主函数main,功能:通过调用creat,search,del,add,print,ststistics,se,taxis等函数,实现学生成绩查询系统功能/ {score head=0,stu=0; while(1) {k=menu(); switch(k)/用switch语句实现功能选择/ {case 1: head=creat();break;/调用创建链表函数/ case 2: head=search(head);break;/调用查询函数/ case 3: head=del(head); break;/调用删除函数/ case 4: head=add(head,stu);break;/调用追加函数/ case 5: statistics(head); break;/调用统计函数/ case 6: se(head);break;/调用保存函数/ case 0: exit(0);/退出系统,返回主界面/ default: printf("输入错误,请重试!n"); }} } 1、首先,定义一个数据结构student,包含学生的各信息。 2、定义两个student类型的变量,保存所有学生的成绩信息和临时变量。 3、定义一个自定义函数,输入学生的成绩信息。 4、具体实现学生信息的输入,并计算总分。 5、主函数中,先定义4个整型变量,保存学生的总数,以及控制循环的变量。 6、接着,输入学生总数,保存在变量n中。 7、输入所有学生的信息,保存在数组arr中。 8、用3重循环,实现学生按学号的排序。,按学号输出各学生的总分。 #include using namespace std; struct student {double ID; char name[15]; char [20]; double birth; double Chinese; double Maths; double English; }; void main() {cout<<"学生成绩管理系统功能菜单"< cout<<"1 信息输入"< cout<<"2 保存数据到文件"< cout<<"3 从文件读出数据"< cout<<"4 查询成绩"< cout<<"5 计算并输出总分"< cout<<"0 退出程序"< int n; cin>>n; if(n=1) {double n; cout<<"请输入学生人数"< cin>>n; student m[500]; for(int i=0;i {cout<<"请输入学号"< cin>>m[i]. ID; cout<<"请输入姓名"< cin>>m[i].name; cout<<"请输入性别"< cin>>m[i].; cout<<"请输入出生年月"< cin>>m[i].birth; cout<<"请输入语文成绩"< cin>>m[i].Chinese; cout<<"请输入数学成绩"< cin>>m[i].Maths; cout<<"请输入英语成绩"< cin>>m[i].English; }} }给这个c++程序添加一个计算全班所有学生各科的平均分和及格率的功能!用的是vc5编译! #include //定义结构体 struct student {int number; char name[20]; float score1; float score2; float score3; float score4; float score5; float e; }; //单个学员录入函数 void input(struct student st) {printf("n学号: "); scanf("%d",&st->number); printf("姓名: "); fflush(stdin); gets(st->name); printf("五门课成绩:n成绩1: "); scanf("%f",&st->score1); printf("成绩2: "); scanf("%f",&st->score2); printf("成绩3: "); scanf("%f",&st->score3); printf("成绩4: "); scanf("%f",&st->score4); printf("成绩5: "); scanf("%f",&st->score5); st->e=(st->score1+st->score2+st->score3+st->score4+st->score5)/5; }//显示学员信息函数 void display(struct student st,int n) {int i; printf("nt学号t姓名t平均成绩n"); for(i=0; i {printf("t%dt%st%5.2fn",st->number,st->name,st->e); st++; }} //排序函数,大到小 void sorting(struct student stu[],int n) {struct student temp; int i,j; for(i=0; i {for(j=0; j {if(stu[j].e {temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; }} }} void main() {struct student stu[50],stu1; char ch; int i=0,num; //通过调用函数录入学员的信息 printf(" 请输入学员信息: nn"); do {input(&stu[i++]); printf("是否继续(Y/N)? "); fflush(stdin); ch=getchar(); }while(ch=='Y'||ch=='y'); //显示学员信息 printf("n排序前学员的信息如下: n"); display(stu,i); //排序函数 sorting(stu,i); //显示学员信息 printf("n排序后学员的信息如下: n"); display(stu,i); //显示学员信息 printf("n插入后学员的信息如下: n"); display(stu,i); } easy. you can create an ini file to do all of these. 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 836084111@qq.com 举报,一经查实,本站将立刻删除。用C语言写一个成绩查询系统。
编程如何用C语言编写一个学生成绩管理系统程序
如何用C#编程实现学生成绩管理系统?
C语言编程:学生成绩管理系统