c++成绩系统程序代码.docx
- 文档编号:12038057
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:23
- 大小:21.51KB
c++成绩系统程序代码.docx
《c++成绩系统程序代码.docx》由会员分享,可在线阅读,更多相关《c++成绩系统程序代码.docx(23页珍藏版)》请在冰豆网上搜索。
c++成绩系统程序代码
面向对象程序设计课程设计
一:
面向对象程序设计课程设计的目的
本课程设计是在学习面向对象基本理论之后的实践教学环节。
该实践教学是软件设计的综合训练,包括问题分析,用户界面设计,程序设计基本技能和计巧。
1.能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能够设计出问题的有效算法和程序。
2.提高程序设计和调试能力。
通过上机实习,保证自己设计的算法和程序的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并修改,进步提高程序的正确与设计水平。
二:
源程序的基本代码。
#include
#include
#include
#defineLENsizeof(strUCtscorenode)(*定义一个字符函数结构*)
#defineDEBUG
#include
structscorenode
{intnumber;/*学号*/
charname[10];/*姓名*/
floatyuwen;/*语文成绩*/
floatyingyu;/*英语成绩*/
floatshuxue;/*数学成绩*/
structscorenode*next;
};
typedefstructscorenodescore;
intn,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
/*==================================================================================*/
score*creat2311(void)
/*函数creat2311,功能:
创建链表,此函数带回一个指向链表头的指针*/
{
score*head;
score*p1,*p2,*p3,*max;
inti,j;
floatfen;
chart[10];
n=0;
p1=p2=p3=(score*)malloc(LEN);head=p3;/*开辟一个新单元*/
printf("请输入学生资料,输0退出!
");
repeat1:
printf("请输入学生学号(学号应大于0):
");/*输入学号,学号应大于0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:
");
scanf("%d",&p1->number);}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
gotoend;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{for(i=0;i {if(p1->number! =p3->number) p3=p3->next; else {printf("学号重复,请重输! "); gotorepeat1; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } printf("请输入学生姓名: "); scanf("%s",&p1->name);/*输入学生姓名*/ printf("请输入语文成绩(0~100): ");/*输入语文成绩,成绩应在0-100*/ scanf("%f",&p1->yuwen); while(p1->yuwen<0p1->yuwen>100) {getchar(); printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/ scanf("%f",&p1->yuwen);} printf("请输入英语成绩(0~100): ");/*输入英语成绩,成绩应在0-100*/ scanf("%f",&p1->yingyu); while(p1->yingyu<0p1->yingyu>100) {getchar(); printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/ scanf("%f",&p1->yingyu);} printf("请输入数学成绩(0~100): ");/*输入数学成绩,成绩应在0-100*/ scanf("%f",&p1->shuxue); while(p1->shuxue<0p1->shuxue>100) {getchar(); printf("输入错误,请重新输入数学成绩"); scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/ 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退出! "); repeat2: printf("请输入学生学号(学号应大于0): "); scanf("%d",&p1->number);/*输入学号,学号应大于0*/ while(p1->number<0) {getchar(); printf("输入错误,请重新输入学生学号: "); scanf("%d",&p1->number);} /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/ if(p1->number==0) gotoend;/*当输入的学号为0时,转到末尾,结束创建链表*/ else { p3=head; if(n>0) {for(i=0;i {if(p1->number! =p3->number) p3=p3->next; else {printf("学号重复,请重输! "); gotorepeat2; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } printf("请输入学生姓名: "); scanf("%s",&p1->name);/*输入学生姓名*/ printf("请输入语文成绩(0~100): "); scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/ while(p1->yuwen<0p1->yuwen>100) {getchar(); printf("输入错误,请重新输入语文成绩"); scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100): "); scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/ while(p1->yingyu<0p1->yingyu>100) {getchar(); printf("输入错误,请重新输入英语成绩"); scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100): "); scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/ while(p1->shuxue<0p1->shuxue>100) {getchar(); printf("输入错误,请重新输入数学成绩"); scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/ }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->yuwen; max->yuwen=p1->yuwen; p1->yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max->yingyu; max->yingyu=p1->yingyu; p1->yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max->shuxue; max->shuxue=p1->shuxue; p1->shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ } } max=head;p1=head;/*重新使max,p指向链表头*/ } p2->next=NULL;/*链表结尾*/ printf("输入的学生数为: %d个! ",n); return(head);} /*=================================================================================*/ /*=================================================================================*/ score*load2311(score*head) /*函数load2311,功能: 从文件读入学生记录*/ { score*p1,*p2; intm=0; charfilepn[10]; FILE*fp; printf("请输入文件路径及文件名: "); scanf("%s",filepn);/*输入文件路径及名称*/ if((fp=fopen(filepn,"r+"))==NULL) { printf("不能打开文件! "); return0; } fscanf(fp," 考试成绩治理系统 "); fscanf(fp,"作者: 周纯钢班级: 信息023 学号: 11"); fscanf(fp,"-----------------------------------------"); fscanf(fp,"学号姓名语文英语数学"); fscanf(fp,"-----------------------------------------");/*读入表格域*/ printf(" 考试成绩治理系统 "); printf(" 作者: 周纯钢班级: 信息023 学号: 11"); printf("-----------------------------------------"); printf("学号姓名语文英语数学"); printf("-----------------------------------------");/*打印表格域*/ m=m+1; if(m==1) { p1=(score*)malloc(LEN);/*开辟一个新单元*/ fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue); printf("%d%s%.1f%.1f%.1f",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue); /*文件读入与显示*/ head=NULL; do { n=n+1; if(n==1)head=p1; elsep2->next=p1; p2=p1; p1=(score*)malloc(LEN); /*开辟一个新单元*/ fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue); printf("%d%s%.1f%.1f%.1f",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue); /*文件读入与显示*/ }while(! feof(fp)); p2->next=p1; p1->next=NULL; n=n+1; }printf("-----------------------------------------");/*表格下线*/ fclose(fp);/*结束读入,关闭文件*/ return(head); }/*================================================================================*/ /*================================================================================*/ score*add2311(score*head,score*stu) /*函数add2311,功能: 追加学生资料,并且将所有学生资料按学号排序*/ { score*p0,*p1,*p2,*p3,*max; inti,j; floatfen; chart[10]; p3=stu=(score*)malloc(LEN);/*开辟一个新单元*/ printf("输入要增加的学生的资料! "); repeat4: printf("请输入学生学号(学号应大于0): "); scanf("%d",&stu->number); /*输入学号,学号应大于0*/ while(stu->number<0) {getchar(); printf("输入错误,请重新输入学生学号: "); scanf("%d",&stu->number);}/*输入错误,重新输入学号*/ /******************************************************/ if(stu->number==0) gotoend2;/*当输入的学号为0时,转到末尾,结束追加*/ else { p3=head; if(n>0) {for(i=0;i {if(stu->number! =p3->number) p3=p3->next; else {printf("学号重复,请重输! "); gotorepeat4; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } /******************************************************/ printf("输入学生姓名: "); scanf("%s",stu->name); /*输入学生姓名*/ printf("请输入语文成绩(0~100): "); scanf("%f",&stu->yuwen); /*输入语文成绩,成绩应在0-100*/ while(stu->yuwen<0stu->yuwen>100) {getchar(); printf("输入错误,请重新输入语文成绩"); scanf("%f",&stu->yuwen);} /*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100): "); scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/ while(stu->yingyu<0stu->yingyu>100) {getchar(); printf("输入错误,请重新输入英语成绩"); scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100): "); scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/ while(stu->shuxue<0stu->shuxue>100) {getchar(); printf("输入错误,请重新输入数学成绩"); scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/ p1=head; p0=stu; if(head==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->yuwen; max->yuwen=p1->yuwen; p1->yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max->yingyu; max->yingyu=p1->yingyu; p1->yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max->shuxue; max->shuxue=p1->shuxue; p1->shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ } } max=head;p1=head;/*重新使max,p指向链表头*/ }end2: printf("现在的学生数为: %d个! ",n); return(head);} /*=============================================================================*/ /*==============================================================================*/ score*search2311(score*head) /
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 成绩 系统 程序代码