| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖
标题:大家可以帮我下吗??需要全部过程。希望可以求得帮助。万分感谢。同学出的 ...
只看楼主 加入收藏
a25581818
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-6-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
大家可以帮我下吗??需要全部过程。希望可以求得帮助。万分感谢。同学出的。必须的要做出来
《高级语言程序设计》课程设计题目
题目一
1. 课题名称:成绩统计系统
2. 基本要求
根据下面的数据,为全班学生统计成绩,并排序。
学生成绩信息文件:
03,芦坚,48,90,65
09,白小红,78,85,53
12,祖晓明,83,81,62
23,靳龙刚,90,82,33
34,郭朋朋,35,35,100
36,邢海青,69,75,33
39,曹峰,77,62,56
解释:每行信息为“学号,姓名,高数,英语,java”,每行信息用英文逗
号隔开。
3. 功能要求及说明
(1)统计查询:
为每个学生统计总分,均分,并结束后将其按原有形式存储至原来的文件。
(2)查询功能:
输入一个学号时,查出此学生的成绩情况。
(3) 成绩排序:
可以按总成绩对学生进行排序并打印显示
   可以附加用的是C++程序的哪一款吗?

[ 本帖最后由 a25581818 于 2012-6-11 20:00 编辑 ]
搜索更多相关主题的帖子: 统计 英文逗号 课程 
2012-06-11 19:28
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
收藏
得分:7 
程序代码:
#include<iostream>
#include<cstdio>
#include<vector>
#include<fstream>
using namespace std;

typedef struct tagSTUDENT_SCORE
{
    unsigned int uNo;//
    char szName[50];//
    float fMath;
    float fEnglish;
    float fJava;
    float fAvg;//平均
    float fTotal;//
    tagSTUDENT_SCORE()
    {
        memset(this,0,sizeof(tagSTUDENT_SCORE));
    }
}STUDENT_SCORE,*LPSTUDENT_SCORE;
///解析字符串函数
char * spliter_str(char * pBegin,int &len/*out*/,char* record_buf/*out*/,unsigned int record_buf_len/*缓冲区长度*/)
{
    len=0;
    char *p = pBegin;
    while(*p != ',')
    {
        p++;
        len++;
    }
    if(len > 0 )
    {
        if(len >= record_buf_len)
            len = record_buf_len - 1;
        memset(record_buf,0,record_buf_len);
        memcpy(record_buf,pBegin,len);
    }
    p++;
    return p;
}
//冒泡排序
void bubble_sort(vector<STUDENT_SCORE>&x)
{
    int j,h,n=x.size();
    STUDENT_SCORE t;
    for (h=n-1; h>0; h--) /*循环到没有比较范围*/
    {
        for (j=0; j<h; j++)
        {
            if (x[j].fTotal < x[j+1].fTotal) /*小的放在后面,大的放到前面*/
            {
                t = x[j];
                x[j] = x[j+1];
                x[j+1]= t; /*完成交换*/
            }
        }
    }
}
//输出操作菜单
void print_ctrl_menu()
{
    cout<<"========================"<<endl
        <<"\t 1 打印学生信息\n"
        <<"\t 2 输入学号,打印学生信息\n"
        <<"\t 3 打印学生名次\n"
        <<"\t 0 退出\n"
        <<"========================"<<endl;
}
//获取选择
int get_user_sel()
{
    print_ctrl_menu();
    cout<<"请输入选择:";
    int sel;
    cin>> sel;
    while(sel<0 || sel > 3)
    {
        cout<<"输入有误,请重新输入"<<endl;
        print_ctrl_menu();
        cout<<"请输入选择:";
        cin>> sel;
    }
    return sel;
}
//获取输入的学号
unsigned int get_stu_no()
{
    cout<<"\t 请输入学号:";
    unsigned int no;
    cin>>no;
    return no;
}
//打印学生信息
void printf_stu_info(const vector<STUDENT_SCORE>&stuInfo,bool bPrintOrder=false)
{
    for(int i=0;i<stuInfo.size();i++)
    {
        cout<<"\n学号:"<<stuInfo[i].uNo
            <<"\t姓名:"<<stuInfo[i].szName
            <<"\t数学:"<<stuInfo[i].fMath
            <<"\t英语:"<<stuInfo[i].fEnglish
            <<"\tJAVA:"<<stuInfo[i].fJava
            <<"\t平均分:"<<stuInfo[i].fAvg
            <<"\t总分:"<<stuInfo[i].fTotal;
        if(bPrintOrder)
            cout<<"\t名次:"<<i+1;
        cout<<endl;
    }
}
//查找学生信息
void fin_stu_info(unsigned int no,const vector<STUDENT_SCORE>&stuInfo)
{
    for(int i=0;i<stuInfo.size();i++)
    {
        if(stuInfo[i].uNo == no)
        {
            cout<<"\n学号:"<<no
                <<"\t姓名:"<<stuInfo[i].szName
                <<"\t数学:"<<stuInfo[i].fMath
                <<"\t英语:"<<stuInfo[i].fEnglish
                <<"\tJAVA:"<<stuInfo[i].fJava
                <<"\t平均分:"<<stuInfo[i].fAvg
                <<"\t总分:"<<stuInfo[i].fTotal
                <<"\t名次:"<<i+1
                <<endl;
            return;
        }
    }
    cout<<"\n无相关信息"<<endl;
}
int main()
{
    const char * filename = "students.txt";
    ifstream ifile(filename,ios_base::in);//注意,初始数据文本文件最后不要有多余换行
    vector<STUDENT_SCORE> oldStuInfo;
    char buf[sizeof(STUDENT_SCORE)]={0};
    ifile.getline(buf,sizeof(STUDENT_SCORE));
    while(!ifile.eof())///开始解析字符串,并将内容保存至oldStuInfo
    {
        char record[50]={0};///保存解析后的字符串
        STUDENT_SCORE stu;
        char *p = buf;
        int len=0;
        p = spliter_str(p,len,record,sizeof(record));
        if(len>0)
        {
            stu.uNo = atoi(record);//获取学号
            p = spliter_str(p,len,record,sizeof(record));
            if(len>0)
            {
                memcpy(stu.szName,record,len);//获取姓名
                p = spliter_str(p,len,record,sizeof(record));
                if(len>0)
                {
                    stu.fMath = atof(record);//数学
                    p = spliter_str(p,len,record,sizeof(record));
                    if(len>0)
                    {
                        stu.fEnglish = atof(record);//英语
                        p = spliter_str(p,len,record,sizeof(record));
                        if(len>0)
                        {
                            stu.fJava = atof(record);//java
                            stu.fTotal = stu.fJava + stu.fMath + stu.fEnglish;
                            stu.fAvg = stu.fTotal / 3;
                            oldStuInfo.push_back(stu);
                        }//java
                    }//英语
                }//数学
            }//获取姓名
        }//获取学号
        memset(buf,0,sizeof(STUDENT_SCORE));
        ifile.getline(buf,sizeof(STUDENT_SCORE));
    }
    ifile.close();//关闭输入文件

    vector<STUDENT_SCORE> stuInfo(oldStuInfo);
    bubble_sort(stuInfo);//排序
   
    int sel = 0;
    while((sel = get_user_sel()) != 0)
    {
        switch(sel)
        {
        case 1:printf_stu_info(oldStuInfo);break;
        case 2:
            {
                unsigned int no = get_stu_no();
                fin_stu_info(no,stuInfo);
            }
            break;
        case 3:printf_stu_info(stuInfo,true);break;
        default:
            break;
        }
    }

    ///保存信息至文件
    FILE * lpFile = NULL;
    if(fopen_s(&lpFile,filename,"w") == 0)
    {
        if(lpFile)
        {
            for(int i = 0;i<oldStuInfo.size();i++)
            {
                fprintf(lpFile,"%02d,%s,%.0f,%.0f,%.0f\n",
                    oldStuInfo[i].uNo,
                    oldStuInfo[i].szName,
                    oldStuInfo[i].fMath,
                    oldStuInfo[i].fEnglish,
                    oldStuInfo[i].fJava);
            }
            fclose(lpFile);
        }
    }

    stuInfo.clear();
    oldStuInfo.clear();
}
我来给你做做贡献吧

努力改变一点点!!
2012-06-12 17:42
猎艳
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2012-6-13
收藏
得分:0 
楼主好厉害、我试着做了一下 感觉很麻烦,因为vector fstream这两个我还没学到、、、、
2012-06-13 23:16
yueye0919
Rank: 1
等 级:新手上路
帖 子:5
专家分:8
注 册:2012-6-14
收藏
得分:7 
好牛啊
2012-06-14 10:39
猎艳
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2012-6-13
收藏
得分:7 
这是我写的::
#include<iostream>
#include<iomanip>
using namespace std;
int ank[7]={7,7,7,7,7,7,7};//将每个人的排名初始化为最后一名
int num[7]={3,9,12,23,45,46,39};//定义班里人的学号
char name[7][10]={"芦坚","白小红","祖晓明","靳龙刚","郭朋朋","邢海青","曹峰"};//学号对应人的姓名
int Math[7]={48,78,63,90,35,69,77};//高数成绩
int English[7]={90,85,81,82,35,75,62};
int java[7]={65,53,62,33,100,33,56};
int sum[7];
int average[7];
//可以将目录做成一个函数
void menu()
{
         cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
         cout<<"┃****************      学 生 成 绩 管 理 系 统        ****************** ┃";
         cout<<"┃********** ★★★★★        ★★★★★★★         ★★★★★  *********** ┃";
         cout<<"┣━━━━━━━━━━━   1、查询某个同学的成绩情况    ━━━━━━━━━━━┫";
         cout<<"┣━━━━━━━━━━━   2、按总成绩对学生进行排序    ━━━━━━━━━━━┫";
         cout<<"┣━━━━━━━━━━━   3、        退出              ━━━━━━━━━━━┫";
         cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
         cout<<"请输入您的选择:"<<endl;

}
void rank(int a[],int n)
{
   
   for(int k=0;k<n;k++){
        for(int h=0;h<n;h++)
        {
           if(k==h)
               continue;
           else
               if(a[k]>a[h])
                   ank[k]--;
        }
   
   }
}

void main()
{
    for(int i=0;i<7;i++){
        sum[i]=Math[i]+English[i]+java[i];
        average[i]=sum[i]/3;
    }//求每个人的总分和均分
    rank(sum,7);
    menu();
    int a,numm;
    cin>>a;
    if(a>0&&a<4)
    {
       switch(a)
       {
       case 1:
           {   cout<<"请输入要查询学生的学号:"<<endl;
               cin>>numm;
               for(int j=0;j<7;j++){
                  if(num[j]==numm)
                      break;
               }
               cout<<"学号"<<setw(7)<<"姓名"<<setw(8)<<"高数"<<setw(8)<<"英语"<<setw(8)<<"java"<<setw(7)<<"总分"<<setw(7)<<"均分"<<endl;
               cout<<num[j]<<setw(9)<<name[j]<<setw(9)
                   <<Math[j]<<setw(7)<<English[j]
                   <<setw(7)<<java[j]<<setw(7)<<sum[j]
                   <<setw(7)<<average[j]<<endl;
               
           }
           break;
       case 2:
           {
            
              cout<<"按总成绩对学生进行排序如下:"<<endl;
              cout<<"学号"<<setw(7)<<"姓名"<<setw(8)<<"总分"<<setw(8)<<"排名"<<endl;
              for(int s=1;s<=7;s++)
              {
                 for(int d=0;d<7;d++)
                 {
                      if(s==ank[d])
                          cout<<num[d]<<setw(9)<<name[d]<<setw(9)
                              <<sum[d]<<setw(9)<<s<<endl;
                      else
                          continue;
                          
                 }
                 
              }

           }//按总成绩对学生进行排序
           break;
       case 3:
           break;
       }

    }
    else
        cout<<"错误!!";
}
2012-06-14 13:56
快速回复:大家可以帮我下吗??需要全部过程。希望可以求得帮助。万分感谢。同学 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043801 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved