学生选课系统

c语言-实现学生选课系统 1.本文使用C语言写的一个简单项目,学生的选课系统,主要实现对学生和课程信息管理,实现系统的管理学生和课程选课退课等信息! 2.主要实现功能菜单: 1.录入课程信息 2.课程管理 3.录入学生信息 4.学生信息管理 5.学生选课 6.系统信息查看及存储 源代码: 学生选课系统源代码实现 #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2, 阅读详情
#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");
            }
    }
}

Web开发项目——学生选课系统 Web开发项目——学生选课系统完整项目代码+数据库文件(采用springMVC三层架构+MySQL) 学生登录界面 欢迎界面,可进行功能选择个人信息查询 密码修改,修改后数据库数据也会变化 根据教授该门课的老师是否提交成绩,学生可以查到自己相应课程的成绩,其查询结果如下: 可以通过对应课程后面的退选选项进行课程的退选 界面中已通过数据库将所有的课程列出来,学生可以通过前面的选择标志进行选课。 注销成功,数据库会删除学生个人的所有信息 输入教师的教师编号和密码,选择用户类型为教师,即可登录 登录之后进入 阅读详情

相关推荐

Java 学生选课系统 源代码

需求 Java实现学生系统(实际上是学生、教师管理系统+学生选课系统两部分构成) 需求如下: 程序设计为让上述要求展开。 源代码 由于代码量较大,所有代码以百度网盘链接形式给出(永久有效)。 百度网盘链接 提取码:0713 解压后里面的内容应该是这样的: 它包含了所有部分的代码。这里我使用eclipse编程,他们的组织形式是: 按照这个形式组织好,就可以运行啦,14+的jdk版本没有任何报错。 我的jdk版本: 效果 简单(真的很简单)展示下运行效果。 好了,我很懒所以就贴这些。有

温柔的博客 1万+

微信小程序|SSM微信小程序的学生选课系统

(1)管理员功能需求 管理员登陆后,主要模块包括首页、个人中心、学生管理、教师管理、课程类型管理、课程信息管理、选课信息管理、取消选课管理、管理员管理、系统管理等功能 (2)教师功能需求 教师登陆后,可以实现首页、个人中心、课程信息管理、选课信息管理、取消选课管理等功能 (3)学生功能需求 学生登陆后进入小程序首页,可以实现选课信息、取消选课、我的收藏管理等功能。

BS009的博客 1316

学生选课系统PHP

PHP+MYSQL 一、创建数据库及数据表 创建数据库xk,创建选课表、班级表、课程表、学生表、教师表等等。 选课表空白,用于录入学生的选课信息;课程表有课程号、课程名、任教教师、上课时间和学分;学生表有学生学号、姓名、所在班级以及学生登录选课系统的密码;教师表有教师教号、教师的姓名和教师登录选课系统的密码。 新建connnect.php文件连接数据库 二、实现注册功能 新建register.php文件,编写静态注册页面 三、实现...

weixin_53312151的博客 3907

毕业设计-----------学生选课管理系统的设计

题目要求: 建立一个学生选课系统, 编写应用程序完成系统开发。 建立基本表: 学生(学号,姓名,性别,年龄,系别) 课程(课程号,课程名,开课系,任课教师) 学习(学号,课程号,成绩) 要求有以下子系统 (1)基本信息查询子系统 要求:能够显示出学生表、课程表、带参数学生详细信息和选课情况 (2)学生、课程信息维护子系统 要求:能够维护学生表和课程表 (3)学生选课子系统 要求:考虑参照完整性以及用户自定义完整性,实现学生选课功能 (4)系统维护 需求分析 根据描述,这个系统...

分享技术热点,看天下大事 3万+

java swing开发学生选课系统 选课系统 java窗体 javaGui gui java学生选课系统

java swing开发学生选课系统 数据库使用MySQL 该系统主要包括学生和管理员两个用户角色 以学生角色登陆进去 学生可以查看自己的选修课情况 修改自己的个人信息 以管理员的角色登陆进去,管理员可以查看选修课的选修情况 增加选修课,查看学生的个人情况 数据库创建代码: /* Navicat Premium Data Transfer ...

tianmingCode的博客 6287

学生选课系统练手小项目

学生选课系统练手小项目 文件目录: 学生选课系统(一级目录) ​ ——bin(二级目录) ​ ——start.py ​ ——conf(二级目录) ​ ——settings.py ​ ——core(二级目录) ​ ——src.py ​ ——db(二级目录) ​ ——Course.txt ——Student.txt ——user_info.txt ​ ——lib(...

qq_40890660的博客 1686

基于java学生选课系统

学生选课系统功能:管理员、教师、学生三个角色。开发工具eclipse,jdk1.8。2.学生管理:添加、修改、删除、查询。3.班级管理:添加、修改、删除、查询。4.教师管理:添加、修改、删除、查询。5.课程管理:添加、修改、删除、查询。2.学生管理:添加、修改、删除、查询。3.班级管理:添加、修改、删除、查询。5.课程管理:添加、修改、删除、查询。6.选课管理:修改选课、推选课程。6.选课管理:修改选课、推选课程。3.选课管理:修改选课、推选课程。1.登录、修改密码、退出系统。2.学生管理:修改个人信息。

IT教程资源 1万+

学生选课系统库表设计

背景——用例图:一个基础的学生选课系统 ER图设计如下:(学生和课程是n - m的关系,可修改的原图找不到了,悉知) 库表设计: ---专业表 CREATE TABLE major( major_id INT PRIMARY KEY AUTO_INCREMENT, major_name VARCHAR(20) );   ---学生表 CREATE TABLE

xiao__oaix的博客 1万+

java学生选课系统_java实现学生选课系统

本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下案例要求:学生(学号,姓名,专业,所选课程{<3})老师(工号,姓名,所教课程{<3})课程(课程号,课程名,学分,教师,已选课学生{<30})选课系统代码如下://teacherpublic class Teacher {private int id;private String teacherName...

weixin_29635919的博客 5556

学生选课系统基于JSP技术

整理一下前段时间开发的代码,源码分享之-学生选课系统基于JSP技术; 代码已经上传github,下载地址:https://github.com/21503882/stuchoosecourse 1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 开发环境: Eclipse ,MYSQL,JDK1.8,Tomcat 7 涉及技术...

qq 79872135的博客 1845

保姆级教程:用GPU-Burn给你的NVIDIA Tesla服务器做个“压力体检”(附温度功耗监控脚本)

本文提供了一份详细的GPU服务器压力测试指南,重点介绍如何使用GPU-Burn工具对NVIDIA Tesla服务器进行全面的性能测试和温度功耗监控。从环境部署、多GPU测试策略到专业级监控指标解析,帮助运维人员构建标准化的GPU健康评估体系,确保AI训练和科学计算等关键业务的稳定性。

weixin_30619101的博客 395

java选课系统_java实现学生选课系统

本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下案例要求:学生(学号,姓名,专业,所选课程{<3})老师(工号,姓名,所教课程{<3})课程(课程号,课程名,学分,教师,已选课学生{<30})选课系统代码如下://teacherpublic class teacher {private int id;private string teachername...

weixin_35156503的博客 4250

VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)

本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。

weixin_33708432的博客 539

Python3实现简易学生选课系统

1、要求说明 系统可教师学生双端登录。老师可以在该系统创建课程和给参与课程的学生打分;学生可以选择课程和查询分数以及查询学分。 只是进行了简单的实现,后续=面会继续学习Django和Mysql相关知识,考虑用页面实现。 2、代码思路 ①主菜单选择进入教师终端或学生终端 教师终端 教师登录注册创建课程登记成绩 学生终端 学生登录注册选课查询成绩查询学分 ②创建教师、学生、课程三个类。 教师类 教师姓...

A-HUAN的博客 9418

复合材料RVE建模与力学性能分析实战指南

代表体积元(RVE)建模是复合材料多尺度分析的核心技术,通过建立微观结构与宏观性能的定量关联,可准确预测材料力学行为。本文基于ABAQUS平台,详细解析三材料(纤维/基体/界面相)RVE建模全流程,包括参数化几何建模、周期性网格划分策略、材料属性定义技巧等关键技术环节。针对碳纤维增强环氧树脂等典型复合材料,提供网格控制参数建议和材料参数参考表,并重点说明周期性边界条件的实现方法与验证标准。通过Python脚本自动化处理和优化分析流程,可显著提升计算效率,为复合材料设计提供可靠仿真依据。

weixin_34062469的博客 548

动力锂电池-二阶RC模型等效电路-RLS参数辨识-Simulink

1.锂电池二阶RC等效电路模型

QQ1978009424的博客 1万+

学生选课系统用例图,以及部分代码实现

上学期软件导论做的文档,学生选课系统,在文档的基础上,再代码实现以下背景——用例图:一个基础的学生选课系统ER图设计如下:(学生和课程是n - m的关系,可修改的原图找不到了,悉知)库表设计:---专业表CREATE TABLE major(major_id INT PRIMARY KEY AUTO_INCREMENT,major_name VARCHAR(20)); ---学生表CREATE T...

HgH3223273424的博客 2万+

STM32H743内存告急?手把手教你用CubeMX+FMC外扩32MB SDRAM(W9825G6KH-6)

本文详细介绍了如何在STM32H743上使用CubeMX和FMC外扩32MB SDRAM(W9825G6KH-6),解决内存不足问题。从硬件选型、CubeMX配置到初始化代码实现,提供完整的配置教程和性能优化技巧,帮助开发者高效扩展内存,适用于图形界面和复杂算法处理。

weixin_30568591的博客 493

数据库实验(学生选课系统)

数据库实验 1)使用 SQL Server Management Studio 建立学生选课数据库(XSXK)。 2)在 SQL Server Management Studio 中查看学生选课数据库的属性。 3)根据学生选课数据库物理结构设计,定义基本表、索引,实现相应的约束条件。

zmy766138的博客 1万+

最小二乘法(看完即会)

其中,X是数据矩阵,每一行是一个数据点,每一列是一个自变量(包括截距项),Y是观测值向量,β是待求的系数向量。为了找到使S最小的a和b的值,我们需要对S求关于a和b的偏导数,并令它们等于零。最小二乘法的数学公式通常用于线性回归问题,其中目标是找到一条直线(或更高维度的超平面),使得这条直线与给定数据点的误差平方和最小。同样地,通过求偏导数和令偏导数等于零,我们可以得到一个线性方程组,解这个方程组可以找到最优的b_0, b_1, …+ b_m*x_m,其中b_0是截距,b_1到b_m是各个自变量的系数。

qlkaicx的博客 2万+

深入了解 CPU 的型号、代际架构与微架构!

深入了解 CPU 的型号、代际架构与微架构!

欢迎朋友,我是一名十多年开发经验的新手,希望多多指教。 3195
上一篇: C++Vector
下一篇: 字符串运算符重载
恩嗯
博客等级 码龄8年 47粉丝 112原创
评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值