奖学金评定系统课程设计报告书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生奖学金评定系统

1.需求分析

该系统要求使用用户熟悉格式化文本文件的输入,在本系统中体现为Stuinfo.txt 和Namelist.txt两个文本文件。Stuinfo 文件里面存放着学生的学号、姓名、性别、成绩;Namelist 文件是由顺序表类写进去的内容,用于存放获得奖学金的学生姓名。

程序中通过两个语句来得到需要的字符串stuinfo、namelist. .通过int ReadFromFile(stud &e)来从文本文件内读出数据到顺序表内,在通过Student::SortRecodes ()//成绩排名构造函数来实现降序将学生成绩按照排序,最后由WriteToFile(stud e)来向文件写入已经排好序的信息。最终,可以得到获得奖学金的学生名单。

2.概要设计

程序的流程图如下:

3.详细设计

采用VC++作为开发工具,自己编写结构体Head, Stud来存储学生的学号,姓名,性别,总成绩。另外还有一个存放学生信息的结构体

struct stud ////定义学生结构体用于存贮学生基本信息。为学生记录开发一个

student类,其中有成员函数读取文件、降序排序成绩、计算获得奖学金名单。

3.1.结构体Head , stud的实现

struct Head

{

int number;//存放学生学号

char *name;//存放学生姓名

char *sex ;//存放学生性别

float scores;//存放学生分数

Head *next;

};

struct stud ////定义学生结构体

{

char name[NAMELEN+1]; ///学生姓名

int nummber; ////学生学号

char sex; ///学生性别

};

3.2顺序表student类的实现

在student 类中有指向学生记录的头指针和学生记录的个数,还有实现读取文件、降序排序成绩、计算获得奖学金名单的成员函数。具体实现过程如下:class Student

{

private:

Head *stuinfo;//链表头指针

int lenght;//总记录的个数

public:

Student();//构造函数

~Student();//析构函数

Readfile();//从文件file里面读取记录

SortRecodes();//按成绩选择排序学生记录

Scholarships();//按学生人数输出1、2、3等奖学金名单并写在文件file里面

};

Student::Student()

{

stuinfo=0;

lenght=0;

}

Student::~Student ()

{

}

Student::Readfile()//从文件file里面读取记录

{

char a[20];

char b[20];

Head *p,*q;

p=new Head;

stuinfo=p;

q=stuinfo;

cout<<">>>>>>>===============欢迎使用学生奖学金评定系统===============<<<<<<<<<"<

cout<<">>>>>>>===============该系统使用VC++6.0为开发工具==============<<<<<<<<<"<

cout<<">>>>>>================请输入你所保存的奖学金学生名单的文件名=====<<<<<<<<<"<

cin>>a;

ifstream infile(a);

while(!infile.eof())

{

infile>>b;

q->number=atoi(b);

infile>>b;

q->name =new char[strlen(b)+1];

strcpy(p->name,b);

infile>>b;

q->sex =new char[strlen(b)+1];

strcpy(p->sex ,b);

infile>>b;

q->scores=atoi(b);

q->next=0;

lenght++;

p=new Head;

q->next=p;

q=p;

}

}

Student::SortRecodes ()//成绩排名

{

Head *p=stuinfo;

Head *q=p->next ;

for(int i=1;i

{

for(int j=i+1;j<=lenght;j++)

{

if(p->scoresscores)

{

Head temp;

=new char [strlen(p->name )+1];

strcpy( ,p->name );

temp.sex =new char[strlen(p->sex )+1];

strcpy(temp.sex ,p->sex );

temp.number =p->number ;

temp.scores =p->scores ;

strcpy(p->name ,q->name );

strcpy(p->sex ,q->sex );

p->number =q->number ;

p->scores =q->scores ;

strcpy(q->name , );

strcpy(q->sex ,temp.sex );

q->number =temp.number ;

q->scores =temp.scores ;

delete ;

delete temp.sex ;

}

q=q->next ;

}

p=p->next ;

q=p->next ;

}

}

Student::Scholarships ()//按学生人数输出1、2、3等奖学金名单并写在文件file里面

{

char A[30];

cout<<">>>>>>>==================欢迎使用学生奖学金评定系统====================<<<<<<<<<<<<<<<<"<

cout<<">>>>>>===================请输入保存奖学金学生名单的文件名===============<<<<<<<<<<"<

cin>>A;

ofstream outfile(A);

Head *l=stuinfo;

cout<<"------------以下是一等奖学金的名单-------------"<< (lenght*0.03)<<"个"<

outfile<<"-------一等奖学金获得者----------"<< (lenght*0.03)<<"个"<

for(int i=1;i<= (lenght*0.03);i++)

{

cout<name <<" ";

outfile<name<<" " ;

l=l->next ;

}

cout<

outfile<

cout<<"------------以下是二等奖学金的名单-------------"<< (lenght*0.2)- (lenght*0.03)-1<<"个"<

相关文档
最新文档