c++ 课程管理系统

这两天竟跟c++较劲了,这个课程管理系统终于弄完了,经过雷哥的指点,终于可以跟老师交差了~~ 

题目:

    实验内容:设计一个课程信息管理系统的数据结构,用类实现,功能包括课程信息录入、查询、删除、输出。

            程序运行界面如下所示:

           *课程信息管理系统*

           **********************************************************************

           1.课程信息录入

           2.课程信息查询

           3.课程信息删除

           4.课程信息输出

           5.退出系统

          ***********************************************************************

         请选择以上操作(1——–5)

  实验要求和说明:

     (1) 设计多个文件,分别为头文件(.h)进行类的定义,源文件(.cpp)文件进行类的实现,主函数文件(.cpp)实现菜单选择;

     (2) 课程信息包括:课程号,课程名,前导课,学分,开课单位。开课单位设计一个类,包括单位编号,单位名。设计相应的构

           造函数和成员函数。

 

    建立c++  Win32 Console Application  工程  添加 上述三个文件 头文件head,类实现文件source,主函数调用文件main.

   head文件

             class units
        {
            public:
            int   units_id;     //单位编号
            char  units_name[20];   //单位名称
        };

        class course_info
        {
            private:
              int   course_id;        //课程号
              char  course_name[20];  //课程名称
              char  qdke[20];         //前导课
              int   course_source;    //课程学分
              units course_units;     //开课单位

            public:
            course_info();//构造函数,把成员变量赋初值
            int course_menu();        //菜单
            void course_input();       //输入
            void course_search();       //查询
            void course_del();           //删除
            void course_output();      //输出
            void course_exit();        //退出
        };

 

source.cpp文件:

    #include <iostream>
    using namespace std;
    #include"head.h"
    #include<string.h>
    #include<stdlib.h>

    course_info::course_info(){}
          int         select_id;
          int         del_id=1;
           static int  zu_num=1;
          course_info course_zu[10];

    int course_info::course_menu()
    {
        cout<<"********欢迎进入本课程信息管理系统********"<<endl;
        cout<<"课程信息录入,请输入1"<<endl;
        cout<<"课程信息查询,请输入2"<<endl;
        cout<<"课程信息删除,请输入3"<<endl;
        cout<<"课程信息输出,请输入4"<<endl;
        cout<<"退 出 系  统 ,请输入5"<<endl;
        cout<<"—————————————–"<<endl;
        cout<<"请输入1-5"<<endl;
        cin>>select_id;
        return select_id;

    }

    void course_info::course_input()
    {
          int   s_course_id;        //课程号
          char  s_course_name[20];  //课程名称
          char  s_qdke[20];         //前导课
          int   s_course_source;    //课程学分
          int   s_units_id;         //单位编号
          char  s_units_name[20];   //单位名称

            cout<<"请输入该课程的课程号:"<<endl;
            cin>>s_course_id;
            cout<<"请输入该课程的课程名:"<<endl;
            cin>>s_course_name;
            cout<<"请输入该课程的前导课:"<<endl;
            cin>>s_qdke;
            cout<<"请输入该课程的学分:"<<endl;
            cin>>s_course_source;
            cout<<"输入该课程的开课单位编号:"<<endl;
            cin>>s_units_id;
            cout<<"输入该课程的开课单位名称:"<<endl;
            cin>>s_units_name;
            cout<<"*********************************************"<<endl;

          course_zu[zu_num].course_id = s_course_id;                     //课程号
          course_zu[zu_num].course_source          = s_course_source;    //学分
          course_zu[zu_num].course_units.units_id  =s_units_id;          //开课单位
          strcpy(course_zu[zu_num].course_name,s_course_name);           //课程名
          strcpy(course_zu[zu_num].course_units.units_name,s_units_name);//单位名称
          strcpy(course_zu[zu_num].qdke,s_qdke);                         //前导课
       
          zu_num = zu_num++;
           
         
    }

    void course_info::course_output()
    {
        for(int i=1;i<zu_num;i++)
        {
             cout<<"##########################################################"<<endl;
             cout<<"课   程   号:"<<course_zu[i].course_id<<endl;
             cout<<"课   程   名:"<<course_zu[i].course_name<<endl;
             cout<<"前   导   课:"<<course_zu[i].qdke<<endl;
             cout<<"学        分:"<<course_zu[i].course_source<<endl;
             cout<<"开课单位编号:"<<course_zu[i].course_units.units_id<<endl;
             cout<<"开课单位名称:"<<course_zu[i].course_units.units_name<<endl;
             cout<<"##########################################################"<<endl;
             cout<<"\n"<<endl;
        }

    }

    void course_info::course_search()
    {
        int wang_select_id=0;
        cout<<"请输入你要查询课程的课程号:"<<endl;
        cin>>wang_select_id;
        for(int i=1;i<zu_num;i++)
            {
             
              if(wang_select_id==course_zu[i].course_id)
                {
                  cout<<"您要程查询的课程号为"<<wang_select_id<<"的课信息如下:"<<endl;
                     cout<<"课程号::"<<wang_select_id<<endl;
                  cout<<"课程名:"<<course_zu[i].course_name<<endl;
                  cout<<"前导课:"<<course_zu[i].qdke<<endl;
                  cout<<"学分:"<<course_zu[i].course_source<<endl;
                  cout<<"开课单位编号:"<<course_zu[i].course_units.units_id<<endl;
                  cout<<"开课单位名称:"<<course_zu[i].course_units.units_name<<endl;
                  cout<<"\n"<<endl;
                }
              else
              {
                cout<<"没有此课哦~"<<endl;
                cout<<"\n"<<endl;
              }
               
            }
    }

    void course_info::course_del()
    {
        cout<<"请输入您要删除的课程编号:";
        cin>>del_id;
        int flag=1;
        int s=1;
        while ((zu_num>=s)&&(flag))
        {
            if(del_id==course_zu[s].course_id)
            {
                flag=0;//存在此课程号
            }
            else
            {
                s++;
            }
        }
        if(flag==1)
        {
            cout<<"此课程号不存在或您还没录入课程!"<<endl<<endl;
        }
        for (int j=s;j<zu_num;j++)
        {
            course_zu[j]=course_zu[j+1];
        }
    //    delete course_zu[s];
        zu_num–;
        cout<<"——-删除记录成功!——–"<<endl;
    }

    void course_info::course_exit()
    {
        exit(1);
    }

转载于:https://www.cnblogs.com/banruo/archive/2009/12/16/1625976.html

#include "iostream" #include "fstream" #include "iomanip" #include "string" using namespace std; bool equal(char *a,char *b,int n)//判断两个字符串是否一样 { int temp=0; for(int i=0;i<n;i++) if(a[i]==b[i]) temp++; if(temp==n) return 1; else return 0; } int getline(int n)//求文件中信息的行数(既文件中学生的数量,课程的数量) n为5表示为求A.txt中的行数,n为7表示求B.txt中的行数 { int count=0; char temp[20]; char temp1[20]; for(int i=0;i<20;i++) { temp1[i]=0; } ifstream f1; if(n==5) { f1.open("A.txt"); } if(n==7) { f1.open("B.txt"); } while(f1.get()) { if(!equal(temp,temp1,20)) { for(int i=0;i>temp; count++; } else break; } f1.close(); return count/n; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct binfo//学生基本信息 { char num[8],name[8],sex[8],flatnum[4],telenum[11];//学号,姓名,宿舍号,电话号码 }; struct sinfo//学生课程信息 { char num[8],jectnum[8],jectname[20];//学号,课程编号,课程名称 double xuefen,usualscore,labscore,testscore,comscore,turexuefen;//学分,平时成绩,实验成绩,卷面成绩,综合成绩,实得学分 double subxufen,subscore; }; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class studentb { friend ostream &operator;<>(istream &is;,studentb &st;); public: studentb(); void dele();//删除信息 void displayb1(ostream &os;);//查询基本信息 void displayb(ostream &os;); void displaypart(); void inputb(istream &is;); char* getnum(); char* getname(); private: binfo b;//基本信息 }; void studentb::displaypart() { cout<<"学号:"<<b.num<<'\t'<<"姓名:"<<b.name<<endl; } studentb::studentb() { } void studentb::displayb(ostream &os;) { os<<b.num<<'\t'<<b.name<<'\t'<<b.sex<<'\t'<<b.flatnum<<'\t'<<b.telenum<<endl; } void studentb::displayb1(ostream &os;) { os<<"学号:"<<b.num<<" "<<"姓名:"<<b.name<<" "<<"性别:"<<b.sex<<" "<<"宿舍号:"<<b.flatnum<<" "<<"电话号码:"<<b.telenum<>b.num>>b.name>>b.sex>>b.flatnum>>b.telenum; } ///////////////////////////////////////////////////////////////////////////////////////// class students { public: students(){}; void inputs(istream &is;); void displays(); void displays1(); void displays(ostream &os;); void inputsubxuefen(double x); void inputsubscore(double x); char *getnum(); double getxuefen(); double getcomscore(); void cal(); private: sinfo s; }; void students::inputsubscore(double x) { s.subscore=x; } void students::inputsubxuefen(double x) { s.subxufen=x; } double students::getcomscore() { return s.comscore; } double students::getxuefen() { return s.turexuefen; } void students::cal() { if(s.labscore==-1) s.comscore=s.usualscore*0.3+s.testscore*0.7; else s.comscore=s.usualscore*0.15+s.labscore*0.15+s.testscore*0.7; if(s.comscore<60) s.turexuefen=0; else s.turexuefen=s.xuefen; } char* students::getnum() { return s.num; } void students::inputs(istream &is;) { if(is==cin) cout<<"请输入学号,课程编号,课程名称,学分,平时成绩,实验成绩,卷面成绩:"<>s.num>>s.jectnum>>s.jectname>>s.xuefen>>s.usualscore>>s.labscore>>s.testscore; cal(); } void students::displays1() { cout<<"学号:"<<s.num<<" "<<"课程编号:"<<s.jectnum<<'\t'<<"课程名称:"<<s.jectname<<'\t'<<"综合成绩:"<<s.comscore<<'\t'<<"实得学分:"<<s.turexuefen<<endl; } void students::displays() { cout<<"课程编号:"<<s.jectnum<<'\t'<<"课程名称:"<<s.jectname<<'\t'<<"综合成绩:"<<s.comscore<<'\t'<<"实得学分:"<<s.turexuefen<<endl; } void students::displays(ostream &os;) { os<<s.num<<'\t'<<s.jectnum<<'\t'<<s.jectname<<'\t'<<s.xuefen<<'\t'<<s.usualscore<<'\t'<<s.labscore<<'\t'<<s.testscore<<endl; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class allstudentb { public: allstudentb(int n) { studentnum=n; sptr=new studentb [studentnum]; ifstream f("A.txt"); for(int i=0;i<studentnum;i++) sptr[i].inputb(f); f.close(); } ~allstudentb(){delete [] sptr;} void searchb(char *ch);//查询基本信息 void searchpart(char *ch); void deleb(char *ch);//删除信息 void sort();//信息排序 private: studentb *sptr; int studentnum; }; void allstudentb::deleb(char *ch) { int temp=strlen(ch); ofstream f("A.txt"); for(int i=0;i<studentnum;i++) { if(!equal(ch,sptr[i].getnum(),temp)&&!equal(ch,sptr[i].getname(),temp)) sptr[i].displayb(f); } f.close(); } void allstudentb::searchb(char *ch) { int temp=strlen(ch); for(int i=0;i<studentnum;i++) if(equal(ch,sptr[i].getnum(),temp)||equal(ch,sptr[i].getname(),temp)) sptr[i].displayb1(cout); } void allstudentb::searchpart(char *ch) { int temp=strlen(ch); for(int i=0;i<studentnum;i++) if(equal(ch,sptr[i].getnum(),temp)||equal(ch,sptr[i].getname(),temp)) sptr[i].displaypart(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class allstudents { public: allstudents(int n){ num=n; ifstream f("B.txt"); sptr=new students [n]; for(int i=0;i<n;i++) sptr[i].inputs(f); f.close(); } ~allstudents(){delete [] sptr;} void searchs(char *ch); void inputs(); void displays(); void deles(char *ch); void sortxuefen(int n); void sortcomscore(int n); void print();//在屏幕上显示信息 private: students *sptr; int num; }; void allstudents::print() { for(int i=0;i<num;i++) sptr[i].displays1(); } void allstudents::sortxuefen(int n) { students temp; int i,j; if(n==0) { for(i=1;i<num;i++) for(j=0;j<num-i;j++) if(sptr[j].getxuefen()<sptr[j+1].getxuefen())//降序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } else { for(i=1;i<num;i++) for(j=0;jsptr[j+1].getxuefen())//升序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } displays(); } void allstudents::sortcomscore(int n) { int i,j; students temp; if(n==0) { for(i=1;i<num;i++) for(j=0;j<num-i;j++) if(sptr[j].getcomscore()<sptr[j+1].getcomscore())//降序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } else { for(i=1;i<num;i++) for(j=0;jsptr[j+1].getcomscore())//升序 { temp=sptr[j]; sptr[j]=sptr[j+1]; sptr[j+1]=temp; } } displays(); } void allstudents::deles(char *ch) { int temp=strlen(ch); ofstream f("B.txt"); for(int i=0;i<num;i++) { if(!equal(ch,sptr[i].getnum(),temp)) sptr[i].displays(f); } f.close(); } void allstudents::searchs(char *ch) { int count=0; double subxuefen=0; double subscore=0; int temp=strlen(ch); for(int i=0;i<num;i++) { if(equal(ch,sptr[i].getnum(),temp)) { sptr[i].displays(); count++; subxuefen=subxuefen+sptr[i].getxuefen(); subscore=subscore+sptr[i].getcomscore(); } sptr[i].inputsubscore(subscore); sptr[i].inputsubxuefen(subxuefen); } cout<<"共修:"<<count<<"科 实得总学分为:"<<subxuefen<<endl; } void allstudents::inputs() { students *p=new students [num]; for(int i=0;i<num;i++) p[i]=sptr[i]; delete []sptr; num++; sptr =new students [num]; for(int i=0;i<num-1;i++) sptr[i]=p[i]; sptr[num-1].inputs(cin); displays(); } void allstudents::displays() { ofstream f("B.txt"); for(int i=0;i<num;i++) sptr[i].displays(f); f.close(); } int main() { int m,n; m=getline(5);//学生数 n=getline(7); allstudentb stb(m); allstudents sts(n); int *score=new int[m]; int *xuefen=new int[m]; int x; char ch[8]; while(1) { cout<<"\n\n\n" <<"\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n" <<"\t\t※ ※\n" <<"\t\t※ 学生管理系统 ※\n" <<"\t\t※ ※\n" <<"\t\t※ 操作: ※\n" <<"\t\t※ 1--查询学生基本信息 ※\n" <<"\t\t※ 2--查询学生课程信息 ※\n" <<"\t\t※ 3--录入学生课程信息 ※\n" <<"\t\t※ 4--对学生信息进行排序 ※\n" <<"\t\t※ 5--删除学生信息 ※\n" <<"\t\t※ 6--退出 ※\n" <<"\t\t※ ※\n" <<"\t\t※ ※\n" <<"\t\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl; cout<>x; switch(x) { case 1: { if(m!=0) { cout<>ch; cout<<endl; cout<<endl; stb.searchb(ch); } else { cout<<"无学生基本信息可查!请录入学生信息!!"<<endl; } cout<<endl; cout<<endl; }break; case 2: { cout<>ch; stb.searchpart(ch);//查询学号为ch的学生的基本信息 sts.searchs(ch);//查询学号为ch的学生的所有课程信息 }break; case 3: { int temp1,count=0; cout<>temp1; while(count<temp1) { sts.inputs(); count++; } }break; case 4: { cout<<endl; cout<<endl; cout<<"1--按学分排序"<<endl; cout<<"2--按综合成绩排序"<<endl; cout<>temp1; if(temp1==1) { cout<<endl; cout<<endl; cout<<"输入0按降序排列"<<endl; cout<<"输入1安升序排列"<<endl; cout<>temp2; sts.sortxuefen(temp2); sts.print(); } if(temp1==2) { cout<<endl; cout<<endl; cout<<"输入0按降序排列"<<endl; cout<<"输入1安升序排列"<<endl; cout<>temp2; sts.sortcomscore(temp2); sts.print(); } }break; case 5: { char num[8]; cout<>num; stb.deleb(num); sts.deles(num); cout<<"学生信息已删除!"<<endl; }break; case 6:return 0; default:break; } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值