下面是详细代码分享:
#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.txt
4.无任何学生数据->导入学生数据 (具体内容见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 条评论) |