C语言程序设计报告

  • 格式:doc
  • 大小:1021.00 KB
  • 文档页数:12

《C语言课程设计》报告

题目: 选题八:学生成绩记录薄设计

专业年级:

学号:

姓名:

指导教师:

同组设计人员:

2011年6月30日

- 1 - [问题定义]

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:

(1)创建一个文本文件用来记录学生信息,输入至少30名学生的信息,保存在文本文件中;

(2)将文本文件中的数据读出,按学号或姓名查询成绩;

(3)能添加成绩记录;

(4)能修改指定姓名或学号的学生的成绩;

(5)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息,显示及格率和平均分,显示最高分和最低分,显示所有学生的排名(不能改变学生的学号顺序);

(6)以上信息能保存在原文本文件中。

[开发工具]

Visual C++ 6.0

[数据结构]

struct xueshengguanli

{ string name;

string banbie;

int num;

float Clanguage;

xueshengguanli *next;

};

typedef xueshengguanli* xueshengGL;

xueshengGL Input(xueshengGL head)

{ char SEL='y';

int m=0;

xueshengGL p1,p2,top;

ofstream out_stream; out_stream.open("student.txt",ios::app);

//以追加数据信息打开文件

if(out_stream.fail())

{ cout<<"打开文件失败.\n";

exit(1);

}

xueshengGL为一个定义的结构体,xueshengGL用来引导每一个单独的xueshengGL结构,其中out_stream.open("student.txt",ios::app)表示将输入的信息保存在student.txt这一个文本中。p表示一个指向结构体的指针,本题指向的就是xueshengguanli这个结构体数组。

- 2 - 学生信息管理系统

修改学生信息 删除学生信息 查找学生信息 学生综合成绩排序信息 显示学生信息

输入修改人的姓名,学号

需要修改的项

班级 C语言成绩 查找人的姓名、学号 被删除人的姓名学号 返回

显示修改后相应的信息 输入新在班级 输入新的成绩

是否继续修改 显示所查学生的信息

返回主菜单 学生分数分段

Y

N 输入学生信息

输入姓名、班级、学号C语言成绩

是否继续输入

Y

N

- 3 - [算法描述]

该程序分为八个主要模块,分为:输入学生信息,修改学生信息,删除学生信息,显示学生信息,学生成绩排序,学生成绩统计,查找学生信息,学生分数分段和返回。各模块贱的关系可以参考上图的结构。各模块单独成立,与主模块相关联,有的模块间也有一些联系。该程序需要调用文本文档,因此每次程序的执行都会与文本文档相关联。

主要结构:

 当选择1时,进入学生信息输入功能:

主要代码如下:

{

p1=new xueshengguanli;

p1->next=NULL;

cout<<"\n请输入姓名:";

cin>>p1->name;

cout<<"\n请输入学号:";

cin>>p1->num;

cout<<"\n请输入班级:";

cin>>p1->banbie;

cout<<"\n请输入C语言成绩:";

cin>>p1->Clanguage;

if(m==0)

{ head=p1;

p2=head;

m=1;

}

else

{ p2->next=p1;

p2=p1;

}

cout<<"\n是否继续输入?(y/n)\n"; //判断是否继续输入

cin>>SEL;

} top=head;

//写入文件

while(head!=NULL)

{ out_stream

- 4 - head=head->next;

}

out_stream.close(); //关闭文件

if(SEL=='n'||SEL=='N')

cout<<"输入完毕.\n";

return top; //返回链表头结点地址

}

程序会将输入的学生信息保存在创建的文本文档中,以写入方式打开,文档信息可以长期保存,当第一个输入完成时,系统会提示是否输入下一个学生的信息,选择Y就会继续输入,选择N系统就会提示输入完毕,并回到主界面,让用户有充分的选择权!

下图为输入功能运行截图:

 至此,学生信息的输入功能完成!

- 5 -  当选择2时,进入学生信息修改功能

主要代码如下:

void xuanzhe(xueshengGL top)

{ int h;

while(h<1||h>2)

{ cout<<"\n请输入你要修改的项:";

cin>>h;

if(h==1)

{ cout<<"\n请输入新的班级:";

cin>>top->banbie;

break;

}

else if(h==2)

{ cout<<"\n请输入新的C语言成绩:";

cin>>top->Clanguage;

break; }

else

cout<<"\n输入错误!请重输!\n";

}

}

//修改学生信息

xueshengGL Change(xueshengGL top)

{ string NAME;

int NUM,l=0;

char SEL='y';

xueshengGL q,head;

cout<<"\n请输入修改人的姓名:";

cin>>NAME;

cout<<"\n请输入修改人的学号:";

cin>>NUM;

top=WenJian(top);

q=top;

while(top!=NULL)

{

if(top->name==NAME&&top->num==NUM)

{ l=1;

while(SEL=='y'||SEL=='Y')

{ cout<<"\n 1:班级 2:C语言成绩\n";

xuanzhe(top);

cout<<"\n这是修改后的学生信息:\n";

cout<<"\n姓名"<<"\t"<<"学号"<<"\t"<<"班级"<<"\t"<<"C语言成绩\n";

- 6 - cout

cout<<"\n是否继续修改?(y/n)\n";

cin>>SEL;

}

if(SEL=='n'||SEL=='N')

cout<<"输入完毕,任意键返回\n";

break;

}

else

top=top->next;

}

当选择修改选项这一项时,系统就会提示用户要修改的学生姓名和学号,当输入错误时,系统会提示:对不起,没有你要修改的人。输入正确时,系统会提示用户需要修改的班级或C语言成绩。输入完成时,系统会把修改后的学生信息输出让用户检查是否输错,提示是否继续修改。

//修改后学生信息写入文件

if(l==1)

{ head=q;

ofstream out_stream;

out_stream.open("student.txt",ios::trunc); //以覆盖文件原数据方式打开文件

if(out_stream.fail())

{ cout<<"打开文件失败.\n";

exit(1);

}

while(head!=NULL)

{ out_stream

head=head->next;

}

out_stream.close();

}

else

cout<<"\n对不起,没有你要修改的人.\n\n";

return q;

}

系统会将修改后的学生信息以覆盖文件原数据方式存储在student.txt文本文档中。修改学生信息时,系统也是从student.txt文本文档调取信息。

以下为过程截图: