C++实现简易选课系统代码怎么写
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,今天就跟大家聊聊有关C++实现简易选课系统代码怎么写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下面是详细代码分享:#includeusin
千家信息网最后更新 2025年01月28日C++实现简易选课系统代码怎么写
今天就跟大家聊聊有关C++实现简易选课系统代码怎么写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
下面是详细代码分享:
#includeusing namespace std;
声明函数部分:
//声明函数部分void BuildMainMenu();//声明主菜单函数void SelectSytem(int AID,int who);//声明选课系统void MyCourse(int AID,int who);//声明我的课表void PrintC(int who);//声明打印课表函数void WrongW();//错误提示函数
前置数据处理:
现有课程数据
course.txt
现有学生数据
students.txt
现有老师数据
teacher.txt
按顺序合并为
date.txt.
初始状态为:
1.无任何课程->导入现有课程数据 (具体内容见
Course
类)2.无任何老师数据->导入老师数据 (具体内容见
teacher
类)3.此时老师并没有设置任何课程
->需要老师登陆系统进行设置
该步骤需要手动键入数据,参考数据见
Setcourse.txt
4.无任何学生数据->导入学生数据 (具体内容见
student
类)5.暂且令助教来自于学生,则助教的数据和学生数据一致
6.对于学生和助教,需通过学号和所设密码进入选课系统
//用于打印边框void PrintEgde(){puts("**********************************************");}//课程类class Course{public: int CourseId;//编号 string cousreName;//名称 int credit;//学分 bool HaveSet=0;//判断该门课是否被老师设置,没有设置(0)则不能被学生选择 Course(){}//默认构造函数,要记得写 //自定义的含参构造函数 void SetCourse(int a,string b,int c){CourseId=a;cousreName=b;credit=c;}};//AllList 存储所有课程的信息Course AllList[200];int C_totalnum;//代表课程的总数class Person{public: string name;//姓名 int age;//年龄 //构造 Person(){} void SetPerson(string a,int b){name=a;age=b;}};class teacher:public Person{public: int teacherId;//老师的编号 int Len;//需要教授的课程数量 int TeachCourse[10];//所授课程ID编号 int now_have=0;//已设置课程数量 teacher(){}//默认构造函数 void Set_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 set no course!"); _sleep(500);//用于暂停0.5s return; } //CAN用于判断是否能取消设置某一门课(即要取消的课是否已被设置) int CAN=0; for(int i=1;i<=now_have;i++) { if(TeachCourse[i]==CID) { //可以取消,那么把原本设置好的最后一门课放到要取消的课的位置上 TeachCourse[i]=TeachCourse[now_have]; now_have--; CAN=1; break; } } if(CAN==1) puts("You successfully deleted the course!"); else puts("There is no such course!");//不能取消设置的情况 _sleep(800); } void PrintNowteach()//输出已设置课程 { system("cls"); puts("\n"); PrintEgde(); //如果没有课 if(now_have==0) puts("You have no course now!"); //如果有课 for(int i=1;i<=now_have;i++) { int x=TeachCourse[i];//取出课程编号方便下一行书写 printf("*%5d %-29s %4d *\n",AllList[x].CourseId,AllList[x].cousreName.c_str(),AllList[x].credit); } PrintEgde();putchar('\n'); printf({"You can input The CourseID to delete:(or -1 to return)"}); int flag=0;scanf("%d",&flag); if(flag==-1) return;//返回上一级系统 else if(flag>0 && flag<=C_totalnum)//如果输入的数字在限定范围之内 { DeleteC(flag);//取消设置 PrintNowteach();//并重置该页面 } else//如果输入的数字不在预设范围内,进行报错提示 { WrongW(); PrintNowteach(); } } void setCourse(int CourseID) //在已有课程中选择属于自己Teach的课程编号 { system("cls"); //如果已经选满了 if(Len-now_have<=0) { puts("You have already set all of your courses!"); _sleep(800);return; } if(AllList[CourseID].HaveSet!=0)//如果已经被别人设置了 puts("This course has been set!"); else { puts("You successfully set the course!"); TeachCourse[++now_have]=CourseID; AllList[CourseID].HaveSet=1; } _sleep(800); }};teacher A_T[200];//所有老师的信息int T_totalnum;class student:public Person{public: long long number;//学号 int courseCount=0;//已选课程数目 int mycourse[20];//已选课程的课程编号 int LeastNum;//至少选择课程数目 string key;//密码 student(){} //此处age表示入学年份,如2021,2020 void Set_student(string Name,int Age,long long Num,int n,string Key) { name=Name; age=Age; number=Num;//学号 LeastNum=n; key=Key; memset(mycourse,0,sizeof(mycourse));//初始化已选课程数组 } void selectCourse(int CourseID) { system("cls"); //用于判断自己是否已经选过这门课程 bool HaveChoose = 0; for(int i=1;i<=courseCount;i++) if(CourseID==mycourse[i]) HaveChoose=1; //如果该门课已经被老师设置并且自己没有选过 if(AllList[CourseID].HaveSet && HaveChoose==0) { puts("You successfully stlect the course!"); mycourse[++courseCount]=CourseID; } //老师没有设置课程 else if(AllList[CourseID].HaveSet==0) puts("There is no such course!"); //自己已经选过 else if(HaveChoose==1) puts("This course you have chosen!"); _sleep(800); } void Delete(int CID) { system("cls"); if(courseCount==0) return; int CAN; for(int i=1;i<=courseCount;i++) { if(mycourse[i]==CID) { mycourse[i]=mycourse[courseCount]; courseCount--; CAN=1; break; } } if(CAN==1) puts("You successfully deleted the course!"); else puts("There is no such course!"); _sleep(800); } //判断是否满足学校要求 void judge() { if(courseCount>=LeastNum) //比较已选课程和要求课程数量 puts("You can complete the credits of this semester"); else printf("You need to choose %d more courses\n",LeastNum-courseCount); }};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 selectCourse(int CourseID) { system("cls"); if(AllList[CourseID].HaveSet) { puts("You successfully stlect the course!"); mycourse[++courseCount]=CourseID; } else puts("There is no such course!"); _sleep(800); } void Delete(int CID) { system("cls"); if(courseCount==0) return; int CAN; for(int i=1;i<=courseCount;i++) { if(mycourse[i]==CID) { mycourse[i]=mycourse[courseCount]; courseCount--; CAN=1; break; } } if(CAN==1) puts("You successfully deleted the course!"); else puts("There is no such course!"); _sleep(800); }};TeachingAssistant A_TA[2500];void Pre_course(){ //导入所有课程数据 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].SetCourse(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].Set_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].Set_student(d,a,b,2,e); A_TA[i].Set_student(d,a,b,2,e); }}void Pre()//选课系统前置准备工作{ Pre_course();//导入课程数据 Pre_teacher();//导入老师数据 Pre_student();//导入学生数据}void WrongW()//报错提示{ system("cls"); puts("You entered the wrong one!"); _sleep(500);}void MyCourse(int AID,int who){ system("cls"); puts(" \n"); PrintEgde(); if(who==0)//学生 { //没课的情况 if(A_S[AID].courseCount==0) puts("You have no course now!"); //有课的情况 for(int i=1;i<=A_S[AID].courseCount;i++) { int x=A_S[AID].mycourse[i]; printf("*%5d %-29s %4d *\n",AllList[x].CourseId,AllList[x].cousreName.c_str(),AllList[x].credit); } PrintEgde();putchar('\n'); A_S[AID].judge(); } else { if(A_TA[AID].courseCount==0) puts("You have no course now!"); for(int i=1;i<=A_TA[AID].courseCount;i++) { int x=A_TA[AID].mycourse[i]; printf("*%5d %-29s %4d *\n",AllList[x].CourseId,AllList[x].cousreName.c_str(),AllList[x].credit); } PrintEgde();putchar('\n'); } //是否进行退课操作 printf({"You can input The CourseID to delete:(or -1 to return)"}); int flag=0;scanf("%d",&flag); if(flag==-1) SelectSytem(AID,who); else if(flag>0 && flag<=C_totalnum) { if(who==0) A_S[AID].Delete(flag); else A_TA[AID].Delete(flag); MyCourse(AID,who); } else {WrongW();MyCourse(AID,who);}}void PrintC(int who)//打印所有课程信息{ puts(" \n"); PrintEgde(); puts("*Course Id Name Credit *"); PrintEgde(); if(who==1)//老师和助教 for(int i=1;i<=C_totalnum;i++) printf("*%5d %-29s %4d *\n",AllList[i].CourseId,AllList[i].cousreName.c_str(),AllList[i].credit); else//学生 for(int i=1;i<=C_totalnum;i++) if(AllList[i].HaveSet) printf("*%5d %-29s %4d *\n",AllList[i].CourseId,AllList[i].cousreName.c_str(),AllList[i].credit); PrintEgde();putchar('\n');}void SelectSytem(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("Please enter the Course Id to select\nYou can input -1 to exit\nYou can input -2 to check Mycourse and delete course\nNow enter a number:"); int flag=0;scanf("%d",&flag); if(flag==-1) BuildMainMenu();//返回上一级菜单 else if(flag==-2) MyCourse(AID,who);//查看已选课表 else if(flag>0 && flag<=C_totalnum)//数据在预设范围内,则选课 { if(who==0)//学生 A_S[AID].selectCourse(flag),SelectSytem(AID,who); else A_TA[AID].selectCourse(flag),SelectSytem(AID,who);//助教 } else {WrongW();SelectSytem(AID,who);}//报错}void StudentSystem(int who){ system("cls"); //切换到从控制台输入数据 freopen("CON","r",stdin); //接下来为登陆页面 puts("Please 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!"); _sleep(800);exit(0); } if(who==0) SelectSytem(AID,who);//学生 else SelectSytem(AID,1);//助教}//老师设置课程void Setcourse(int TID){ system("cls"); printf("Welcome : %s\n",A_T[TID].name.c_str()); printf("You need to set %d courses\n\n",A_T[TID].Len-A_T[TID].now_have); PrintC(1); printf("Please enter the Course Id to set\nYou can input -1 to exit\nYou can input -2 to check Mycourse\nNow enter a number:"); int flag=0;scanf("%d",&flag); if(flag==-1) BuildMainMenu(); else if(flag==-2) A_T[TID].PrintNowteach(),Setcourse(TID);//查看已设置的课程 else if(flag>0 && flag<=C_totalnum)//设置课程 A_T[TID].setCourse(flag),Setcourse(TID); else {WrongW();Setcourse(TID);}}void TeacherSystem(){ system("cls"); freopen("CON","r",stdin); //切换到从控制台输入数据 puts(" Welcome to Teacher system! "); PrintEgde();putchar('\n'); //输入教师编号以进入系统 printf("Please enter your Teacher Id:"); int TID;scanf("%d",&TID); if(TID>0 && TID<=T_totalnum) Setcourse(TID); else{ WrongW();TeacherSystem(); }}void TASystem(){ //实际上助教系统可以看错和学生是一个系统的 StudentSystem(1);}//构建主菜单void BuildMainMenu(){ system("cls"); freopen("CON","r",stdin); //切换到从控制台输入数据 puts(" Welcome to course selection system! "); PrintEgde(); puts("* 1.Student entrance *"); puts("* 2.Teacher entrance *"); puts("* 3.TeachingAssistant *"); puts("* -1.Exit this system *"); PrintEgde();putchar('\n'); printf("Please input 1,2,3 or -1 to enter this system:"); int flag=-1;scanf("%d",&flag);//进入子系统 if(flag==1) StudentSystem(0); else if(flag==2) TeacherSystem(); else if(flag==3) TASystem(); else if(flag==-1) exit(0); else { WrongW(); BuildMainMenu(); }}int main()//主函数{ Pre();//前置数据导入 BuildMainMenu();//构建主菜单 return 0;}
/*date.txt10 1 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++
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎样才算违反国家网络安全法
网络安全A类国家
四川语音网络技术服务资费
浙江北斗时间服务器配置
创建 das 管理服务器
征程网络技术有限公司
北京字跳网络技术有限公司和抖音
数据库安装后无法打开
连接本地数据库所用函数是
个体户经营 软件开发
服务器怎么改网络连接
数据库物理结构和存储方式描述
策略服务器禁用电脑上不了网
数据库设计过程中最关键的步骤
越云网络技术有限公司
网络技术服务费包括哪些
苏州戴尔最新服务器价格
湖北宜昌市dns服务器云主机
免费云服务器价格表
数据库取消归档
基金公司网络安全维护顾问
虚拟服务器如何建立
网络安全宣传展板内容
os修改服务器地址是啥意思
沂源酒店hr软件开发公司
hp 服务器 虚拟化
短号服务器错误
和信科技互联网排名
福建省中职网络技术
网赚服务器