基于C语言实现学生选课系统
鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统。
思路比较简单:
1.回滚显示各种提示信息或操作信息
2.链表操作。
代码中有管理员部分功能没有实现,学生和老师的功能基本实现,但有待加固,如果初学者可是试着去完善一下。
还可以将老师,学生的信息输出到文件文本中,本代码中没有实现,但并不是很难。
代码如下:
#include#include #include /*总链表——存放所有信息*/ typedefstructSum_Node { /*学生信息*/ charstuNo[20][20]; charstuName[20][20]; charstuSex[20][20]; /*课程信息*/ charCourseNum[20]; charCourseName[20]; charCourseTeacher[20]; structSum_Node*next; }TotalNode; /*链表管理员——暂时不需要*/ /*typedefstructNode { charNum[20]; charName[20]; charSex[10]; structNode*next; }Manager_Node;*/ charstudentAccount[20]; charstudentPassword[20]; charteacherAccount[20]; charteacherPassword[20]; charmanagerAccount[20]; charmanagerPassword[20]; /*定义结构体指针*/ TotalNode*pTeacher; TotalNode*pStudent; /*函数的声明*/ voidcheckPerson_Msg(TotalNode*phead,intn); voidCreateTeacherNode(TotalNode*head); /*学生信息的输出-链表*/ voidOutStudentNode(TotalNode*head,char*Account) { TotalNode*p; intnum=0; inti,j; intflag=0; charAccount_random[20]=""; pStudent=pTeacher;//学生和老师用的链表是同一个 p=pStudent; puts("******所选课程信息******"); puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); if(pStudent==NULL) { puts("没有数据!"); puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); return; } printf("请输入所要查询人的姓名:"); gets(Account_random);//获取所要查询的学生姓名 if(0==Account_random[0]) { gets(Account_random); } while(p!=NULL) { for(j=0;j<20;j++) { if(0==strcmp(p->stuName[j],Account_random)) { printf("课程代码:%s\t",p->CourseNum); printf("课程名称:%s\t",p->CourseName); printf("课程老师:%s\t",p->CourseTeacher); for(i=0;i<20;i++) { if(p->stuNo[i][0]!='\0') { num++; } } printf("选课学生:%d\t",num); num=0;//清0操作 putchar('\n'); flag=1; } } p=p->next; } if(0==flag) { puts("没有该学生选课信息!!!!"); } puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); putchar('\n'); } /*学生信息的插入-链表*/ voidInsertStudentNode(TotalNode*head,char*Account) { TotalNode*p; inti; charcourseCode[20]=""; pStudent=pTeacher;//学生和老师用的链表是同一个,都是链表头 p=pStudent; if(p==NULL) { puts("等待教师录入选课信息,请下次再进行选择!!"); return; } printf("【请输入正确的课程代码】"); gets(courseCode); if(0==courseCode[0]) { gets(courseCode); } while(p!=NULL) { if(0==strcmp(p->CourseNum,courseCode)) { for(i=0;i<20;i++) { if(p->stuNo[i][0]=='\0') { printf("请输入学号:"); gets(p->stuNo[i]); printf("请输入姓名:"); gets(p->stuName[i]); printf("请输入性别:"); gets(p->stuSex[i]); puts("选课成功!!!!"); return; } } } p=p->next; } puts("$$$$$$选课失败,请重新选择$$$$$$"); } /*删除所选课程*/ voidDeleteStudentNode(TotalNode*head,char*Account) { charcoursNo[20]="";//课程代码 charstudent[20]="";//学生姓名 TotalNode*p; inti; intflag=0; pStudent=pTeacher;//学生和老师用的链表是同一个,都是链表头 p=pStudent; if(pStudent==NULL) { puts("没选该课程,删除失败!!!!"); return; } printf("【输入学生姓名】"); gets(student); if(0==student[0]) { gets(student); } printf("【请输入删除的课程代码】"); gets(coursNo); if(0==coursNo[0]) { gets(coursNo); } while(p!=NULL) { if(0==strcmp(p->CourseNum,coursNo))//查询所要删除的课程代码 { for(i=0;i<20;i++) { if(0==strcmp(p->stuName[i],student)) { /*初始化清0操作*/ p->stuNo[i][0]='\0'; p->stuName[i][0]='\0'; p->stuSex[i][0]='\0'; puts("删除成功!!!!"); flag=1;//删除标志位 } } } p=p->next; } if(0==flag)//如果删除成功标志位置1 { puts("删除失败!!!!"); } } /*教师信息的输出-链表*/ voidOutTeacherNode(TotalNode*head) { TotalNode*p; intnum=0; inti; p=pTeacher; puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); if(pTeacher==NULL) { puts("没有数据!"); puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); return; } while(p!=NULL) { printf("课程代码:%s\t",p->CourseNum); printf("课程名称:%s\t",p->CourseName); printf("课程老师:%s\t",p->CourseTeacher); for(i=0;i<20;i++) { if(p->stuNo[i][0]!='\0') { num++; } } printf("选课学生:%d\t",num); num=0;//清0操作 putchar('\n'); p=p->next; } puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); putchar('\n'); } /*教师信息的插入-链表*/ voidInsertTeacherNode(TotalNode*head) { TotalNode*p; TotalNode*q; inti; p=pTeacher;//教师链表的头 if(pTeacher==NULL) { CreateTeacherNode(head); puts("添加成功!"); return; } while(p!=NULL) { if(p->next==NULL) { q=(TotalNode*)malloc(sizeof(TotalNode)); p->next=q; q->next=NULL; for(i=0;i<20;i++) { q->stuNo[i][0]='\0'; } printf("请输入课程代码:"); gets(q->CourseNum); if(0==*q->CourseNum) { gets(q->CourseNum); } printf("请输入课程名称:"); gets(q->CourseName); printf("请输入课程教师:"); gets(q->CourseTeacher); puts("添加成功!"); break; } p=p->next; } //pTeacher=head; } /*教师信息的插入-链表*/ voidCreateTeacherNode(TotalNode*head) { inti; pTeacher=(TotalNode*)malloc(sizeof(TotalNode)); pTeacher->next=NULL; for(i=0;i<20;i++) { pTeacher->stuNo[i][0]='\0'; } printf("请输入课程代码:"); gets(pTeacher->CourseNum); if(0==*pTeacher->CourseNum) { gets(pTeacher->CourseNum); } printf("请输入课程名称:"); gets(pTeacher->CourseName); printf("请输入课程教师:"); gets(pTeacher->CourseTeacher); //pTeacher=head; } /*删除指定数据*/ voidDeleteTeacherNode(TotalNode*phead) { charcoursNo[20]="";//课程代码 TotalNode*p; TotalNode*s; p=pTeacher;//教师链表的头 s=pTeacher; if(NULL==pTeacher) { puts("没有课程信息!!!!"); return; } printf("【请输入删除的课程代码】"); gets(coursNo); if(0==coursNo[0]) { gets(coursNo); } if(0==strcmp(p->CourseNum,coursNo)) { pTeacher=p->next; puts("删除成功!!"); return; } while(p!=NULL) { if(0==strcmp(p->CourseNum,coursNo)) { s->next=p->next; puts("删除成功!!"); return; } s=p; p=p->next; } } /*功能显示*/ voiddisplay(TotalNode*phead) { intn; while(1) { puts("=========请选择登录页面========="); puts("[1]学生登录"); puts("[2]教师登录"); puts("[3]管理员登录"); puts("[4]退出系统"); while(1)//循环检查输入的值是否正确 { printf("【请选择】"); scanf("%d",&n); if(n>4||n<1) { puts("输入有误,请选择正确的选项:"); continue;//输入不正确,重新输入 } else { break;//输入正确,退出循环 } } if(1==n)//学生登录系统 { puts("=========欢迎登录学生系统========="); printf("请输入账号和密码\n"); checkPerson_Msg(phead,1); } if(2==n)//老师登录系统 { puts("=========欢迎登录教师系统========="); printf("请输入账号和密码\n"); checkPerson_Msg(phead,2); } if(3==n)//管理员登录系统 { puts("=========欢迎登录管理员系统========="); printf("请输入账号和密码\n"); checkPerson_Msg(phead,3); } if(4==n)//退出系统 { puts("@@@@@@@@@欢迎下次登录,再见!!!@@@@@@@@@"); exit(0); } } } /*学生登录后的操作,查询、修改*/ voidStudent_Mng(TotalNode*phead,char*Account,intn) { switch(n) { case1://查询 OutStudentNode(phead,Account); break; case2://添加 InsertStudentNode(phead,Account); break; case3://删除 DeleteStudentNode(phead,Account); break; case4:;//返回主页面,上层已经实现,此处不需要考虑 break; default: puts("异常!"); break; } } /*教师登录后的操作,查询、修改*/ voidTeacher_Mng(TotalNode*phead,char*Account,intn) { switch(n) { case1://查询学生选课情况 OutTeacherNode(phead); break; case2://添加和删除课程信息 InsertTeacherNode(phead); break; case3: DeleteTeacherNode(phead); break; case4: break;//上层实现其功能 default: puts("异常!"); break; } } /*管理员登录后的操作,查询、修改*/ voidManager_Mng(char*Account,intn) { switch(n) { case1: break; case2: break; case3: break; default: puts("异常!"); break; } } /*显示各功能登录后的信息*/ voiddisplay_Detailed(TotalNode*phead,char*Account,intn) { intin; switch(n) { case1: while(1) { printf("=========欢迎%s同学=========\n",Account); puts("[1]查询已选课程");//查询自己所选的所有课程包括:课程代码、课程名称、任课老师 puts("[2]添加课程");//增加所选课程 puts("[3]删除所选课程");//删除所选课程 puts("[4]返回主页面"); printf("【请选择】"); scanf("%d",&in); if(4==in) { return;//返回上层登录页面 } Student_Mng(pStudent,Account,in); //puts("[4]"); } break; case2: while(1) { printf("=========欢迎%s老师=========\n",Account); puts("[1]查询学生选课信息");// puts("[2]添加老师课程信息");// puts("[3]删除老师课程信息");// puts("[4]返回主页面"); printf("【请选择】"); scanf("%d",&in); if(4==in) { return;//返回上层登录页面 } Teacher_Mng(pTeacher,Account,in); } //puts("[4]"); break; case3: printf("=========欢迎%s同志=========\n",Account); puts("[1]查询学生所选课程信息"); puts("[2]修改选课信息"); puts("[3]返回主页面"); scanf("%d",&in); Manager_Mng(Account,in); //puts("[4]"); break; default: puts("异常!"); break; } } /*验证账号密码*/ voidcheckAccountandPassword(TotalNode*phead,char*Account,char*Password,intn) { while(1) { gets(Account); /**/ if(0==strcmp(Account,"wantin")) { while(1) { printf("请输入密码:"); gets(Password); if(0==strcmp(Password,"123456")) { display_Detailed(phead,Account,n); return; } } } else { printf("请输入账号:"); } } } /*校验学生、教师、管理员的账号密码*/ voidcheckPerson_Msg(TotalNode*phead,intn) { switch(n) { case1://学生登录charstudentAccount[20];charstudentPassword[20]; checkAccountandPassword(phead,studentAccount,studentPassword,n); break; case2://教师登录charteacherAccount[20];charteacherPassword[20]; checkAccountandPassword(phead,teacherAccount,teacherPassword,n); break; case3://管理员登录charmanagerAccount[20];charmanagerPassword[20]; checkAccountandPassword(phead,managerAccount,managerPassword,n); break; default: puts("异常!"); break; } } /**/ voidmain() { TotalNode*phead=NULL; display(phead); }
大家可以根据下面的操作来帮助读懂这段代码。
操作结果如下:
=========请选择登录页面=========
[1]学生登录
[2]教师登录
[3]管理员登录
[4]退出系统
【请选择】2
=========欢迎登录教师系统=========
请输入账号和密码
请输入账号:wantin
请输入密码:123456
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】2
请输入课程代码:123
请输入课程名称:C语言
请输入课程教师:王艇
添加成功!
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】2
请输入课程代码:456
请输入课程名称:Java
请输入课程教师:王艇
添加成功!
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】2
请输入课程代码:789
请输入课程名称:PHP
请输入课程教师:王艇
添加成功!
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:0
课程代码:456 课程名称:Java 课程老师:王艇 选课学生:0
课程代码:789 课程名称:PHP 课程老师:王艇 选课学生:0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】4
=========请选择登录页面=========
[1]学生登录
[2]教师登录
[3]管理员登录
[4]退出系统
【请选择】1
=========欢迎登录学生系统=========
请输入账号和密码
请输入账号:wantin
请输入密码:123456
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】1
******所选课程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
请输入所要查询人的姓名:王艇
没有该学生选课信息!!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】3
【输入学生姓名】王艇
【请输入删除的课程代码】123
删除失败!!!!
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】2
【请输入正确的课程代码】123
请输入学号:110
请输入姓名:王艇
请输入性别:男
选课成功!!!!
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】1
******所选课程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
请输入所要查询人的姓名:王艇
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】4
=========请选择登录页面=========
[1]学生登录
[2]教师登录
[3]管理员登录
[4]退出系统
【请选择】2
=========欢迎登录教师系统=========
请输入账号和密码
请输入账号:wantin
请输入密码:123456
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:1
课程代码:456 课程名称:Java 课程老师:王艇 选课学生:0
课程代码:789 课程名称:PHP 课程老师:王艇 选课学生:0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】4
=========请选择登录页面=========
[1]学生登录
[2]教师登录
[3]管理员登录
[4]退出系统
【请选择】1
=========欢迎登录学生系统=========
请输入账号和密码
请输入账号:wantin
请输入密码:123456
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】2
【请输入正确的课程代码】456
请输入学号:110
请输入姓名:王艇
请输入性别:男
选课成功!!!!
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】1
******所选课程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
请输入所要查询人的姓名:王艇
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:1
课程代码:456 课程名称:Java 课程老师:王艇 选课学生:1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】2
【请输入正确的课程代码】123
请输入学号:112
请输入姓名:王五
请输入性别:男
选课成功!!!!
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】1
******所选课程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
请输入所要查询人的姓名:王艇
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:2
课程代码:456 课程名称:Java 课程老师:王艇 选课学生:1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】1
******所选课程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
请输入所要查询人的姓名:王五
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin同学=========
[1]查询已选课程
[2]添加课程
[3]删除所选课程
[4]返回主页面
【请选择】4
=========请选择登录页面=========
[1]学生登录
[2]教师登录
[3]管理员登录
[4]退出系统
【请选择】2
=========欢迎登录教师系统=========
请输入账号和密码
请输入账号:wantin
请输入密码:123456
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
课程代码:123 课程名称:C语言 课程老师:王艇 选课学生:2
课程代码:456 课程名称:Java 课程老师:王艇 选课学生:1
课程代码:789 课程名称:PHP 课程老师:王艇 选课学生:0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=========欢迎wantin老师=========
[1]查询学生选课信息
[2]添加老师课程信息
[3]删除老师课程信息
[4]返回主页面
【请选择】
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。