新生信息统计课程设计实验报告

新生信息统计课程设计实验报告

C++/C课程设计

    

    


 

                                                                         课程设计报告

1、课程设计的题目及简介

此课程设计题目为课程设计。

设计题目为:新生基本信息统计软件

简介:此新生基本信息统计软件可以实现对学生成绩及基本信息进行创建、添加、删除,对已经完成的学生信息进行检索、排序、统计并保存至文件中。

                                                                        2、设计说明

1、界面:

用if else选择语句组合成一个具有选择性的结构,从而实现输入相应的数字来达成与之对应的功能;用while循环实现在此调出目录知道输入0退出为止。

2、创建:

定义一个对象调用构造函数,利用构造函数读取文件,创建链表,并将文件放入链表中。链表的每个节点都是StuListLink类的对象。

3、 新增学生信息:

给尾节点赋值,并移向下一个节点。

4、 显示学生信息:

对每个节点调用输出函数,使其显示出学生的基本信息。

5、 删除学生信息:

遍历链表,输入想删除学生信息的位置,若输入的位置为假,继续向下一个节点遍历,直到与输入的位置相符合。

6、 搜索学生信息:

输入想要查看学生的姓名,如果有与之相匹配的就输出,如果没有则输出“没有该生信息”。

7、 统计学生信息:

通过学生的性别分别进行统计并输出。

8、 按英语成绩排序:

利用冒泡排序。

9、 退出程序:

输入与退出程序相匹配的数字即可。

3、流程图

 

 

主函数包括的功能函数

1、 新增函数  2、删除函数

3、导入函数   4、搜索函数

5、统计函数   6、排序函数

7、保存函数   8、退出系统

添加学生信息

删除学生信息

导入学生信息

搜索学生信息

统计学生信息

保存学生信息

退出系统

输入删除的位置

输入相应的姓名

保存所有的学生信息

成功退出该系统

分别统计男女人数和总人数

导入理想的信息

输入添加的位置

4、程序清单

      

     #include<iostream>

#include<string.h>

#include<fstream>

#include<iomanip>

#include <stdlib.h>

using namespace std;

typedef struct student

{

     charname[200];

     charsex[20];

     charzy[200];

     int year;

     int month;

     int day;

     charid[200];

     int yy;

     structstudent *next;

}student, *StuList;;

class StuListLink

{

     private:

       struct student *head,*p,*q,*data;

     public:

          StuListLink();

          student*selve();//建立链表

          student*xz(student *head);//新增函数

          student*sc(student *head);//删除函数

          voidshu(student *head);//输出函数

          voidss(student *head);//搜索函数

          voidtj(student *head);//统计函数

          voidpx(student *head);//英语成绩排列

          voidbc(student *head);//保存函数

          voiddr(student *head);//导入函数

};

StuListLink::StuListLink()

{

}

student *StuListLink::selve()

{   

     student*p=(student *)malloc(sizeof(student));

     head=(student*)malloc(sizeof(student));

     head->next=p;

     cout<<"--------------------"<<endl;

       cout<<"请输入学生的姓名:"<<endl;

       cin>>p->name;

     cout<<"请输入学生的性别:"<<endl;

       cin>>p->sex;

       cout<<"请输入学生的专业:"<<endl;

       cin>>p->zy;

       cout<<"请输入学生的出生日期:"<<endl;

       cin>>p->year;

       cin>>p->month;

       cin>>p->day;

       cout<<"请输入学生的家庭地址:"<<endl;

       cin>>p->id;

       cout<<"请输入学生的英语入学成绩:"<<endl;

       cin>>p->yy;

     p->next=NULL;

     int i,n=1;

     while(1)

     {

          cout<<"是否继续执行此操作(请输入0 or 1)" <<endl;

          cin>>i;

          if(i==0)

          break;

          elseif(i==1)

          p->next=(student *)malloc(sizeof(student));

          p=p->next;

          cout<<"请输入学生的姓名:"<<endl;

            cin>>p->name;

          cout<<"请输入学生的性别:"<<endl;

            cin>>p->sex;

            cout<<"请输入学生的专业:"<<endl;

            cin>>p->zy;

            cout<<"请输入学生的出生日期:"<<endl;

            cin>>p->year;

            cin>>p->month;

            cin>>p->day;

            cout<<"请输入学生的家庭地址:"<<endl;

            cin>>p->id;

            cout<<"请输入学生的英语入学成绩:"<<endl;

            cin>>p->yy;

          n++;

     }

     cout<<"该班总人数为:"<<n<<endl;

     return head;

}

student *StuListLink::xz(student *head)//新增

{

     int m,i=1;

     cout<<"输入位置"<<endl;

     cin>>m;

     cout<<"姓名-性别-专业-出生年月-家庭住址-英语成绩"<<endl;

     student*data;

     data=newstudent;

cin>>data->name>>data->sex >>data->zy >>data->year>>data->month >>data->day >>data->id>>data->yy ;

     data->next=NULL;

     p=head;

     while(1)

     {   

          q=p;

          q=q->next;

          if(m==i)

          {

               p->next=data;

               data->next=q;

               break;

          }

         i++;

         p=p->next ;

     }

     return head;

}

student *StuListLink::sc(student *head)//删除

{

      

     int i=1,m;

     cout<<"删除学生的位置"<<endl;

     cin>>m;

     p=head;

     while(1)

     {   

         q=p;

          q=q->next;

          if(i==m)

          {

               p->next= q->next;

               deleteq;

               break;

          }

          i++;

          p=p->next;

         

     }

     return head;

}

void StuListLink::shu(student *head)//输出

{

     student*p=head;

     if(head=NULL)

          cout<<"链表为空"<<endl;

     for(;p->next!=NULL,p=p->next;)

     {

          cout<<p->name<<" "<<p->sex <<" "<<p->zy<<" "<<p->year<<"-"<<p->month <<"-"<<p->day<<" "<<p->id <<" "<<p->yy<<endl;

     }

}

void StuListLink::ss(student *head)//搜索

{

     charname1[200];

     charname2[200];

     cout<<"输入查找学生的姓名"<<endl;

     cin>>name1;

     p=head->next;

     while(1)

     {

         

          strcpy(name2,p->name);

          if(strcmp(name1,name2)==0)

          {

          {

               cout<<p->name<<" "<<p->sex <<" "<<p->zy<<" "<<p->year<<"-"<<p->month <<"-"<<p->day<<" "<<p->id <<" "<<p->yy<<endl;

               break;

          }

          p=p->next;

          }

          else

          cout<<"没有该生信息"<<endl;

          break;

     }

}

void StuListLink::tj(student *head)//统计

{

     int m=0,n=0;

     p=head->next;

     charsex1[20]={"nan"},sex2[20];

     for(;p!=NULL;p=p->next)

     {

          strcpy(sex2,p->sex);

          if(strcmp(sex1,sex2)==0)

          {

               m++;

          }

          else

          n++;

     }

     cout<<"男生有多少人:"<<m<<endl;

     cout<<"女生有多少人:"<<n<<endl;

}

void StuListLink::px(student *head)//排序

{

    

     int rr=100;

     int ll=1;

     while(rr>=0)

     {

         p=head->next;

          while(p!=NULL)

          {

               if(p->yy==rr)

               {

                    cout<<"序号-英语成绩-姓名"<<endl;

                    cout<<ll<<"  "<<p->yy<<"  "<<p->name<<endl;

                    ll++;

               }

               p=p->next;

          }

          rr--;

    }

    

}

void StuListLink::bc(student *head)//保存

{

     ofstreamoutfile("out.txt");

     student *p;

     p=head->next;

     for(;p!=NULL;p=p->next)

     {

          outfile<<p->name<<" ";

          outfile<<p->sex<<" ";

          outfile<<p->zy<<" ";

          outfile<<p->year<<"-";

          outfile<<p->month<<"-";

          outfile<<p->day<<" ";

          outfile<<p->id<<" ";

          outfile<<p->yy<<endl;

     }

     outfile.close(); 

}

void StuListLink::dr(student *head)//导入函数

{

     structStudent

    {

          charname[200];

          charsex[20];

          charzy[200];

          intyear;

          intmonth;

          intday;

          charid[200];

          int yy;

    };

   cout<<"输入导入文件的信息"<<endl;

    Student*da=new Student;

   cout<<"姓名-性别-专业-出生年月-家庭住址-英语成绩"<<endl;

   cin>>da->name >>da->sex >>da->zy>>da->year >>da->month >>da->day >>da->id>>da->yy ;

     ofstreamfilein("out.txt",ios::app);

     while(1)

     {

          filein<<da->name<<" ";

          filein<<da->sex<<" ";

          filein<<da->zy<<" ";

          filein<<da->year<<"-";

          filein<<da->month<<"-";

          filein<<da->day<<" ";

          filein<<da->id<<" ";

          filein<<da->yy<<endl;

          break;

     }

     filein.close();

}

int main()

{

     student*head;

     cout<<"+---------------------------+"<<endl;

   cout<<"|  欢迎使用学生信息管理系统 |"<<endl;

   cout<<"+---------------------------+"<<endl;

   cout<<"提示:为保证您的操作得到保存,请按正常顺序退出系统^_^"<<endl;

   cout<<endl;

   cout<<"\t\t您需要首先创建一个链表"<<endl;

    StuListLinkstulistlink;

     head=stulistlink.selve();

       cout<<"\n\t\t\t--------------------------------"<<endl;

       cout<<"\t\t\t+           主菜单            |"<<endl;

       cout<<"\t\t\t--------------------------------"<<endl;

       cout<<"\t\t\t+   [1]----新增学生信息       |"<<endl;

       cout<<"\t\t\t+   [2]----删除学生信息       |"<<endl;

       cout<<"\t\t\t+   [3]----导入学生信息       |"<<endl;

        cout<<"\t\t\t+    [4]----学生信息搜索       |"<<endl;

       cout<<"\t\t\t+   [5]----学生信息统计       |"<<endl; 

       cout<<"\t\t\t+   [6]----按英语成绩排序     |"<<endl;

       cout<<"\t\t +    [7]----学生信息保存       |"<<endl;

          cout<<"\t\t\t+    [8]----退出系统           |"<<endl;

          int i;

          cin>>i;

     while(1)

     {

         

        

         if(i==1)

          {

               stulistlink.xz(head);

               stulistlink.shu(head);

                

          }

          elseif(i==2)

          {

               stulistlink.sc(head);//删除

               stulistlink.shu(head);

          }

          elseif(i==3)

          {

               stulistlink.dr(head);//导入

          }

          elseif(i==4)

          {

              stulistlink.ss(head);//搜索

          }

          elseif(i==5)

          {

              stulistlink.tj(head);//统计

              stulistlink.shu(head);

          }

          elseif(i==6)

          {

              stulistlink.px(head);//排序

          }

          elseif(i==7)

          {

               stulistlink.bc(head);//保存

          }

          elseif(i==8) break;

          cout<<"\n\t\t\t--------------------------------"<<endl;

       cout<<"\t\t\t+           主菜单            |"<<endl;

       cout<<"\t\t\t--------------------------------"<<endl;

       cout<<"\t\t\t+   [1]----新增学生信息       |"<<endl;

       cout<<"\t\t\t+   [2]----删除学生信息       |"<<endl;

       cout<<"\t\t\t+   [3]----导入学生信息       |"<<endl;

       cout<<"\t\t\t+   [4]----学生信息搜索       |"<<endl;

       cout<<"\t\t\t+   [5]----学生信息统计       |"<<endl; 

       cout<<"\t\t\t+   [6]----按英语成绩排序     |"<<endl;

       cout<<"\t\t +    [7]----学生信息保存       |"<<endl;

          cout<<"\t\t\t+    [8]----退出系统          |"<<endl;

          cin>>i;

    }

     return 0;

}

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值