第十七周实验报告2

 

实验目的:学会建立动态链表
实验内容:学会建立动态链表* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:  动态链表                           
* 作    者:  王引琳                           
* 完成日期:  2011       年  12     月  16   
* 版 本号:  x1.0       

* 对任务及求解方法的描述部分
* 输入描述:数据来自score.txt
* 问题描述:

(1)结构体中的成员多些;

(2)从文件中读入数据;

(3)一边读数据一边得计算总分,为计算总分的平均值也得做些准备;

(4)并不是输出所有的节点
* 程序输出:所有的节点

* 程序头部的注释结束(此处也删除了斜杠)
//下面是程序

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct Student
{
 char num[12];
 string name;
 double grade[4];
 struct Student *next;
};
void output_score();
void input_score();
Student *head=NULL,*p,*q;
double sum_score=0;
int num=180;
int main()
{
 
 output_score( );
 cout<<"总分高于平均分且没有挂科的同学:"<<endl;
 input_score( ); 
 return 0;
}
void output_score()
{
 int i;
    ifstream infile("score.txt",ios::in);
    if(!infile)
 {
  cerr<<"open error!"<<endl;
        exit(1);
 }
 for(i=0;i<num;i++)
 {
  p=new Student;
     infile>>p->num>>p->name>>p->grade[0]>>p->grade[1]>>p->grade[2];
     p->grade[3]=p->grade[0]+p->grade[1]+p->grade[2];
  sum_score=sum_score+p->grade[3];
     p->next=NULL;
  if(i==0)
   head=p;
     else
      q->next=p;
     q=p;
 }
  infile. close();  
}
void input_score()
{
 double ave_score=sum_score/num;
 cout<<"学号"<<"         "<<setw(9)<<"姓名"<<setw(7)<<"C++"<<setw(8)<<"高数"
    <<setw(8)<<"英语"<<setw(8)<<"总分"<<endl;
 p=head;
 while(p!=NULL)
 {
  if(p->grade[3]>ave_score&&p->grade[0]>60&&p->grade[1]>60&&p->grade[2]>60)
  {
   cout<<p->num<<"    "<<setw(8)<<p->name<<"   "<<p->grade[0]<<"\t"<<p->grade[1]
    <<"\t"<<p->grade[2]<<"\t"<<p->grade[3]<<endl;
  }
  p=p->next;
 }
 cout<<endl;
}

贴图:

已经提供的数据: <1> 班级学生名单:学生学号和姓名已经分别存储在以学生所在班级命名的文本文件中,每行存储一个学生学号和姓名,中间用一个空格分隔。例如:2010级网络工程1班.txt文件存放该班学生名单。内容为: …… <2> 开设课程保存在名为:course.txt的文本文件中,每行存放一门课程的名称,如: 面向对象程序设计 操作系统 数据库系统 实现以下功能,所有功能以图形用户界面完成。 <1> 新建课程考试成绩单,功能描述如下:  程序界面显示已经开设的课程(从course.txt中读取),用户选择本次输入的课程。  程序界面通过文件对话框要求用户选择为哪个班输入成绩(即选择相应班的名单文件)。如果该班的成绩已经输入(已经存在对应成绩文件),则提示无需输入。  程序提供界面为该班的每个学生输入考试成绩。  输入的成绩单以对象文件格式存储到文件中(不能是文本文件),文件命名为:班级-课程名.dat。例如:2010级网络工程1班-面向对象程序设计.dat。 <2> 打开课程考试成绩单,功能描述如下:  程序通过文件对话框要求用户选择打开的成绩文件。  程序打开并读取成绩文件内容,并显示在界面中。 <3> 修改课程考试成绩单,功能描述如下:  完成第<2>功能后,即打开某班某课程的成绩单后。  可以选择修改其中某个或某几个考试成绩,并保存。 <4> 课程考试成绩分析,功能描述如下:  完成第<2>功能后,即打开某班某课程的成绩单后。  点击成绩分析按钮或菜单,显示如下分析内容:  最高分:XX分,最低分:XX分,平均分:XX分  不及格(分数<60):XX人,占XX.XX%  及格(60<=分数<70):XX人,占XX.XX%  中等(70<=分数<80):XX人,占XX.XX%  良好(80<=分数<90):XX人,占XX.XX%  优秀(90<=分数<100):XX人,占XX.XX% <5> 成绩图形分析,功能描述如下: 提交要求: <1>打包为可以执行的JAR文档,其中要包含源程序文件。 <2>实验报告,WORD文档,扩展名为.DOC。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值