#include<stdio.h>
#include<stdlib.h>
typedef struct Cou_num //课程编号以及成绩
{
int number;
int achieve;
}Cou_num;
typedef struct Student
{
bool sex;//1代表男生,0代表女生
signed int grade;//年级,比如2017年入学的就是2017级。
char name[20];
long Stu_number;
Cou_num nelenum[100];//已选课程编号以及成绩,-1代表此课程还未结课。number = 0代表未选课。
int nelen;//已选课程总数
Student * pnext;
}Student;
typedef struct Couse//课程信息结构体
{
int num1;
char name1[20];
int credit;
int class_hours;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
Couse * next;
}Couse;
struct Couse *cou_headnode = (Couse *)calloc(1,sizeof(Couse));
struct Student *stu_headnode = (Student *)calloc(1,sizeof(Student));
int couse_count=0;//课程总数
int stu_count=0;//学生总数
void Keyboardc()//录入课程子函数(从键盘录入)
{
Couse *p = (Couse *)malloc(sizeof(Couse));
if(p == NULL)
{
printf("Keyboardc is error——malloc");
}
printf("\n课程编号\t课程名称\t学分\t学时\t课程人数上限\n");
scanf("%d%s%d%d%d",&p->num1,&p->name1,&p->credit,&p->class_hours,&p->Melepeo);
p->nelepeo = 0;
p->next = cou_headnode->next;
cou_headnode->next = p;
couse_count++;
}
void delc(int num)//课程管理子函数(删除课程)
{
Couse *pago = cou_headnode;
Couse *pcur = pago->next;
if(!pcur)
{
printf("\n没有课程,无法删除!\n");
return;
}
while(pcur)
{
if(pcur->num1 == num)
{
pago->next = pcur->next;
free(pcur);
pcur = NULL;
printf("已删除该编号课程!\n");
couse_count--;
return;
}
pago = pcur;
pcur= pago->next;
}
printf("课程未找到\n");
}
void InputC()
{
int i;
start:
printf("\t\t\t录入课程信息\n");
printf("\n\n1.从键盘录入\n");
printf("\n2.返回主菜单\n");
scanf("%d",&i);
if(i<1||i>2)
{
printf("输入错误,请重新输入:\n");
goto start;
}
switch(i)
{
case(1):Keyboardc();break;
case(2):break;
}
}
void managementc()//课程管理主函数
{
int i = 0;
start:
printf("\t\t\t课程管理\n");
printf("1.新增课程\n");
printf("2.删除课程\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
if(i<1||i>3)
{
printf("输入错误,请重新输入:\n");
goto start;
}
switch(i)
{
case(1):Keyboardc();break;
case(2):
{
int num;
printf("请输入要删除课程的编号:\n");
scanf("%d",&num);
delc(num);
break;
}
case(3):break;
}
}
void Keyboards()
{
Student *p = (Student *)calloc(1,sizeof(Student));
if(p == NULL)
{
printf("Keyboards is error——malloc");
}
printf("\n姓名\t性别\t学号\t年级\n");
scanf("%s%d%d%d",&p->name,&p->sex,&p->Stu_number,&p->grade);
p->pnext = stu_headnode ->pnext;
stu_headnode ->pnext = p;
stu_count++;
}
void InputS()
{
int i = 0;
start:
printf("\t\t\t录入学生信息\n");
printf("\n\n1.从键盘录入\n");
printf("\n2.返回主菜单\n");
scanf("%d",&i);
if(i<1||i>2)
{
printf("输入错误,请重新输入:\n");
goto start;
}
switch(i)
{
case(1):Keyboards();break;
case(2):break;
}
}
void elect(Student * s)//选课
{
Couse * c;
int num;
int i = 0;
printf("请输入要选课的编号:\n");
scanf("%d",&num);
for(i = 0;s->nelenum[i].number != 0;i++);
s->nelenum[i].number = num;
s->nelenum[i].achieve = -1;
c = cou_headnode -> next;
while(c->num1 != num) c = c->next;
(c->nelepeo)++;
}
void dels(int num)
{
Student *pago = stu_headnode;
Student *pcur = pago->pnext;
if(!pcur)
{
printf("\n没有任何学生信息,无法删除!\n");
return;
}
while(pcur)
{
if(pcur->Stu_number == num)
{
pago->pnext = pcur->pnext;
free(pcur);
pcur = NULL;
printf("已删除该学生信息!\n");
stu_count--;
return;
}
pago = pcur;
pcur= pago->pnext;
}
printf("该学生信息未找到\n");
}
void managements()//学生管理主函数
{
int i = 0;
start:
printf("\t\t\t学生信息管理\n");
printf("1.新增学生信息\n");
printf("2.删除学生信息\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
if(i<1||i>3)
{
printf("输入错误,请重新输入:\n");
goto start;
}
switch(i)
{
case(1):Keyboards();break;
case(2):
{
int num;
printf("请输入要删除课程的编号:\n");
scanf("%d",&num);
dels(num);
break;
}
case(3):break;
}
}
void cheak()
{
char e;
Couse * c;
Student * s;
int num;
int i = 0;
int j = 0;
bool IScheak = 0;
printf("请输入你的学号:");
scanf("%d",&num);
s = stu_headnode;
while(s->Stu_number != num && s->pnext != NULL) s = s->pnext;
if(s->Stu_number != num)
{
printf("不存在你的信息,请进入主菜单录入你的信息!\n");
goto end;
}
c = cou_headnode->next;
printf("你的可选课程编号:\n");
while(c != NULL)
{
for(i = 0,IScheak = 0;s->nelenum[i].number != 0;i++)
{
if(c->num1 == s->nelenum[i].number)
{
IScheak = 1;
break;
}
}
if(IScheak == 0 && (c->nelepeo != c->Melepeo))
{
printf("课程号\t,课程名\t\n");
printf("%d\t,%s\t\n",c->num1,c->name1);
j++;
}
c = c->next;
}
if(j==0)
{
printf("你已选完所有课程,无法再多选!\n");
goto end;
}
printf("选课(y/n)?\n");
getchar();
e = getchar();
while(e == 'y' || e == 'Y')
{
elect(s);
printf("继续选课(y/n)?\n");
getchar();
e = getchar();
(s->nelen)++;
}
end:;
}
void back(Student * s)//退课
{
start:
Couse * c;
int num,i,j = 0;
bool tmp = 0;
printf("请输入你要退掉的课程编号:\n");
scanf("%d",&num);
c = cou_headnode;
for(i = 0;s->nelenum[i].number != 0;i++)
{
if(s->nelenum[i].number == num)
{
tmp = 1;
break;
}
}
if(!tmp)
{
printf("输入课程号有误,请重新输入:\n");
goto start;
}
while(c->num1 != num)c = c->next;
(c->nelepeo)--;
for(i = 0;s->nelenum[i].number != num;i++)
for(j = i;s->nelenum[j].number != 0;j++)
{
s->nelenum[j].number = s->nelenum[j+1].number;
s->nelenum[j].achieve = s->nelenum[j+1].achieve;
}
s->nelenum[j-1].number = 0;
s->nelenum[j-1].achieve = 0;
printf("退课成功!\n");
}
void hcheak()
{
char e;
Couse * c;
Student * s;
int num,i,f=0;
printf("请输入学号:\n");
scanf("%d",&num);
s = stu_headnode;
while(s->Stu_number != num && s->pnext != NULL) s = s->pnext;
if(s->Stu_number != num)
{
printf("不存在你的信息,请进入主菜单录入你的信息!\n");
goto end;
}
if(s->nelenum[0].number==0)
{
printf("你还没选课!\n");
goto end;
}
printf("已选课程编号:\n");
for(i=0;s->nelenum[i].number!=0;i++)
{
printf("%d\n",s->nelenum[i].number);
c=cou_headnode->next;
while(c->num1 != s->nelenum[i].number) c = c->next;
f += c->credit;
}
printf("所选课程总学分:%d\n",f);
printf("是否进行退课(y/n)?");
getchar();
e=getchar();
while(e == 'y' || e == 'Y')
{
back(s);
printf("继续选课(y/n)?\n");
getchar();
e = getchar();
(s->nelen)--;
}
end:;
}
void elective()//学生选课主函数
{
int i;
printf("\t\t\t学生选课\n");
printf("1.查询可选课程\n");
printf("2.管理已选课程\n");
printf("3.返回主菜单\n");
printf("请输入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void Show_listc()
{
Couse * p;
p = cou_headnode->next;
printf("课程编号 课程名称 学分 学时 课程已选人数 课程人数上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%6d%8d%12d\n",p->num1,p->name1,p->credit,p->class_hours,p->nelepeo,p->Melepeo);
p=p->next;
}
}
void Show_lists()
{
Student * p;
p=stu_headnode->pnext;
printf("学生学号 学生姓名 已选课程数量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p->Stu_number,p->name,p->nelen);
p=p->pnext;
}
}
void into()
{
int i;
printf("1.存储课程信息\n");
printf("2.存储学生信息\n");
printf("3.返回主菜单\n");
printf("请输入(1~3)\n");
scanf("%d",&i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函数
{
int i;
printf("\t\t系统信息查看及存储\n");
printf("1.查看课程信息\n");
printf("2.查看学生信息\n");
printf("3.存储信息\n");
printf("4.返回主菜单\n");
printf("请输入(1~4):\n");
start:
scanf("%d",&i);
if(i<1||i>7)
{
printf("输入错误,请重新输入:\n");
goto start;
}
switch(i)
{
case(1):Show_listc();break;
case(2):Show_lists();break;
case(3):into();break;
case(4):break;
}
}
int main()
{
int i = 0;
start:
printf("\n\t\t\t学生选课系统\n");
printf("菜单:\n");
printf("1.录入课程信息\n");
printf("2.课程管理\n");
printf("3.录入学生信息\n");
printf("4.学生信息管理\n");
printf("5.学生选课\n");
printf("6.信息查看以及存储\n");
printf("7.退出系统\n");
printf("\n请输入菜单选项(1~7):\n");
scanf("%d",&i);
if(i<1||i>7)
{
printf("输入错误,请重新输入:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
InputC();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
InputS();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
printf("感谢使用本系统!\n\n再见!\n");
}
}
}
相关推荐
Java 学生选课系统 源代码
需求 Java实现学生系统(实际上是学生、教师管理系统+学生选课系统两部分构成) 需求如下: 程序设计为让上述要求展开。 源代码 由于代码量较大,所有代码以百度网盘链接形式给出(永久有效)。 百度网盘链接 提取码:0713 解压后里面的内容应该是这样的: 它包含了所有部分的代码。这里我使用eclipse编程,他们的组织形式是: 按照这个形式组织好,就可以运行啦,14+的jdk版本没有任何报错。 我的jdk版本: 效果 简单(真的很简单)展示下运行效果。 好了,我很懒所以就贴这些。有
微信小程序|SSM微信小程序的学生选课系统
(1)管理员功能需求 管理员登陆后,主要模块包括首页、个人中心、学生管理、教师管理、课程类型管理、课程信息管理、选课信息管理、取消选课管理、管理员管理、系统管理等功能 (2)教师功能需求 教师登陆后,可以实现首页、个人中心、课程信息管理、选课信息管理、取消选课管理等功能 (3)学生功能需求 学生登陆后进入小程序首页,可以实现选课信息、取消选课、我的收藏管理等功能。
学生选课系统PHP
PHP+MYSQL 一、创建数据库及数据表 创建数据库xk,创建选课表、班级表、课程表、学生表、教师表等等。 选课表空白,用于录入学生的选课信息;课程表有课程号、课程名、任教教师、上课时间和学分;学生表有学生学号、姓名、所在班级以及学生登录选课系统的密码;教师表有教师教号、教师的姓名和教师登录选课系统的密码。 新建connnect.php文件连接数据库 二、实现注册功能 新建register.php文件,编写静态注册页面 三、实现...
毕业设计-----------学生选课管理系统的设计
题目要求: 建立一个学生选课系统, 编写应用程序完成系统开发。 建立基本表: 学生(学号,姓名,性别,年龄,系别) 课程(课程号,课程名,开课系,任课教师) 学习(学号,课程号,成绩) 要求有以下子系统 (1)基本信息查询子系统 要求:能够显示出学生表、课程表、带参数学生详细信息和选课情况 (2)学生、课程信息维护子系统 要求:能够维护学生表和课程表 (3)学生选课子系统 要求:考虑参照完整性以及用户自定义完整性,实现学生选课功能 (4)系统维护 需求分析 根据描述,这个系统...
java swing开发学生选课系统 选课系统 java窗体 javaGui gui java学生选课系统
java swing开发学生选课系统 数据库使用MySQL 该系统主要包括学生和管理员两个用户角色 以学生角色登陆进去 学生可以查看自己的选修课情况 修改自己的个人信息 以管理员的角色登陆进去,管理员可以查看选修课的选修情况 增加选修课,查看学生的个人情况 数据库创建代码: /* Navicat Premium Data Transfer ...
学生选课系统练手小项目
学生选课系统练手小项目 文件目录: 学生选课系统(一级目录) ——bin(二级目录) ——start.py ——conf(二级目录) ——settings.py ——core(二级目录) ——src.py ——db(二级目录) ——Course.txt ——Student.txt ——user_info.txt ——lib(...
基于java学生选课系统
学生选课系统功能:管理员、教师、学生三个角色。开发工具eclipse,jdk1.8。2.学生管理:添加、修改、删除、查询。3.班级管理:添加、修改、删除、查询。4.教师管理:添加、修改、删除、查询。5.课程管理:添加、修改、删除、查询。2.学生管理:添加、修改、删除、查询。3.班级管理:添加、修改、删除、查询。5.课程管理:添加、修改、删除、查询。6.选课管理:修改选课、推选课程。6.选课管理:修改选课、推选课程。3.选课管理:修改选课、推选课程。1.登录、修改密码、退出系统。2.学生管理:修改个人信息。
学生选课系统库表设计
背景——用例图:一个基础的学生选课系统 ER图设计如下:(学生和课程是n - m的关系,可修改的原图找不到了,悉知) 库表设计: ---专业表 CREATE TABLE major( major_id INT PRIMARY KEY AUTO_INCREMENT, major_name VARCHAR(20) ); ---学生表 CREATE TABLE
java学生选课系统_java实现学生选课系统
本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下案例要求:学生(学号,姓名,专业,所选课程{<3})老师(工号,姓名,所教课程{<3})课程(课程号,课程名,学分,教师,已选课学生{<30})选课系统代码如下://teacherpublic class Teacher {private int id;private String teacherName...
学生选课系统基于JSP技术
整理一下前段时间开发的代码,源码分享之-学生选课系统基于JSP技术; 代码已经上传github,下载地址:https://github.com/21503882/stuchoosecourse 1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 开发环境: Eclipse ,MYSQL,JDK1.8,Tomcat 7 涉及技术...
保姆级教程:用GPU-Burn给你的NVIDIA Tesla服务器做个“压力体检”(附温度功耗监控脚本)
本文提供了一份详细的GPU服务器压力测试指南,重点介绍如何使用GPU-Burn工具对NVIDIA Tesla服务器进行全面的性能测试和温度功耗监控。从环境部署、多GPU测试策略到专业级监控指标解析,帮助运维人员构建标准化的GPU健康评估体系,确保AI训练和科学计算等关键业务的稳定性。
java选课系统_java实现学生选课系统
本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下案例要求:学生(学号,姓名,专业,所选课程{<3})老师(工号,姓名,所教课程{<3})课程(课程号,课程名,学分,教师,已选课学生{<30})选课系统代码如下://teacherpublic class teacher {private int id;private string teachername...
VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)
本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。
Python3实现简易学生选课系统
1、要求说明 系统可教师学生双端登录。老师可以在该系统创建课程和给参与课程的学生打分;学生可以选择课程和查询分数以及查询学分。 只是进行了简单的实现,后续=面会继续学习Django和Mysql相关知识,考虑用页面实现。 2、代码思路 ①主菜单选择进入教师终端或学生终端 教师终端 教师登录注册创建课程登记成绩 学生终端 学生登录注册选课查询成绩查询学分 ②创建教师、学生、课程三个类。 教师类 教师姓...
复合材料RVE建模与力学性能分析实战指南
代表体积元(RVE)建模是复合材料多尺度分析的核心技术,通过建立微观结构与宏观性能的定量关联,可准确预测材料力学行为。本文基于ABAQUS平台,详细解析三材料(纤维/基体/界面相)RVE建模全流程,包括参数化几何建模、周期性网格划分策略、材料属性定义技巧等关键技术环节。针对碳纤维增强环氧树脂等典型复合材料,提供网格控制参数建议和材料参数参考表,并重点说明周期性边界条件的实现方法与验证标准。通过Python脚本自动化处理和优化分析流程,可显著提升计算效率,为复合材料设计提供可靠仿真依据。
动力锂电池-二阶RC模型等效电路-RLS参数辨识-Simulink
1.锂电池二阶RC等效电路模型
学生选课系统用例图,以及部分代码实现
上学期软件导论做的文档,学生选课系统,在文档的基础上,再代码实现以下背景——用例图:一个基础的学生选课系统ER图设计如下:(学生和课程是n - m的关系,可修改的原图找不到了,悉知)库表设计:---专业表CREATE TABLE major(major_id INT PRIMARY KEY AUTO_INCREMENT,major_name VARCHAR(20)); ---学生表CREATE T...
STM32H743内存告急?手把手教你用CubeMX+FMC外扩32MB SDRAM(W9825G6KH-6)
本文详细介绍了如何在STM32H743上使用CubeMX和FMC外扩32MB SDRAM(W9825G6KH-6),解决内存不足问题。从硬件选型、CubeMX配置到初始化代码实现,提供完整的配置教程和性能优化技巧,帮助开发者高效扩展内存,适用于图形界面和复杂算法处理。
数据库实验(学生选课系统)
数据库实验 1)使用 SQL Server Management Studio 建立学生选课数据库(XSXK)。 2)在 SQL Server Management Studio 中查看学生选课数据库的属性。 3)根据学生选课数据库物理结构设计,定义基本表、索引,实现相应的约束条件。
最小二乘法(看完即会)
其中,X是数据矩阵,每一行是一个数据点,每一列是一个自变量(包括截距项),Y是观测值向量,β是待求的系数向量。为了找到使S最小的a和b的值,我们需要对S求关于a和b的偏导数,并令它们等于零。最小二乘法的数学公式通常用于线性回归问题,其中目标是找到一条直线(或更高维度的超平面),使得这条直线与给定数据点的误差平方和最小。同样地,通过求偏导数和令偏导数等于零,我们可以得到一个线性方程组,解这个方程组可以找到最优的b_0, b_1, …+ b_m*x_m,其中b_0是截距,b_1到b_m是各个自变量的系数。
深入了解 CPU 的型号、代际架构与微架构!
深入了解 CPU 的型号、代际架构与微架构!
1万+



被折叠的 条评论
为什么被折叠?



