成绩查询控制台.docx

上传人:b****3 文档编号:6237784 上传时间:2023-05-09 格式:DOCX 页数:12 大小:16.48KB
下载 相关 举报
成绩查询控制台.docx_第1页
第1页 / 共12页
成绩查询控制台.docx_第2页
第2页 / 共12页
成绩查询控制台.docx_第3页
第3页 / 共12页
成绩查询控制台.docx_第4页
第4页 / 共12页
成绩查询控制台.docx_第5页
第5页 / 共12页
成绩查询控制台.docx_第6页
第6页 / 共12页
成绩查询控制台.docx_第7页
第7页 / 共12页
成绩查询控制台.docx_第8页
第8页 / 共12页
成绩查询控制台.docx_第9页
第9页 / 共12页
成绩查询控制台.docx_第10页
第10页 / 共12页
成绩查询控制台.docx_第11页
第11页 / 共12页
成绩查询控制台.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

成绩查询控制台.docx

《成绩查询控制台.docx》由会员分享,可在线阅读,更多相关《成绩查询控制台.docx(12页珍藏版)》请在冰点文库上搜索。

成绩查询控制台.docx

成绩查询控制台

/*

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<stu_Name<<"\t"<stu_Num<<"\t"<stu_Grade<

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<stu_Name<<""<stu_Num<<""<stu_Grade<

}elseif(pare("C")==0&&grade/10<8)

{

i++;

if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数

\t"<

cout<stu_Name<<""<stu_Num<<""<stu_Grade<

}elseif(pare("B")==0&&grade/10<9)

{

i++;

if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数

\t"<

cout<stu_Name<<""<stu_Num<<""<stu_Grade<

}elseif(pare("A")==0&&grade/10>=9)

{

i++;

if(i==1)cout<<"姓名\t"<<"学号\t"<<"分数

\t"<

cout<stu_Name<<""<stu_Num<<""<stu_Grade<

}

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<stu_Name<<"\t"<stu_Num<<"\t"<stu_Grade<

}

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<stu_Name<<"\t"<stu_Num<<"\t"<stu_Grade<

}

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;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2