C++初学者程序设计,请指教

设计一个C++程序,统计各个班总人数,班级数,各个班级人数均设计成由用户输入。然后输出结果。

给你个参考 复制到粘贴到编译器调试几遍  看看思路   在写你那个就容易多了  建议尽量别用goto语句

#include<iostream> 

#include<string.h> 

#include<iomanip> 

#include<conio.h> 

#include <stdlib.h> 

using namespace std;

#define NULL 0 

struct student 

char name[30];          //姓名 

char sex[30];            //性别 

int num;              //学号 

int age;            //年龄 

double test_chinese;     //语文成绩 

double test_math;            //数学成绩 

double date;         //总成绩 

struct student *next;              

}; 

student *put_information(student *);     //创建学生信息库 

student *del_information(student *);   //删除学生信息 

student *insert_information(student *);   //添加学生信息 

student *search_name(student *);   // 按姓名查找学生信息 

student *search_num(student *)  ;      //按学号查找 

student *test_totol(student *);   ////总体成绩

student *order(student *);     // 排名 

student *print_information(student *);     //查看信息 

int n; 

int main() 

 int enternum;   

     student *head;

 head=NULL; 

 cout<<"********************************************************************************"<<endl; 

 cout<<"                              欢迎使用学生理系统                             "<<endl; 

 cout<<"********************************************************************************"<<endl; 

 cout<<"                              按任意键执行主菜单!                               "<<endl; 

     getch(); 

     while(1) 

 { 

 cout<<"***********************************主菜单*************************************"<<endl; 

 cout<<"                               0键退出                                        "<<endl; 

 cout<<"                               1键输入学生信息                                "<<endl; 

 cout<<"                               2键输出学习信息                                "<<endl; 

 cout<<"                               3键删除学生信息                                "<<endl;    

 cout<<"                               4键添加学生信息                                "<<endl; 

 cout<<"                               5键按姓名查找学生信息                          "<<endl; 

 cout<<"                               6键按学号查找学生信息                          "<<endl; 

 cout<<"                               7键查看学生总体成绩                            "<<endl; 

 cout<<"                               8键查看排名                                    "<<endl;  

 cin>>enternum; 

 switch(enternum) 

 { 

 case(0):cout<<"************************************************************************"<<endl; 

     cout<<endl; 

 cout<<"                    谢谢使用高校学籍管理系统                            "<<endl; 

 cout<<endl; 

 cout<<"************************************************************************"<<endl; 

             exit(0); 

 case(1):head=put_information(head);                

 break;                 

 case(2):print_information(head);           

     break; 

 case(3):head=del_information(head);             

 break; 

 case(4):head=insert_information(head); 

     break; 

 case(5):head=search_name(head);            

 break; 

 case(6):head=search_num(head);                

     break; 

 case(7):head=test_totol(head);                   

     break; 

 case(8):head=order(head); 

     break; 

 default:cout<<"             对不起,你只能输入0~7键,请重新输入          "<<endl; 

     break; 

 } 

 }

 return 0; 

student *put_information(student *head)                ////////信息输入函数 

student *p1,*p2; 

int N, choose; 

if(head!=NULL) 

cout<<"你已经输入信息,如果还想输入,请进入添加信息项添加信息"<<endl; 

return (head); 

cout<<"输入你想输入学生信息的个数:"; 

cin>>N; 

n=0; 

head=NULL; 

p1=p2=new student; 

while(n<N) 

n=n+1; 

p1=new student;             ///////开辟一个空间 

cout<<"请输入第"<<n<<"个学生的信息:"<<endl; 

        cout<<"    姓名:"; 

cin>>p1->name; 

     loop:  cout<<"    性别(1 男,2 女):"; 

cin>>choose; 

            switch(choose) 

case(1): 

strcpy(p1->sex,"男");break; 

case(2): 

strcpy(p1->sex,"女");break; 

default: 

cout<<"你的只能输入1或2,请重新输入!!!!"; 

goto loop; 

cout<<"    学号:"; 

cin>>p1->num; 

cout<<"    年龄:"; 

cin>>p1->age; 

cout<<"语文成绩:"; 

cin>>p1->test_chinese; 

cout<<"数学成绩:"; 

cin>>p1->test_math; 

if(n==1) 

        head=p1; 

else  

p2->next=p1; 

p2=p1; 

p2->next=NULL; 

cout<<"*******************************************************************************"<<endl; 

cout<<endl; 

cout<<"                         你已经成功的输入了"<<N<<"个人的信息                   "<<endl; 

cout<<endl; 

cout<<"*******************************************************************************"<<endl; 

cout<<endl; 

return (head); 

student *del_information(student *head)             //删除信息函数 

char del_name[30];                                //你想要删除学生的姓名 

int input; 

student *p1,*p2; 

    if (head==NULL)                               //没输入数据 

cout<<"对不起,你还没输入学生的信息!"<<endl;  

return(head); 

    else  

p1=head;                                            //使p1指向第一个结点

    loop:  cout<<"请输入你要删除该学生的姓名:"; 

cin>>del_name; 

while(strcmp(p1->name,del_name)!=0&&p1->next!=NULL)                   //输入的姓名没找到且还有结点 

p2=p1; 

p1=p1->next;                                       //p1后移一个结点 

if(strcmp(del_name,p1->name)==0)                        //找到要删除的学生的信息 

if(p1==head) head=p1->next;                           //若p1指向的是首结点,把第二个结点地址赋予head 

else p2->next=p1->next;                            //否则将下一结点地址赋给前一结点地址 

         cout<<"***************************************************"<<endl; 

            cout<<"          删除成功,你删除的学生信息为:            "<<endl; 

        cout<<"                     姓名:"               <<p1->name<<endl; 

        cout<<"                     学号:"               <<p1->num<<endl; 

        cout<<"                     性别:"               <<p1->sex<<endl; 

        cout<<"                     年龄:"               <<p1->age<<endl; 

        cout<<"                 语文成绩:"               <<p1->test_chinese<<endl; 

        cout<<"                 数学成绩:"               <<p1->test_math<<endl; 

        cout<<"***************************************************"<<endl; 

        n=n-1; 

        LOOP:cout<<"你是否想继续删除学生的信息(1继续,2返回主菜单)"<<endl; 

cin>>input; 

switch(input) 

case(1):goto loop; 

case(2):break; 

default:cout<<"你只能输入1或2,请重新输入!"<<endl; 

    goto LOOP;  

else  

cout<<"                找不到 "<<del_name<<"的信息,请重新输入              "<<endl;     //找不到信息 

    goto loop; 

return(head); 

student *insert_information(student *head)         //添加信息函数 

student *p1,*p2,*p; 

int N=0; 

head=NULL; 

p=new student; 

p1=p2=head; 

    cout<<"请输入添加到的位置(学号)"<<endl; 

cin>>p->num; 

cout<<"请输入添加学生的信息"<<endl; 

cout<<"    姓名:"; 

cin>>p->name; 

cout<<"    性别:"; 

cin>>p->sex; 

cout<<"    年龄:"; 

cin>>p->age; 

cout<<"语文成绩:"; 

cin>>p->test_chinese; 

cout<<"数学成绩:"; 

cin>>p->test_math; 

while(p1!=0) 

p2=p1; 

p1=p1->next; 

if(head=NULL) 

head=p; 

p->next=NULL; 

N++; 

else 

if(p->num==head->num) 

p=head; 

while(head!=NULL) 

head=head->next; 

head->num++; 

N++; 

else if(p->num==p1->num&&p->num!=head->num) 

p2->next=p; 

p->next=p1; 

while(p1!=NULL) 

p1->num++; 

N++; 

else if(p->num==(p1->num+1)&&p->next==NULL) 

p=p1->next; 

return (head); 

student *search_name(student *head)                 //按姓名查找学生信息函数 

student *p1,*p2; 

int enternum1;                            

char find_name[30];                       //按姓名查找所要输入的姓名 

if(head==NULL)                                 //为空表 

cout<<"你还没输入该学生的信息,请返回输入!"<<endl; 

return (head); 

else  

p1=head; 

     begin: cout<<"请输入你要查找学生的姓名:"; 

cin>>find_name; 

while(strcmp(find_name,p1->name)!=0&&p1->next!=NULL)               ///////输入的的姓名与已有的数据不同且后面还有学生信息 

p2=p1; 

p1=p1->next;         // P1向后移一个节点 

    if(strcmp(find_name,p1->name)==0)           ///找到了 

  cout<<"***************************************************"<<endl; 

  cout<<"          删除成功,你查找的学生信息为:            "<<endl; 

  cout<<"                     姓名:"               <<p1->name<<endl; 

  cout<<"                     学号:"               <<p1->num<<endl; 

  cout<<"                     性别:"               <<p1->sex<<endl; 

  cout<<"                     年龄:"               <<p1->age<<endl; 

     cout<<"                 语文成绩:"               <<p1->test_chinese<<endl; 

  cout<<"                 数学成绩:"               <<p1->test_math<<endl; 

  cout<<"***************************************************"<<endl; 

           hand:  cout<<"          是否继续删除(1继续2返回主菜单)"; 

  cin>>enternum1; 

  switch(enternum1) 

  { 

  case(1): 

 goto begin; 

  case(2): 

 break; 

  default: 

 cout<<"你只能输入1或2,请重新输入!"<<endl; 

 goto hand; 

  } 

    else cout<<"**************学生信息库没该学生的信息!***********"<<endl; 

return(head); 

student *search_num(student *head) 

    student *p1,*p2; 

    int enternum2,find_num;   

if(head==NULL)                                 //为空表 

    cout<<"你还没输入该学生的信息,请返回输入!"<<endl; 

return(head); 

else 

p1=head; 

    begin:  cout<<"请输入你要查找学生的学号:"; 

    cin>>find_num; 

while(find_num!=p1->num&&p1->next!=NULL)        ///////输入的的数与已有的数不同且后面还有学生信息 

p2=p1; 

p1=p1->next;                        //P1向后移一个节点 

if(find_num==p1->num)            /////如果找到了 

cout<<"***************************************************"<<endl; 

cout<<"               你查找的学生信息为:                 "<<endl; 

cout<<"                     姓名:"               <<p1->name<<endl; 

cout<<"                     学号:"               <<p1->num<<endl; 

cout<<"                     性别:"               <<p1->sex<<endl; 

cout<<"                     年龄:"               <<p1->age<<endl; 

cout<<"                 语文成绩:"               <<p1->test_chinese<<endl; 

cout<<"                 数学成绩:"               <<p1->test_math<<endl; 

cout<<"***************************************************"<<endl; 

          hand: cout<<"按1键继续输入2键返回主菜单!"<<endl; 

cin>>enternum2; 

switch(enternum2) 

case(1): 

goto begin;break; 

case(2): 

break; 

default: 

cout<<"你只能输入1或2,请重新输入!"<<endl; 

goto hand;break; 

else cout<<"************学生信息库没该学生的信息!*********"<<endl; 

return (head); 

student *test_totol(student *head)              //求学生总成绩,平均成绩和及格率 

student *p1 ; 

int pass1=0,pass2=0;                //及格人数 

double sum1=0,sum2=0,mean1,mean2,pass_rate1,pass_rate2;                    

if(head==NULL) 

cout<<"对不起,你还没输入学生信息,请返回输入!"<<endl;    //空表 

return (head); 

else 

p1=head; 

while(p1!=NULL) 

sum1+=p1->test_chinese; 

sum2+=p1->test_math; 

if(p1->test_chinese>=60)pass1++; 

    if(p1->test_math>=60)pass2++; 

p1=p1->next; 

mean1=1.0*sum1/n; 

mean2=1.0*sum2/n; 

pass_rate1=(pass1/n)*100; 

pass_rate2=(pass2/n)*100;   

cout<<"*******************************************************"<<endl; 

cout<<"                语文的平均成绩为:     "<<mean1          <<endl; 

cout<<"                语文的及格率为:       "<<pass_rate1<<"%"<<endl; 

cout<<"*******************************************************"<<endl; 

cout<<"                数学的平均成绩为:     "<<mean2          <<endl; 

cout<<"                数学的及格率为:       "<<pass_rate2<<"%"<<endl; 

cout<<"*******************************************************"<<endl; 

return (head); 

}   

student *order(student  *head) 

{  

    student *p,*q,*tail,*s;  

int i=0; 

tail=NULL;   

while(head->next!=tail)   

{    

p=head; 

p->date=p->test_chinese+p->test_math; 

p->next->date=p->next->test_chinese+p->next->test_math; 

q=p->next;    

while(q->next!=tail)    

{     

if(p->next->date>q->next->date)     

{    

s=q->next;      

p->next=q->next;      

q->next=q->next->next;      

p->next->next=q;      

q=s; 

p=p->next;     

q=q->next; 

tail=q; 

    cout<<"______________________________________"<<endl; 

cout<<setw(8)<<"姓名"<<setw(8)<<"总分"<<setw(10)<<"名次"<<endl; 

    while(p!=NULL) 

++i; 

        cout<<"______________________________________"<<endl; 

    cout<<setw(8)<<p->name<<setw(8)<<p->date<<setw(8)<<"第"<<i<<"名"<<endl; 

    p=p->next; 

    cout<<"______________________________________"<<endl; 

return (head); 

student *print_information(student *head)                            //查看信息函数 

{   

student *p1; 

if(head==NULL) 

cout<<"对不起,你还没输入学生信息,请返回输入!"<<endl; 

return (head); 

else 

p1=head; 

cout<<"____________________________________________________________________________"<<endl; 

cout<<setw(8)<<"姓名"<<"|"<<setw(8)<<"学号"<<"|"<<setw(8)<<"性别"<<"|"<<setw(8) 

    <<"年龄"<<"|"<<setw(8)<<"语文成绩"<<"|"<<setw(8)<<"数学成绩"<<"|"<<endl; 

cout<<"____________________________________________________________________________"<<endl; 

while(p1!=NULL) 

{    

cout<<setw(8)<<p1->name<<"|" 

    <<setw(8)<<p1->num<<"|" 

<<setw(8)<<p1->sex<<"|" 

          <<setw(8)<<p1->age<<"|" 

   <<setw(8)<<p1->test_chinese<<"|" 

<<setw(8)<<p1->test_math<<"|"<<endl; 

cout<<"____________________________________________________________________________"<<endl; 

p1=p1->next; 

return (head); 

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-20
C++ 当然要用C++格式来写了。。

#include <iostream.h>
#define DX 5

class obj_class
{
private :
int class_num;
int stu_sum;
public:
void set(int num,int sum)
{
stu_sum=sum;
class_num =num;
}
void show()
{
cout<<class_num<<"班有学生:"<<stu_sum<<"人"<<endl;
}
};

int main()
{
obj_class obj[DX];

int num=0,sum=0,i=0;
for(i=0;i<DX;i++)
{
cout<<"请输入班级 人数"<<endl;
cin>>num>>sum;
obj[i].set(num,sum);
}

for(i=0;i<DX;i++)
{
obj[i].show();
}
}追问

不对哦,您再看看可以吗?

追答

#define DX 5
这里有定义 表示是 5个班 要输入5次 你说的不对事指什么不对?

第2个回答  2012-02-20
#include <iostream>
using namespace std;//分号在英文的

int main()
{
int a[1000],n,i,sum=0;
puts("输入班级个数");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
printf("%d\n",sum);
return 0;
}本回答被网友采纳

c++初学,高人指教
最后,导师还能提供职业发展指导。他们能分享行业内的知识,帮助初学者理解C++在不同领域(如游戏开发、系统编程、网络安全等)的应用。此外,导师还能提供面试准备、项目合作等方面的经验,为初学者的职业道路铺平道路。总之,对于C++初学者而言,找到一位经验丰富的导师是非常有价值的。他们能提供深入的理论...

C++初学者程序设计,请指教
default:cout<<"你只能输入1或2,请重新输入!"<<endl; goto LOOP; } } else { cout<<" 找不到 "<<del_name<<"的信息,请重新输入 "<<endl; \/\/找不到信息 goto loop; } } return(head); } student *insert_information(student *head) \/\/添加信息函数 { student *p1,*p2,...

想学计算机编程。。。求指教。。入门是需要哪些基础
此时你可以看看林锐博士的书,先给你打个预防针,在他的书面前,你会发现自己如此的卑微,本人是膜拜到了极点,无权妄加评论。《高质量C++\/C编程指南》一书,后来更名为《高质量程序设计指南——C++\/C语言》,两本看那一本都无所谓,都很好,值得一看!

初学C++请多指教:怎样转换double型数据的输出方式?
include <iostream.h> void main(){ double a;a=10000*10000;cout.precision(16);cout<<"a="<<a<<endl;}

我想学编程,就是不知道从何入手,有高手请指教!!!
(3)选择一种合适的入门语言 面对各种各样的语言,应按什么样的顺序学呢?程序设计工具不外乎如下几类: 1)本地开发 应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平台开发 开发工具...

C++编程题,求大神指教,实在是小白不会。已知速度和时间和加速度。框架...
double calculate_velocity( double& t ) {return 1e-5*t*t*t - 0.00488*t*t + 0.75795*t + 181.3566;}double calculate_acceleration( double& v ) {return 3.0 - 0.000062*v*v;}Secondly, you need to pay attention to the decmial point of your calculated result, which ...

我是初学C++语言,按照书上的代码编写出现“Error:未定义的标识符'cout...
using namespace std;void PrintArray(char warename[][10],int len,int sum[][12]){ for (int i=0;i<3;i++){ cout << "商品名称:" << warename[i] <<endl;int s = 0;for (int j=0;j<12;j++)s += sum[i][j];cout << "12个月总销量:" << s << endl;} } i...

初学C语言用什么程序呀?个位高手请指教
清华大学出版社出版的谭浩强编写的《C程序设计(第二版)》,这本教材比较好,他中用的是Turbo C 2.0 ,即TC2.0,但书中也介绍了可以用TC++ 3.0,因为后者可以用鼠标操作,前者不支持鼠标。等学的有一定水平了,就可以找一些其他的实例型书了,用VC++ 6.0就比较好了,因为它还支持中文(中文...

学习编程或自学编程的困惑,关于C语言,请指教
1.c语言的确是一门通用且重要的语言,撇去那些特殊的编程语言,拿c语言入门其实是很好的。你说好多直接是拿java或者c#作为第一门编程语言,这也行,一般来说这些面向对象的语言前面都会介绍面向过程的一部分,后面就是介绍面向对象也就是OOP的思想。c语言其实是作为一门稍低层的编程语言,unix\/linux...

请c++大虾指教``怎样改下面的程序,使它能看见结果`本人用的软件是dev...
int call(){return min(a[2],ss);} 这句就错了 你的模版只能带a,b同一类型的 int min函数也是 但是你这里a[2]是整形,ss是短整形 没有一个函数可以调用 自然就错了 而且min函数和原有库函数冲突,必须改名 可以改成如下 template<class Type>Type min1(Type a,Type b){return a>b?b:...

相似回答