奖学金评定系统课程设计报告书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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->scores { 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< outfile< l=l->next ; } cout< outfile< cout<<"------------以下是二等奖学金的名单-------------"<< (lenght*0.2)- (lenght*0.03)-1<<"个"<