鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统
思路比较简单:
1.回滚显示各种提示信息或操作信息
2.链表操作。
代码中有管理员部分功能没有实现,学生和老师的功能基本实现,但有待加固,如果初学者可是试着去完善一下。
还可以将老师,学生的信息输出到文件文本中,本代码中没有实现,但并不是很难。
代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/* 总链表——存放所有信息 */
typedef struct Sum_Node
{/* 学生信息 */char stuNo[20][20];char stuName[20][20];char stuSex[20][20];/* 课程信息 */char CourseNum[20];char CourseName[20];char CourseTeacher[20];struct Sum_Node *next;
}TotalNode;/* 链表管理员——暂时不需要 */
/*typedef struct Node
{char Num[20];char Name[20];char Sex[10];struct Node *next;
}Manager_Node;*/char studentAccount[20];
char studentPassword[20];
char teacherAccount[20];
char teacherPassword[20];
char managerAccount[20];
char managerPassword[20];/* 定义结构体指针 */
TotalNode *pTeacher;
TotalNode *pStudent;/* 函数的声明 */
void checkPerson_Msg(TotalNode *phead,int n);
void CreateTeacherNode(TotalNode *head);/* 学生信息的输出-链表 */
void OutStudentNode(TotalNode *head,char *Account)
{TotalNode *p;int num=0;int i,j;int flag=0;char Account_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');
}/* 学生信息的插入-链表 */
void InsertStudentNode(TotalNode *head,char *Account)
{TotalNode *p;int i;char courseCode[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("$$$$$$选课失败,请重新选择$$$$$$");}/* 删除所选课程 */
void DeleteStudentNode(TotalNode *head,char *Account)
{char coursNo[20]="";    //  课程代码char student[20]="";    //  学生姓名TotalNode *p;int i;int flag=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("删除失败!!!!");}}/* 教师信息的输出-链表 */
void OutTeacherNode(TotalNode *head)
{TotalNode *p;int num=0;int i;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');
}/* 教师信息的插入-链表 */
void InsertTeacherNode(TotalNode *head)
{TotalNode *p;TotalNode *q;int i;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;
}/* 教师信息的插入-链表 */
void CreateTeacherNode(TotalNode *head)
{int i;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;
}/* 删除指定数据 */
void DeleteTeacherNode(TotalNode *phead)
{char coursNo[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;}
}/* 功能显示 */
void display(TotalNode *phead)
{int n;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);        }}
}/* 学生登录后的操作,查询、修改 */
void Student_Mng(TotalNode *phead, char *Account,int n)
{switch(n){case 1:     //  查询OutStudentNode(phead,Account);break;case 2:     //  添加InsertStudentNode(phead,Account);break;case 3:     //  删除DeleteStudentNode(phead,Account);break;case 4: ;   //  返回主页面,上层已经实现,此处不需要考虑break;default:puts("异常!");break;}
}/* 教师登录后的操作,查询、修改 */
void Teacher_Mng(TotalNode *phead, char *Account,int n)
{switch(n){case 1: //  查询学生选课情况OutTeacherNode(phead);break;case 2: //  添加和删除课程信息InsertTeacherNode(phead);break;case 3:     DeleteTeacherNode(phead);break;case 4:break;  //  上层实现其功能default:puts("异常!");break;}
}/* 管理员登录后的操作,查询、修改 */
void Manager_Mng(char *Account, int n)
{switch(n){case 1:break;case 2:break;case 3:break;default:puts("异常!");break;}
}
/* 显示各功能登录后的信息 */
void display_Detailed(TotalNode *phead ,char *Account,int n)
{int in;switch(n){case 1: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;case 2: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;case 3:printf("=========欢迎%s同志=========\n",Account);puts("[1]查询学生所选课程信息");puts("[2]修改选课信息");puts("[3]返回主页面");scanf("%d",&in);Manager_Mng(Account, in);//puts("[4]");break;default:puts("异常!");break;}}/* 验证账号密码 */
void checkAccountandPassword(TotalNode *phead ,char *Account, char *Password,int n)
{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("请输入账号:");}}
}/* 校验学生、教师、管理员的账号 密码 */
void checkPerson_Msg(TotalNode *phead , int n)
{switch(n){case 1: //  学生登录    char studentAccount[20]; char studentPassword[20];  checkAccountandPassword(phead, studentAccount,studentPassword,n);break;case 2: //  教师登录    char teacherAccount[20]; char teacherPassword[20];      checkAccountandPassword(phead, teacherAccount,teacherPassword,n);break;case 3: //  管理员登录  char managerAccount[20]; char managerPassword[20];       checkAccountandPassword(phead, managerAccount,managerPassword,n);break;default:puts("异常!");break;}
}/*  */void main()
{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]返回主页面
【请选择】

基于C语言的学生选课系统相关推荐

  1. c语言添加删除课程的思路,基于C语言实现学生选课系统

    基于C语言实现学生选课系统 发布时间:2020-09-03 11:41:13 来源:脚本之家 阅读:100 作者:xiaocaidayong 鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一 ...

  2. 基于php语言的 选课系统,基于C语言实现学生选课系统

    鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统. 思路比较简单: 1.回滚显示各种提示信息或操作信息 2.链表操作. 代码中有管理员部分功能没有实现,学生和老师的功能基 ...

  3. 基于javaweb+mysql的学生选课系统(java+javaweb+jdbc)

    基于javaweb+mysql的学生选课系统(java+javaweb+jdbc) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse ...

  4. 基于微信小程序学生选课系统(微信小程序毕业设计)

    基于java足球赛会管理系统 基于微信小程序学生选课系统后台是基于java编程语言,mysql数据库,ssm框架,idea开发工具编写,本系统分为学生,教师,管理员三个角色,学生的主要功能是查看课程介 ...

  5. java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...

    摘 要 本系统运用Java面向对象的方法设计而成. 近年来,学生选课系统越来越在高校学生群体中得到普及,其所承担的功能也变得越来越丰富,所起到的作用也变得越来越重要,在被学校学生重视的同时,也意味着它 ...

  6. c语言p1-melepeo,学生选课系统c语言程序代码

    学生选课系统c语言程序代码 (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 #include #includestruct cou ...

  7. c语言-实现学生选课系统

    下载源代码链接: https://download.csdn.net/download/qq_44176343/64109300 1.本文使用C语言写的一个简单项目,学生的选课系统,主要实现对学生和课 ...

  8. 基于Java web的学生选课系统

    一.项目介绍 基于SSM(SpringMVC Spring Mybatis)框架开发,数据库采用Mysql数据库,前端页面采用JSP技术.功能上支持管理员.学生.教师三种角色登录.学生登录系统可以查看 ...

  9. 基于Android网上在线学生选课系统

    老师要求: 1.调研了解学生选课的流程,并做好需求分析: 2.APP模式: 3.设计角色:学生.工作人员等: 4.工作人员管理课程信息.教师信息.学生信息.选课信息等,设置选课时间.选课班级等: 5. ...

最新文章

  1. UML与软件建模 第三次作业
  2. 谷歌DeepMind联合创始人被架空
  3. BT5下用ncrack破解3389
  4. Liunx操作系统的引导过程(系统操作引导过程,模拟MBR,GRUB故障,root密码遗忘解决,优化启动过程 ,运行级别的分类)
  5. 启动和停止一个服务,修改服务的启动类型 Start and Stop Service for windows
  6. Amber Group受邀成为DeFi Alliance成员单位,持续助力DeFi生态发展
  7. ViewPager——PagerTitleStrip和PagerTabStrip
  8. 从代码到上线, 云端Docker化持续交付实践
  9. android java程序中调用shell命令
  10. java 友好变量单词_“友好”的英语单词是什么?
  11. 如何手工还原/附加MSSQL 2000数据库(sqlserver2000版本)
  12. Makefile 自动化变量及其说明
  13. 一种基于优先级轮询调度负载均衡的crossbar结构
  14. 小众播客,音乐平台的新战场?
  15. Android阿拉伯适配rtl
  16. c语言:求正方体的表面积和体积
  17. 银行存款业务 银行软件测试工程师必会
  18. c语言贝塞尔函数J1,贝塞尔函数:_j0、_j1、_jn、_y0、_y1、_yn
  19. DeepFaceLab: 更新记录以及版本说明!
  20. 极简HTML渲染引擎,CodeMirror 代码渲染神器的极简入门实例

热门文章

  1. 【图文】实操更换系统盘
  2. AD软件画电路图笔记
  3. [区块链]DPoS(委托权益证明机制)官方共识机制详解——BTS、EOS
  4. 图灵机的逻辑等价形式——lambda演算简介
  5. 年终总结:2021年最有用的数据清洗 Python 库
  6. 计算机组老师颁奖词,学生表彰颁奖词与学生计算机室管理制度合集.doc
  7. mysql获取汉字首字母拼音,包括复杂字
  8. 等保2.0:这些等保测评要求,你都知道吗?
  9. linux开热点软件,Debian开WI-FI热点
  10. Gitee码云注册和提交代码