成绩查询控制台.docx
- 文档编号:6237784
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:12
- 大小:16.48KB
成绩查询控制台.docx
《成绩查询控制台.docx》由会员分享,可在线阅读,更多相关《成绩查询控制台.docx(12页珍藏版)》请在冰点文库上搜索。
成绩查询控制台
/*
Author:
北骠将军
描述:
编制一个C语言成绩记录簿,每个学生信息包括:
学号、姓名、C语言成绩。
具体功能:
()创建信息链表并以磁盘文件保存;
()读取磁盘文件并显示输出所有学生的成绩;
()按学号或姓名查询成绩;
()添加成绩记录;
()修改指定姓名或学号的学生的成绩并可存盘;
()显示输出分以下、~79、~89、分以上各分数段的学生信息(可选项)。
*/
#include
#include
#include
#include
#include
#include
usingnamespacestd;
typedefstructStudent
{
Student*next;
stringstu_Num;
stringstu_Name;
stringstu_Grade;
}Student;
classHomeWork
{
private:
stringstr;//全局变量便于操作
Student*s,*first;
public:
intgetNum(stringstr);
voidinput(FILE*fp);
Student*createList(Student**s,FILE*fp);
voidprintList(Student*first,intindex,stringrank);//输出
voidprintGrade(Student*first,stringname,intx);//按照姓名或者学号输出
voidaddgrade(Student*first);//添加学生考试信息
stringmodifystr();
HomeWork(stringstr,Student*s,Student*first);
voidmodify(Student*first,stringname,intindex,FILE*fp);
};
stringHomeWork:
:
modifystr()
{
stringtemp;
cin>>temp;
if(temp!
="0")
str=temp;
returntemp;
}
HomeWork:
:
HomeWork(stringstr,Student*s,Student*first){
this->str=str;
this->s=s;
this->first=first;
}
intHomeWork:
:
getNum(stringstr)//获得分数
{
intsum=0;
for(inti=0;i { sum=(str[i]-'0')+10*sum; } returnsum; } voidHomeWork: : input(FILE*fp)//二进制输入 { for(inti=0;i { fputc(str[i],fp); } fputc('\n',fp);//添加换行符以便于检索 } Student*HomeWork: : createList(Student**s,FILE*fp)//创建链表 { *s=newStudent[sizeofStudent]; Student*first=*s; Student*stemp=newStudent[sizeofStudent]; inti=0; charch[30];//最大每次读取字符 while(fgets(ch,30,fp)! =NULL) { i++; str=ch; stringstrtemp=str.substr(0,str.length()-1); if(i%3==1) stemp->stu_Name=strtemp; elseif(i%3==2) stemp->stu_Num=strtemp; else { stemp->stu_Grade=strtemp;//创建当前节点 (*s)->next=stemp; *s=stemp; stemp=newStudent[sizeofStudent]; } } (*s)->next=NULL;//为指针值空便于检索 first->stu_Grade="100"; first->stu_Name="Author"; first->stu_Num="110511309"; returnfirst; } voidHomeWork: : printList(Student*first,intindex,stringrank)//输出 { inti=0; Student*ss=first->next; if(index==1) while(ss! =NULL) { i++; if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数\t"< cout< ss=ss->next; } if(index==2) { while(ss! =NULL) { intgrade=getNum(ss->stu_Grade); if(pare("D")==0&&grade/10<6)//一次排名 { i++; if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数 \t"< cout< }elseif(pare("C")==0&&grade/10<8) { i++; if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数 \t"< cout< }elseif(pare("B")==0&&grade/10<9) { i++; if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数 \t"< cout< }elseif(pare("A")==0&&grade/10>=9) { i++; if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数 \t"< cout< } ss=ss->next; } // } } voidHomeWork: : printGrade(Student*first,stringname,intx)//按照姓名或者学号输出 { inti=0; Student*ss=first->next; if(x==1) { while(ss! =NULL) { if(ss->stu_Name==name) { i++; if(i==1) cout<<"姓名\t"<<"学号\t"<<"分数\t"< cout< } ss=ss->next; } if(i==0) cout<<"请仔细检查,此学生可能不存在"< } elseif(x==2) { while(ss! =NULL) { if(ss->stu_Num==name) { i++; if(i==1) cout<<"姓名\t"<<"学号\t"<<"分数\t"< cout< } ss=ss->next; } if(i==0) cout<<"请仔细检查,此学生可能不存在"< } } voidHomeWork: : addgrade(Student*first)//添加学生考试信息 { Student*ss=first->next; Student*pre=NULL; while(ss! =NULL) { pre=ss; ss=ss->next; } ss=newStudent[sizeofStudent]; cin>>ss->stu_Name>>ss->stu_Num>>ss->stu_Grade; pre->next=ss; ss->next=NULL;//尾端值空 } voidHomeWork: : modify(Student*first,stringname,intindex,FILE*fp)//所有符合的项都将被修改 { Student*ss=first->next; if(index==1) while(ss! =NULL) { if(ss->stu_Name==name) { intgrade;cin>>grade; ss->stu_Grade=grade; } str=ss->stu_Name; input(fp); str=ss->stu_Num; input(fp); str=ss->stu_Grade; input(fp); ss=ss->next; } elseif(index==2) { while(ss! =NULL) { if(ss->stu_Num==name) { stringgrade;cin>>grade; ss->stu_Grade=grade; } str=ss->stu_Name; input(fp); str=ss->stu_Num; input(fp); str=ss->stu_Grade; cout< input(fp); ss=ss->next; } } } intmain() { stringstr="";//全局变量便于操作 FILE*fp=NULL; Student*s,*first; s=first=NULL; HomeWorkhw(str,s,first); cout<<"欢迎访问成绩查询系统: \t作者: beipiaojiangjun\tQQ528410728"< charindex; cout<<"请输入您要选择的功能: "< cout<<"1、创建学生成绩表\t"< cout<<"2、查看当前学生的成绩\t"< cout<<"3、按姓名查找\t"< cout<<"4、按照学号查找\t"< cout<<"5、添加学生成绩\t"< cout<<"6、按学号修改学生成绩\t"< cout<<"7、按照姓名修改学生成绩\t"< cout<<"8查询各成绩段学生成绩"< while(cin>>index) { stringname,num,rank; if(! (index>='1'&&index<='8')) { cout<<"不存在的功能项"< continue; } switch(index) { case'1': cout<<"学生信息正在录入,以结束本次输入"< while(hw.modifystr()! ="0") { fp=fopen("test.txt","ab+"); hw.input(fp); fclose(fp); } break; case'2': fp=fopen("test.txt","ab+"); first=hw.createList(&s,fp); hw.printList(first,1,""); fclose(fp); break; case'3': fp=fopen("test.txt","ab+"); cout<<"请输入姓名: "< cin>>name; first=hw.createList(&s,fp); hw.printGrade(first,name,1); fclose(fp); case'4': fp=fopen("test.txt","ab+"); cout<<"请输入学号: "< cin>>num; first=hw.createList(&s,fp); hw.printGrade(first,num,2); fclose(fp); break; case'5': cout<<"学生信息正在录入,以结束本次输入"< while(cin>>str&&str! ="0") { fp=fopen("test.txt","ab+"); hw.input(fp); fclose(fp); } break; case'6': cin>>num; fp=fopen("test.txt","ab+"); first=hw.createList(&s,fp); fclose(fp); fp=fopen("test.txt","wb+"); hw.modify(first,num,2,fp); fclose(fp); break; case'7': cin>>name; fp=fopen("test.txt","ab+"); first=hw.createList(&s,fp); fclose(fp); fp=fopen("test.txt","wb+"); hw.modify(first,name,1,fp); fclose(fp); case'8': cout<<"请输入级别: \tA: 90分及以上 \tB: 80-89\tC: 60-79\tD: 低于"< cin>>rank; if(pare("A")||pare("B")||pare("C")||pare("D")) { fp=fopen("test.txt","ab+"); first=hw.createList(&s,fp); hw.printList(first,2,rank); fclose(fp); } break; default: break; } } system("pause"); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 成绩 查询 控制台