首页 > 作文

C++实现简易选课系统代码分享

更新时间:2023-04-04 09:39:20 阅读: 评论:0

下面是详细代码分享:

#include<bits/stdc++.h>using namespace std;

声明函数部分:

//声明函数部分void buildmainmenu();//声明主菜单函数void lectsytem(int aid,int who);//声明选课系统void mycour(int aid,int who);//声明我的课表void printc(int who);//声明打印课表函数void wrongw();//错误提示函数

前置数据处理:

现有课程数据cour.txt现有学生数据students.txt现有老师数据 teacher.txt按顺序合并为date.txt.

初始状态为:

1.无任何课程->导入现有课程数据 (具体内容见cour类)2.无任何老师数据->导入老师数据 (具体内容见teacher类)3.此时老师并没有设置任何课程 ->需要老师登陆系统进行设置 该步骤需要手动键入数据,参考数据见tcour.txt4.无任何学生数据->导入学生数据 (具体内容见student类)5.暂且令助教来自于学生,则助教的数据和学生数据一致6.对于学生和助教,需通过学号和所设密码进入选课系统
//用于打印边框void printegde(){puts("**********************************************");}//课程类class cour{public: int courid;//编号 string cousrename;//名称 int credit;//学分 bool havet=0;//判断该门课是否被老师设置,没有设置(0)则不能被学生选择 cour(){}//默认构造函数,要记得写 //自定义的含参构造函数 void tcour(int a,string b,int c){courid=a;cousrename=b;credit=c;}};//alllist 存储所有课程的信息cour alllist[200];int c_totalnum;//代表课程的总数class person{public: string name;//姓名 int age;//年龄 //构造 person(){} void tperson(string a,int b){name=a;age=b;}};class teacher:public person{public: int teacherid;//老师的编号 int len;//需要教授的课程数量 int teachcour[10];//所授课程id编号 int now_have=0;//已设置课程数量 teacher(){}//默认构造函数 void t_teacher(string name,int age,int id,int n)//构造 {  name=name;  age=age;  teacherid=id;  len=n; } void teach(){cout<<"i am a teacher,i teach my student\n";} //删除已经设置的课程 void deletec(int cid) {  system("cls");//用于清空cmd窗口  //如果当前没有课程可以删除就直接返回  if(now_have==0)  {   puts("you have t no cour!");   _sleep(500);//用于暂停0.5s   return;  }  //can用于判断是否能取消设置某一门课(即要取消的课是否已被设置)  int can=0;  for(int i=1;i<=now_have;i++)  {   if(teachcour[i]==cid)   {    //可以取消,那么把原本设置好的最后一门课放到要取消的课的位置上    teachcour[i]=teachcour[now_have];    now_have--;    can=1;    break;   }  }  if(can==1) puts("you successfully deleted the cour!");  el puts("there is no such cour!");//不能取消设置的情况  _sleep(800); } void printnowteach()//输出已设置课程 {  system("cls");  puts("       <m y c o u r s e>       \n");  printegde();  //如果没有课  if(now_have==0) puts("you have no cour now!");  //如果有课  for(int i=1;i<=now_have;i++)  {   int x=teachcour[i];//取出课程编号方便下一行书写   printf("*%5d  %-29s %4d *\n",alllist[x].courid,alllist[x].cousrename.c_str(),alllist[x].credit);  }  printegde();putchar('\n');  printf({"you can input the courid to delete:(or -1 to return)"});  int flag=0;scanf("%d",&flag);  if(flag==-1) return;//返回上一级系统  el if(flag>0 && flag<=c_totalnum)//如果输入的数字在限定范围之内  {   deletec(flag);//取消设置   printnowteach();//并重置该页面  }  el//如果输入的数字不在预设范围内,进行报错提示  {   wrongw();   printnowteach();  } } void tcour(int courid) //在已有课程中选择属于自己teach的课程编号 {  system("cls");  //如果已经选满了  if(len-now_have<=0)  {   puts("you have already t all of your cours!");   _sleep(800);return;  }  if(alllist[courid].havet!=0)//如果已经被别人设置了   puts("this cour has been t!");  el  {   puts("you successfully t the cour!");   teachcour[++now_have]=courid;   alllist[courid].havet=1;  }  _sleep(800); }};teacher a_t[200];//所有老师的信息int t_totalnum;class student:public person{public: long long number;//学号 int courcount=0;//已选课程数房地产专业目 int mycour[20];//已选课程的课程编号 int leastnum;//至少选择课程数目 string key;//密码 student(){} //此处age表示入学年份,如2021,2020 void t_student(string name,int age,long long num,int n,string key) {  name=name;  age=age;  number=num;//学号  leastnum=n;  key=key;  memt(mycour,0,sizeof(mycour));//初始化已选课程数组 } void lectcour(int courid) {  system("cls");  //用于判断自己是否已经选过这门课程  bool havechoo = 0;  for(int i=1;i<=courcount;i++)   if(courid==mycour[i])    havechoo=1;  //如果该门课已经被老师设置并且自己没有选过  if(alllist[courid].havet && havechoo==0)  {   puts("you successfully stlect the cour!");   mycour[++courcount]=courid;  }  //老师没有设置课程  el if(alllist[courid].havet==0) puts("there is no such cour!");  //自己已经选过  el if(havechoo==1) puts("this cour you have chon!");  _sleep(800); } void delete(int cid) {  system("cls");  if(courcount==0) return;  int can;  for(int i=1;i<=courcount;i++)  {   if(mycour[i]==cid)   {    mycour[i]=mycour[courcount];    courcount--;    can=1;    break;   }  }  if(can==1) puts("you successfully deleted the cour!");  el puts("there is no such cour!");  _sleep(800); } //判断是否满足学校要求 void judge() {  if(courcount>=leastnum) //比较已选课程和要求课程数量   puts("you can complete the credits of this mester");  el   printf("you need to choo %d more cours\n",leastnum-courcount); }};student a_s[2000];//所有学生的信息int s_totalnum;//学生的总数class teachingassistant:public teacher,public student{public: void teach(){puts("i am a teaching assistant,i help my teacher teach his students");} teachingassistant(){} void lectcour(int courid) {  system("cls");  if(alllist[courid].havet)  {   puts("you successfully stlect the cour!");   mycour[++courcount]=courid;  }  el puts("there is no such cour!");  _sleep(800); } void delete(int cid) {  system("cls");  if(courcount==0) return;  int can;  for(int i=1;i<=courcount;i++)  {   if(mycour[i]==cid)   {    mycour[i]=mycour[courcount];    courcount--;    can=1;    break;   }  }  if(can==1) puts("you successfully deleted the cour!");  el puts("there is no such cour!");  _sleep(800); }};teachingassistant a_ta[2500];void pre_cour(){ //导入所有课程数据 int a,b;string c; freopen("date.txt","r",stdin); scanf("%d",&c_totalnum); for(int i=1;i<=c_totalnum;i++) {  cin>>a>>c>>b;  //输入编号,名称,学分  alllist[i].tcour(a,c,b); }}void pre_teacher(){ //导入所有老师数据 int a,b,c;string d; scanf("%d",&t_totalnum); for(int i=1;i<=t_totalnum;i++) {  cin>>d>>a>>b>>c;  //输入姓名,年龄,编号,应设置课程数量  a_t[i].t_teacher(d,a,b,c); }}void pre_student(){ //导入所有学生数据 int a;long long b;string d,e; scanf("%d",&s_totalnum); for(int i=1;i<=s_totalnum;i++) {  //姓名 入学年份 学号 至少选课数统一为2  cin>>d>>a>>b>>e;  a_s[i].t_student(d,a,b,2,e);  a_ta[i].t_student(d,a,b,2,e); }}void pre()//选课系统前置准备工作{ pre_cour();//导入课程数据 pre_teacher();//导入老师数据 pre_student();//导入学生数据}void wrongw()//报错提示{ system("cls"); puts("you entered the wrong one!"); _sleep(500);}void mycour(int aid,int who){ system("cls"); puts("       <m y c o u r s e>       \n"); printegde(); if(who==0)//学生 {  //没课的情况  if(a_s[aid].cour江苏的省会count==0) puts("you have no cour now!");  //有课的情况  for(int i=1;i<=a_s[aid].courcount;i++)  {   int x=a_s[aid].mycour[i];   printf("*%5d  %-29s %4d *\n",alllist[x].courid,alllist[x].cousrename.c_str(),alllist[x].credit);  }  printegde();putchar('\n');  a_s[aid].judge(); } el {  if(a_ta[aid].courcount==0) puts("you have no cour now!");  for(int i=1;i<=a_ta[aid].courcount;i++)  {   int x=a_ta[aid].mycour[i];   printf("*%5d  %-29s %4d *\n",alllist[x].courid,alllist[x].cousrename.c_str(),alllist[x].credit);  }  printegde();putchar('\n'); } //是否进行退课操作 printf({"you can input the courid to delete:(or -1 to return)"}); int flag=0;scanf("%d",&flag); if(flag==-1) lectsytem(aid,who); el if(flag>0 && flag<=c_totalnum) {  if(who==0) a_s[aid].delete(flag);  el a_ta[aid].delete(flag);  mycour(aid,who); } el {wrongw();mycour(aid,who);}}void printc(int who)//打印所有课程信息{ puts("      <cour information>       \n"); printegde(); puts("*cour id    name        credit  *");  printegde(); if(who==1)//老师和助教   for(int i=1;i<=c_totalnum;i++)   printf("*%5d  %-29s %4d *\n",alllist[i].courid,alllist[i].cousrename.c_str(),alllist[i].credit); el//学生   for(int i=1;i<=c_totalnum;i++)   if(alllist[i].havet)    printf("*%5d  %-29s %4d *\n",alllist[i].courid,alllist[i].cousrename.c_str(),alllist[i].credit); printegde();putchar('\n');}void lectsytem(int aid,int who)//who 0 代表学生 1 代表助教{ system("cls"); //打印所有课程信息 printc(0); //输出学生姓名 .c_str()的作用是将string类型的数据转成char类型,使得它可以用printf输出 printf("student: %s .",a_s[aid].name.c_str()); if(who==0)  a_s[aid].judge();//学生 printf("plea enter the cour id to lect\nyou can input -1 to exit\nyou can input -2 to check mycour and delete cour\nnow enter a number:"); int flag=0;scanf("%d",&flag); if(flag==-1) buildmainmenu();//返回上一级菜单 el if(flag==-2) mycour(aid,who);//查看已选课表 el if(flag>0 &&am金星说p; flag<=c_totalnum)//数据在预设范围内,则选课 {  if(who==0)//学生   a_s[aid].lectcour(flag),lectsytem(aid,who);  el a_ta[aid].lectcour(flag),lectsytem(aid,who);//助教 } el {wrongw();lectsytem(aid,who);}//报错}void studentsystem(int who){ system("cls"); //切换到从控制台输入数据 freopen("con","r",stdin); //接下来为登陆页面 puts("plea enter your student number and password\n"); printegde();putchar('\n'); printf("student number:");long long sn;//输入学号 scanf("%lld",&sn); printf("password:   "); char pas[20],acs[20];scanf("%s",pas);//输入密码 int aid;//在数据库中的序号 //在数据库中找到学号对应的正确密码 for(int i=1;i<=s_totalnum;i++)  if(a_s[i].number==sn){strcpy(acs,a_s[i].key.c_str());aid=i;break;} int times=2;//输入密码的机会 while(strcmp(acs,pas)!=0 && times>0) //看输入的密码与正确密码是否匹配,以及次数是否耗尽 {  puts("wrong password!!!");  printf("you have %d times to enter the correct password\n",times);  times--;scanf("%s",pas); } //次数耗尽推出系统 if(times==0) {  puts("i am sorry you can't enter our system!");wwe世界摔跤娱乐  _sleep(800);exit(0); } if(who==0) lectsytem禁止下国际象棋(aid,who);//学生 el lectsytem(aid,1);//助教}//老师设置课程void tcour(int tid){ system("cls"); printf("welcome : %s\n",a_t[tid].name.c_str()); printf("you need to t %d cours\n\n",a_t[tid].len-a_t[tid].now_have); printc(1); printf("plea enter the cour id to t\nyou can input -1 to exit\nyou can input -2 to check mycour\nnow enter a number:"); int flag=0;scanf("%d",&flag); if(flag==-1) buildmainmenu(); el if(flag==-2) a_t[tid].printnowteach(),tcour(tid);//查看已设置的课程 el if(flag>0 && flag<=c_totalnum)//设置课程  a_t[tid].tcour(flag),tcour(tid); el {wrongw();tcour(tid);}}void teachersystem(){ system("cls"); freopen("con","r",stdin); //切换到从控制台输入数据 puts("     welcome to teacher system!    "); printegde();putchar('\n'); //输入教师编号以进入系统 printf("plea enter your teacher id:"); int tid;scanf("%d",&tid); if(tid>0 && tid<=t_totalnum)  tcour(tid); el{  wrongw();teachersystem(); }}void tasystem(){ //实际上助教系统可以看错和学生是一个系统的 studentsystem(1);}//构建主菜单void buildmainmenu(){ system("cls"); freopen("con","r",stdin); //切换到从控制台输入数据 puts("   welcome to cour lection system!   "); printegde(); puts("*     1.student entrance         *"); puts("*     2.teacher entrance         *"); puts("*     3.teachingassistant        *"); puts("*    -1.exit this system         *"); printegde();putchar('\n'); printf("plea input 1,2,3 or -1 to enter this system:"); int flag=-1;scanf("%d",&flag);//进入子系统 if(flag==1) studentsystem(0); el if(flag==2) teachersystem(); el if(flag==3) tasystem(); el if(flag==-1) exit(0); el {  wrongw();  buildmainmenu(); }}int main()//主函数{  pre();//前置数据导入 buildmainmenu();//构建主菜单 return 0;}
/*date.txt101 media_english 22 literature_english 23 drama_english 24 academic_english 25 cross-cultural_communication 26 public_speaking 27 intermediate_english_speaking 28 intermediate_english_writing 29 basic_russian 210 basic_french 25harry_potter 35 1 2hermione 34 2 3henry_rowen 36 3 1snape 55 4 2dumbledore 46 5 22jack 2021 2021001 123456!tom 2021 2021002 abc123*/

到此这篇关于c++实现简易选课系统代码分享的文章就介绍到这了,更多相关c++实现选课系统内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 09:39:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/3cf2e49d3a89e482471d10738287f28a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++实现简易选课系统代码分享.doc

本文 PDF 下载地址:C++实现简易选课系统代码分享.pdf

标签:课程   数据   学生   老师
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图