精华内容
下载资源
问答
  • 通过c语言设计学生选课系统,完成选课、退选、浏览、修改课程信息等功能
  • 学生选课系统要求具备以下功能: 1.系统以菜单方式工作 2.浏览所有的课程信息 3.浏览所有的学生选课情况 4.任意学生信息的查询和修改功能 5.学生选课功能(学生选课时要判断课程是否已经选满,同时还要判断学生...
  • 题目一学生选课管理系统 目录 第一部分课程设计名称目的要.求 第二部分程总序体设计思路 第三部分程序功能划分示图及流程图 第四部分程设序计数据运行结果 第五部分程序优的缺点 第六部分心得体.会. 第七部分录附源...
  • 第一部分:课程设计名称、目的、要求... 第二部分:程序总体设计思路........... 第三部分:程序功能划分、图示及流程图. 第四部分:程序设计数据、运行结果..... 第五部分:程序的优缺点............... 第六部分:心得...
  • 学生选课系统c语言C语言课程设计报告学生选课系统加源代码
  • 海量资源欢迎共阅 武汉理工大学华夏学院 课程设计报告书 课程名称 C 课程设计 题目学生选课系统程序设计 系名 信息工程系 专业班级 姓名 学号 指导教师 : 成绩 2016年 3 月 4日 课程设计任务书 学生姓名专业班级 ...
  • 最简单的c语言编程实例 利用数组、函数、结构体 无存储功能
  • 顺序储存结构 课程设计 c语言 学生选课系统 功能 浏览 修改 选课
  • C 程序设计 课程设计 题 目学生选课系统 专业班级 通信工程 1班 姓 名 学 号 指导教师 成 绩 摘 要 学生选课系统是一个教育单位不可缺少的重要系统组成部分,它 对于学校的决策者管理者管理查看课程来说都有至关重要,...
  • 这是我们大一C语言课程设计的最终作品,涉及文件读写操作、链表的一系列操作。 源代码由头文件all.h、主函数文件main.cpp以及功能函数文件student.cpp、manager.cpp、common.cpp组成。 涉及的文件读写操作需要先手动...
  • 『易坊知识库摘要_语言|C语言课程设计报告学生选课管理系统( 二 )』7、的路径 , 打开文件 , 若没有找到则有提示;III 将文件中的信息依次读出 , 最后结构体的指针为4、 学生信息管理(void managements())增加学生...

    『易坊知识库摘要_语言|C语言课程设计报告学生选课管理系统( 二 )』7、的路径 , 打开文件 , 若没有找到则有提示;III 将文件中的信息依次读出 , 最后结构体的指针为4、 学生信息管理(void managements())增加学生信息(...

    按关键词阅读:

    课程设计

    语言

    系统

    管理

    选课

    学生

    报告

    7、的路径 , 打开文件 , 若没有找到则有提示;III 将文件中的信息依次读出 , 最后结构体的指针为4、 学生信息管理(void managements())增加学生信息(void inserts(struct student * incouse))I 定义指向结构体变量的指针;II 输入要增加的学生编号 , 从头指针指向的结构体依次向后 , 直到链表的最后;III 输入学生结构体各个成员的信息 , 使最后一个结构体指针值为删除学生信息(void dels(int num2))I 定义指向结构体变量的指针;II 输入要增加的学生编号 , 从头指针指向的结构体依次向后 , 直到找到学生编号为输入值的那个结构体;III 将其删除 。

    8、 , 其前一个的结构体指针指向其后一个结构体5、 学生选课管理(void elective())学生选课(void elect())I 分别定义指向课程和学生结构体变量的指针;II 输入要选课的学生的编号 , 从头指针指向的结构体依次向后 , 直到找到学生编号为输入值的那个结构体 , 如不存在则显示要录入学生信息;III 输入要选课程的编号 , 从头指针指向的结构体依次向后 , 直到找到课程编号为输入值的那个结构体;IV 在学生结构体对应的所选课程编号中更改信息 , 所选学分中加上相应分值 , 课程结构体所选人数中相应加一学生退课(void back())I 分别定义指向课程和学生结构体变量的指针;II 输入要退课的学生的编 。

    9、号 , 从头指针指向的结构体依次向后 , 直到找到学生编号为输入值的那个结构体 , 如不存在则显示要录入学生信息;III 输入要退课程的编号 , 从头指针指向的结构体依次向后 , 直到找到课程编号为输入值的那个结构体;IV 在学生结构体对应的所选课程编号中更改信息 , 所选学分中减去相应分值 , 课程结构体所选人数中相应减一6、 信息浏览和保存(void into())课程信息浏览(void listc())I 定义指向结构体变量的指针;II从头指针指向的结构体依次向后 , 将课程结构体各成员的信息一次输出 , 直到最后一个结构体指针的值为NULL学生信息浏览(void lists())I 定义指向结构体变量的指针;II从头指针 。

    10、指向的结构体依次向后 , 将学生结构体各成员的信息一次输出 , 直到最后一个结构体指针的值为NULL课程信息保存(void intoc())I 定义指向课程结构体变量的指针和指向文件的指针;II 输入保存路径 , 如果没有保存则有显示;III 将课程信息写入文件中;IV 将课程信息进行保存 , 关闭文件学生信息保存(void intos())I 定义指向学生结构体变量的指针和指向文件的指针;II 输入保存路径 , 如果没有保存则有显示;III 将学生信息写入文件中;IV 将学生信息进行保存 , 关闭文件7、 学生信息查询(void store())按学生姓名查询(void search2())I定义指向结构体变量的指 。

    11、针;II 输入要查询的学生的姓名 , 从头指针指向的结构体依次向后 , 直到找到学生姓名为输入值的那个结构体;III 将该学生结构体成员的各信息依次输出按学生编号查询(void search1())I定义指向结构体变量的指针;II 输入要查询的学生的编号 , 从头指针指向的结构体依次向后 , 直到找到学生编号为输入值的那个结构体;III 将该学生结构体成员的各信息依次输出3 调试分析3.1错误显示及分析a.编译时出现错误 , 回看程序发现漏掉符号等细节错误 。

    b.运行时 , 界面格式与最初的设想不一致 , 通过重新编排 , 符号的增减及一进 , 最终达到理想界面 。

    c.运行时 , 输入一个信息后 , 第二次输入数据时很难将输入光标移到想要的 。

    12、位子 , 通过按键的摸索 , 最终了解了输入要领 。

    d.对输入的信息查询时没有记录 , 发现文件读取错误 。

    3.2修改完善1、开始程序执行时 , 各项大的功能每一次只能执行一个就自动跳出 , 为了使程序保持连续性和更好的实用性 , 使用了start,goto start,break,sysyem(“clx”)等实现了逐渐免于更功能的循环 。

    2、对于学生信息中已选课程的存储 , 一直不知如何存储 。

    后用实型数组 , 并进行循环 , 依次读入课程的编号 , 将课程编号进行存储 。

    4 用户使用说明4.1适用范围适用于管理者将课程信息和学生信息录入到系统 , 并可以将课程信息和学生信息进行保存 , 日后如果有需要在对课程和学生信息进行增加可删除 。

    同时也适用于 。

    13、学生在登录自己的学号后 , 浏览课程信息选课 , 进行选课和退课操作 。

    4.2使用方法首先管理者将现有的课程信息(包括课程编号、课程名称、使用专业、课程类型、学时、学分、教师、已选人数(初始为零)和学生信息(包括学生学号、姓名、已选学时、已选课程编号)录入到系统 , 并将其进行文件保存 , 以便以后使用 。

    来源:(未知)

    【傻大方】网址:http://www.shadafang.com/a/2021/0408/0021887915.html

    标题:语言|C语言课程设计报告学生选课管理系统( 二 )

    展开全文
  • 学生选修课系统设计设计目的 ...尤其对于复杂的信息管理计算机能够充分发挥它的优越性计算机进行信息管理与信息管理系统的开发密切相关系统的开发是系统管理的前提本系统就是为了管理好学生选课信息而设计的 数据
  • 我是一个刚学计算机的小白,这是我们的期末课程设计c语言打的,我是稀里糊涂过的,只是想要混过课设的可以拿去混一下,应该没啥问题,直接用dev就能完整运行,代码是全的
  • C语言学生选课系统

    2012-12-19 22:50:37
    C语言实现的学生选课系统,可用于课程设计以及大学实践作业等
  • 该程序更清晰化,更人性化,使人易于理解,便于读懂,该程序实现了管理员和学生课程信息的各个操作
  • 学生选课系统

    2012-12-27 22:15:50
    C语言课程设计 学生选课系统程序 可用于C语言课程和软件技术课程的设计
  • C语言课程设计学生选修课程系统设计

    千次阅读 多人点赞 2020-01-12 00:59:36
    1、需求分析 系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件...数据结构采用结构体,这里采用课程信息结构体和学生选课信息结构体。 Struct { Char course...

    1、需求分析

    系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。

    2、总体设计

    整个系统可以设计为信息输入模块、信息查询模块以及信息浏览模块。

    3、详细设计

    数据结构采用结构体,这里采用课程信息结构体和学生选课信息结构体。
    Struct
    {
    Char courseCode[10]; //课程编号
    Char courseName[20]; //课程名称
    Char courseType[10]; //课程类别
    Int totalPeriod; //总学时
    Int classPeriod; //授课学时
    Int experiPeriod; //上机学时
    Float creditHour; //学分
    Int term; //开课学期
    }CourseInfo[N]; //课程信息结构体
    Struct
    {
    Int stuNo; //学号;
    Char courseCode[10]; //课程编号
    }StuCourInfo[N]; //学生选课信息结构体
    (1) 信息输入模块
    从键盘输入课程信息和学生选课信息,写入文件。(fwrite, fprintf)
    (2)信息浏览模块
    分屏显示课程信息,每屏10条课程记录,按任意键继续。从文件中读数据(fread,fscanf),然后再显示。
    (3)信息查询模块
    通过菜单选择查询字段,可以按照课程编号、课程名称、课程性质、开课学期、学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。
    可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。

    4、编程实现

    开发环境:Code::Blocks 13.12
    说明:为了简化,本程序约定程序运行后,首先就必须先把所有数据输入,之后就不能再输入数据了。输入的数据会以文件的形式出现在和本程序文件同目录的文件夹内。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    /*
        约定程序运行后,首先就必须先把所有数据输入,之后就不能再输入数据了。
    */
    
    struct CourseInfo {
        char courseCode[10];    //课程编号
        char courseName[20];    //课程名称
        char courseType[10];    //课程类别
        int  totalPeriod;       //总学时
        int  classPeriod;       //授课学时
        int  experiPeriod;      //上机学时
        float creditHour;      //学分
        int  term;              //开课学期
    };
    
    struct StuCourInfo {
        int stuNo;              //学号;
        char courseCode[10];    //课程编号
    };
    
    struct CourseInfo courses[100];
    struct StuCourInfo stus[100];
    
    int courseCnt = 0; // 录入的课程数目
    int stuCnt = 0;    // 录入的学生选课数目
    
    // 程序入口
    void go();
    
    // 打印菜单
    void menu();
    
    // 录入数据
    void input();
    
    // 浏览课程数据
    void browseCourses();
    
    // 查询选课
    void getSelectedCourses();
    
    // 查询课程信息
    void getCourseInfo();
    
    int main(){
        go();
        return 0;
    }
    
    void go(){
        while(true){
            menu();
            printf("请按照菜单提示输入您的操作编号:\n");
            int choice = 0;
            scanf("%d", &choice);
            if(choice == 0){
                printf("您已经退出系统!\n");
                return;
            }else if(choice == 1){
                input();
            }else if(choice == 2){
                browseCourses();
            }else if(choice == 3){
                getCourseInfo();
            }else if(choice == 4){
                getSelectedCourses();
            }else{
                printf("输入错误!\n");
            }
        }
    }
    
    void menu(){
        printf("***选课系统***\n");
        printf("1-->录入数据\n");
        printf("2-->浏览课程\n");
        printf("3-->查询课程\n");
        printf("4-->查询选课\n");
        printf("0-->退出\n");
    }
    
    void input(){
        printf("11-->录入课程数据\n");
        printf("12-->录入选课数据\n");
        printf("请输入录入您的选择(11/22):\n");
        int choice = 0;
        scanf("%d", &choice);
        int cnt = 0;
        printf("请输入录入数据条数:\n");
        scanf("%d", &cnt);
        if(choice == 11){
            courseCnt = cnt;
            printf("请录入课程信息(格式示例:1 C语言 编程语言 30 20 10 1 1):\n");
            for(int i = 0; i < cnt; i++){
                scanf("%s", &courses[i].courseCode);
                scanf("%s", &courses[i].courseName);
                scanf("%s", &courses[i].courseType);
                scanf("%d", &courses[i].totalPeriod);
                scanf("%d", &courses[i].classPeriod);
                scanf("%d", &courses[i].experiPeriod);
                scanf("%f", &courses[i].creditHour);
                scanf("%d", &courses[i].term);
            }
    
            FILE * fp=fopen ("course.txt", "w") ; //打开文件
            if(NULL==fp)
            {
                printf ("Failed to open the file !\n");
                exit(0);
            }
    
            for(int i = 0; i < cnt; i++){
                fputs(courses[i].courseCode, fp);
                fputs(" ", fp);
                fputs(courses[i].courseName, fp);
                fputs(" ", fp);
                fputs(courses[i].courseType, fp);
                fputs(" ", fp);
    
                char strTotalPeriod[10];
                itoa(courses[i].totalPeriod, strTotalPeriod, 10);
                fputs(strTotalPeriod, fp);
                fputs(" ", fp);
    
                char strClassPeriod[10];
                itoa(courses[i].classPeriod, strClassPeriod, 10);
                fputs(strClassPeriod, fp);
                fputs(" ", fp);
    
                char strExperiPeriod[10];
                itoa(courses[i].experiPeriod, strExperiPeriod, 10);
                fputs(strExperiPeriod, fp);
                fputs(" ", fp);
    
                char strCreditHour[10];
                sprintf(strCreditHour, "%.1f", courses[i].creditHour);
                fputs(strCreditHour, fp);
                fputs(" ", fp);
    
                char strTerm[10];
                itoa(courses[i].term, strTerm, 10);
                fputs(strTerm, fp);
                fputs("\n", fp);
            }
            fclose(fp); //关闭文件
            printf("数据已经录入完毕!\n");
        }else if(choice == 12){
            stuCnt = cnt;
            printf("请录入选课信息(格式示例:201901 1):\n");
            for(int i = 0; i < cnt; i++){
                scanf("%d", &stus[i].stuNo);
                scanf("%s", &stus[i].courseCode);
    
            }
    
            FILE * fp=fopen ("student.txt", "w") ; //打开文件
            if(NULL==fp)
            {
                printf ("Failed to open the file !\n");
                exit(0);
            }
    
            for(int i = 0; i < cnt; i++){
                char strStuNo[10];
                itoa(stus[i].stuNo, strStuNo, 10);
                fputs(strStuNo, fp);
                fputs(" ", fp);
    
                fputs(stus[i].courseCode, fp);
                fputs(" ", fp);
    
                fputs("\n", fp);
            }
            fclose(fp); //关闭文件
            printf("数据已经录入完毕!\n");
        }else{
            printf("输入错误!\n");
        }
        printf("\n");
    }
    
    void browseCourses(){
        printf("课程信息如下(每次显示10个,按任意键继续显示):");
        FILE * fp=fopen ("course.txt", "r") ; //打开文件
        if(NULL==fp)
        {
            printf ("Failed to open the file !\n");
            exit(0);
        }
    
        for(int i = 0; i < courseCnt; i++){
            fscanf(fp, "%s %s %s %d %d %d %f %d\n",
                   &courses[i].courseCode,
                   &courses[i].courseName,
                   &courses[i].courseType,
                   &courses[i].totalPeriod,
                   &courses[i].classPeriod,
                   &courses[i].experiPeriod,
                   &courses[i].creditHour,
                   &courses[i].term);
        }
        fclose(fp); //关闭文件
    
        for(int i = 0; i < courseCnt; i++){
            if(i != 0 && (i%10 == 0)){
                printf("请输入任意键,继续显示...\n");
                getchar();
                getchar();
            }
            printf("%s %s %s %d %d %d %f %d\n",
                   courses[i].courseCode,
                   courses[i].courseName,
                   courses[i].courseType,
                   courses[i].totalPeriod,
                   courses[i].classPeriod,
                   courses[i].experiPeriod,
                   courses[i].creditHour,
                   courses[i].term);
        }
        printf("数据已经全部显示!\n\n");
    }
    
    void getSelectedCourses(){
        printf("请输入课程号:\n");
        char classCode[10];
        scanf("%s", classCode);
        printf("选修课程号为%s的学生如下:\n", classCode);
        FILE * fp=fopen ("student.txt", "r") ; //打开文件
        if(NULL==fp)
        {
            printf ("Failed to open the file !\n");
            exit(0);
        }
        for(int i = 0; i < stuCnt; i++){
            fscanf(fp, "%d %s\n", &stus[i].stuNo, &stus[i].courseCode);
        }
        fclose(fp); //关闭文件
        for(int i = 0; i < stuCnt; i++){
            if(strcmp(classCode, stus[i].courseCode) == 0){
                printf("%d\n", stus[i].stuNo);
            }
        }
        printf("数据已经全部显示!\n\n");
    }
    
    void getCourseInfo(){
        printf("31-->根据课程编号查询课程\n");
        printf("32-->根据课程名称查询课程\n");
        printf("33-->根据课程类别查询课程\n");
        printf("34-->根据开课学期查询课程\n");
        printf("35-->根据课程学分查询课程\n");
    
        FILE * fp=fopen ("course.txt", "r") ; //打开文件
        if(NULL==fp)
        {
            printf ("Failed to open the file !\n");
            exit(0);
        }
    
        for(int i = 0; i < courseCnt; i++){
            fscanf(fp, "%s %s %s %d %d %d %f %d\n",
                   &courses[i].courseCode,
                   &courses[i].courseName,
                   &courses[i].courseType,
                   &courses[i].totalPeriod,
                   &courses[i].classPeriod,
                   &courses[i].experiPeriod,
                   &courses[i].creditHour,
                   &courses[i].term);
        }
        fclose(fp); //关闭文件
    
        printf("请输入您的查询条件编号:\n");
        int choice = 0;
        scanf("%d", &choice);
        if(choice == 31){
            printf("请输入课程编号:\n");
            char courseCode[10];
            scanf("%s", courseCode);
            for(int i = 0; i < courseCnt; i++){
                if(strcmp(courseCode, courses[i].courseCode) == 0){
                    printf("%s %s %s %d %d %d %f %d\n",
                       courses[i].courseCode,
                       courses[i].courseName,
                       courses[i].courseType,
                       courses[i].totalPeriod,
                       courses[i].classPeriod,
                       courses[i].experiPeriod,
                       courses[i].creditHour,
                       courses[i].term);
                }
            }
            printf("数据已经全部显示!\n");
        }else if(choice == 32){
            printf("请输入课程名称:\n");
            char courseName[10];
            scanf("%s", courseName);
            for(int i = 0; i < courseCnt; i++){
                if(strcmp(courseName, courses[i].courseName) == 0){
                    printf("%s %s %s %d %d %d %f %d\n",
                       courses[i].courseCode,
                       courses[i].courseName,
                       courses[i].courseType,
                       courses[i].totalPeriod,
                       courses[i].classPeriod,
                       courses[i].experiPeriod,
                       courses[i].creditHour,
                       courses[i].term);
                }
            }
            printf("数据已经全部显示!\n");
        }else if(choice == 33){
            printf("请输入课程类别:\n");
            char courseType[10];
            scanf("%s", courseType);
            for(int i = 0; i < courseCnt; i++){
                if(strcmp(courseType, courses[i].courseType) == 0){
                    printf("%s %s %s %d %d %d %f %d\n",
                       courses[i].courseCode,
                       courses[i].courseName,
                       courses[i].courseType,
                       courses[i].totalPeriod,
                       courses[i].classPeriod,
                       courses[i].experiPeriod,
                       courses[i].creditHour,
                       courses[i].term);
                }
            }
            printf("数据已经全部显示!\n");
        }else if(choice == 34){
            printf("请输入开课学期:\n");
            int term = 0;
            scanf("%d", &term);
            for(int i = 0; i < courseCnt; i++){
                if(term == courses[i].term){
                    printf("%s %s %s %d %d %d %f %d\n",
                       courses[i].courseCode,
                       courses[i].courseName,
                       courses[i].courseType,
                       courses[i].totalPeriod,
                       courses[i].classPeriod,
                       courses[i].experiPeriod,
                       courses[i].creditHour,
                       courses[i].term);
                }
            }
            printf("数据已经全部显示!\n");
        }else if(choice == 35){
            printf("请输入学分:\n");
            float creditHour = 0.0;
            scanf("%f", &creditHour);
            for(int i = 0; i < courseCnt; i++){
                if(creditHour == courses[i].creditHour){
                    printf("%s %s %s %d %d %d %f %d\n",
                       courses[i].courseCode,
                       courses[i].courseName,
                       courses[i].courseType,
                       courses[i].totalPeriod,
                       courses[i].classPeriod,
                       courses[i].experiPeriod,
                       courses[i].creditHour,
                       courses[i].term);
                }
            }
            printf("数据已经全部显示!\n");
        }else{
            printf("输入错误!\n");
        }
        printf("\n");
    }
    
    

    5、演示

    为了演示方便,可以先构造一些数据放入data.txt文件内,后续录入数据的时候可以直接复制粘贴到控制台。

    1 C语言 编程语言  30 20 10 1.0 1
    2 C语言 编程语言  30 20 10 1.0 1
    3 C语言 编程语言  30 20 10 1.0 1
    4 C语言 编程语言 30 20 10 1.0 1
    5 C语言 编程语言 30 20 10 1.0 1
    6 C语言 编程语言 30 20 10 1.0 1
    7 C语言 编程语言 30 20 10 1.0 1
    8 C语言 编程语言 30 20 10 1.0 1
    9 C语言 编程语言 30 20 10 1.0 1
    10 C语言 编程语言 30 20 10 1.0 1
    11 C语言 编程语言 30 20 10 1.0 1
    12 C语言 编程语言 30 20 10 1.0 1
    13 C语言 编程语言 30 20 10 1.0 1
    14 C语言 编程语言 30 20 10 1.0 1
    15 C语言 编程语言 30 20 10 1.0 1
    16 C语言 编程语言 30 20 10 1.0 1
    17 C语言 编程语言 30 20 10 1.0 1
    18 C语言 编程语言 30 20 10 1.0 1
    19 C语言 编程语言 30 20 10 1.0 1
    20 C语言 编程语言 30 20 10 1.0 1
    21 C语言 编程语言 30 20 10 1.0 1
    22 C语言 编程语言 30 20 10 1.0 1
    23 C语言 编程语言 30 20 10 1.0 1
    24 C语言 编程语言 30 20 10 1.0 1
    
    201901 1 
    201902 1 
    201903 1 
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • c语言 选课系统设计

    2010-12-24 09:39:28
    这是一个用C语言编写的学生选课系统程序,可供c语言课程设计用!
  • 1、C语言程序设计学校: 学院: 班级序号: 学号: 姓名: 指导老师: C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完高级语言程序设计课程后进行的一次全面的综合性上机实验。其目的在于为...

    《C语言程序设计报告 学生选修课系统》由会员分享,可在线阅读,更多相关《C语言程序设计报告 学生选修课系统(11页珍藏版)》请在人人文库网上搜索。

    1、C语言程序设计学校: 学院: 班级序号: 学号: 姓名: 指导老师: C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完高级语言程序设计课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、题目学生选修课程系统设计假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或商机学时、血粉、开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。1、要求:试设计一个选修课程系统,使之能提供以下功能:(1。

    2、) 系统以菜单方式工作。(2) 课程信息和学生选课信息输入功能(课程信息用文件保存)输入。(3) 课程信息浏览功能输出。(4) 查询功能(至少一种查询方式)算法。(5) 按学分查询。(6) 某门课程学生选修情况(可选项)。2、分析:由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。3、总体设计:根据题目要求,可以将系统分为六个模块:1) 系统以菜单方式工作模块;2) 课程信息与学生选课信息录入功能模块;3) 课程信息浏览功能模块;。

    3、4) 查询模块;5) 按学分查询模块;6) 某些课程学生选修情况模块。系统以菜单方式工作模块课程信息与学生选课信息录入功能模块课程信息浏览功能模块查询模块按学分查询模块某些课程学生选修情况模块工资信息管理系统结束显示一系列功能选择N4详细设计:#include #include 主流程图:开始#include typedef struct subjectsint num;char name20;判断 char kind10;int stime;int ttime;int etime;int score;int term;struct subjects *next;SUB;SUB *create。

    4、_form()SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name20,kind10;int size=sizeof(SUB);head=tail=NULL;printf(输入选修课程信息:n);scanf(%d %s %s %d %d %d %d %d,&num,&name,&kind,&stime,&ttime,&etime,&score,&term);while(num!=0)p=(SUB *)malloc(size);p-num=num;strcpy(p-name,name);strcpy(p-kin。

    5、d,kind);p-stime=stime;p-ttime=ttime;p-etime=etime;p-score=score;p-term=term;if(head=NULL)head=p;elsetail-next=p;tail=p;scanf(%d %s %s %d %d %d %d %d,&num,&name,&kind,&stime,&ttime,&etime,&score,&term);tail-next=NULL;return head;开始void savefile(SUB *head)SUB *p;输出FILE *fp;fp=fopen(subjects.txt,w);写入文。

    6、件并储存输入结束fprintf(fp,课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期n);for(p=head;p;p=p-next)fprintf(fp,%5d%12s%9s%9d%9d%11d%11d%7dn,p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);fclose(fp);void savefileadd(SUB *head)SUB *p;FILE *fp;fp=fopen(subjectsadd.txt,w);fprintf(fp,课程编号 课程名称 课程性质 总学时 授课学时 。

    7、实验或上机学时 学分 开课学期n);for(p=head;p;p=p-next)fprintf(fp,%5d%12s%9s%9d%9d%11d%11d%7dn,p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);fclose(fp);void savefiledel(SUB *head)SUB *p;FILE *fp;fp=fopen(subjectsdel.txt,w);fprintf(fp,课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期n);for(p=head;p;p=p-next)fpr。

    8、intf(fp,%5d%12s%9s%9d%9d%11d%11d%7dn,p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);fclose(fp);void prin(SUB *head)SUB *ptr;if(head=NULL)printf(没有此门课程记录!n);return;printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n);for(ptr=head;ptr;ptr=ptr-next)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,p。

    9、tr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);2判断查询方法 打开文件查看学生选课信息开始void search(SUB *head)int a,num;int t=1;char type10;1char ch=a,ch1;SUB *ptr;按课程性质查按学分查输入结束while(ch!= )printf(若要按课程性质查找请输入1,若要按学分查找请输入2:n);scanf(%d,&a);switch(a)case 1:printf(请输入要查找的课程的性质:n);scanf(%s,type);printf。

    10、(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n);for(ptr=head;ptr;ptr=ptr-next)if(strcmp(type,ptr-kind)=0)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);t=0;if(t) printf(未找到!n);t=1;break;case 2:printf(输入要查找的课程的学分n);scanf(%d,&num);printf(课程编号。

    11、 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n);for(ptr=head;ptr;ptr=ptr-next)if(ptr-score=num)printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);t=0;if(t) printf(未找到!n);t=1;printf(继续查找请按回车键,结束请按空格键:n);ch1=getchar(); /将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH。

    12、,因此用CH1填补。ch=getchar();SUB *insert(SUB *head)SUB *ptr,*ptr2,*subj;int size=sizeof(SUB);char ch=a,ch1;while(ch!= )subj=(SUB *)malloc(size);ptr=subj;printf(输入要插入的课程信息:n);scanf(%d%s%s%d%d%d%d%d,&subj-num,subj-name,subj-kind,&subj-stime,&subj-ttime,&subj-etime,&subj-score,&subj-term);if(head=NULL)head=p。

    13、tr;head-next=NULL;elsefor(ptr2=head;ptr2;ptr2=ptr2-next)if(ptr2-next=NULL)ptr2-next=subj;subj-next=NULL;break;printf(继续插入请按回车,结束请按空格:n);ch1=getchar(); /将回车键赋给CH1,否则subj-term输完后输入的回车键会赋给CH,因此用CH1填补。ch=getchar();return head;SUB *del(SUB *head)SUB *p1,*p2;char ch=a,ch1;int num;while(ch!= )printf(输入想要删除。

    14、的课程编号:n);scanf(%d,&num);if(head-num=num)p2=head;head=head-next;free(p2);if(head=NULL)return NULL;p1=head;p2=head-next;while(p2)if(p2-num=num)p1-next=p2-next;free(p2);else p1=p2;p2=p1-next;printf(继续删除请按回车,结束请按空格:n);ch1=getchar(); /将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。判断是否是要选的课程 输入、选课开始Nch=getchar(。

    15、);return head;void choose(SUB *head)选定、输出结束SUB *p,*q;int a5;int num,total=0,i=0,j;printf(输入要选修的课程的编号,编号之间以空格分开,输完后以0结束n);scanf(%d,&num);while(num!=0)for(p=head;p;p=p-next)if(p-num=num)total=total+p-score;ai=num;i+;scanf(%d,&num);if(totalnext)if(q-num=aj)printf(%s ,q-name);printf(n);printf(*n);printf。

    16、(*n);printf(*n);printf(*n);void main()SUB *head=create_form();savefile(head);prin(head);search(head);head=insert(head);/注意此处的必要性函数insert的的返回值重新赋给head!savefileadd(head);printf(修改后的信息为:n);prin(head);head=del(head); /注意此处的必要性,数del的的返回值重新赋给head!savefiledel(head);printf(修改后的课程信息为:n);prin(head);choose(hea。

    17、d);运行结果:输入选修课程信息:1 maths bx 15 14 0 25 12 Entg bx 15 14 0 25 13 hh xx 10 8 2 15 14 bb xx 25 14 0 35 10 gg xx 12 10 0 10 1课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期1 maths bx 15 14 0 25 12 Entg bx 15 14 0 25 13 hh xx 10 8 2 15 14 bb xx 25 14 0 35 1若要按课程性质查找请输入1,若要按学分查找请输入2:1请输入要查找的课程的性质:bx课程编号 课程名称 课程性质。

    18、 总学时 授课学时 实践或上机学时 学分 开课学期1 maths bx 15 14 0 25 12 Entg bx 15 14 0 25 1继续查找请按回车键,结束请按空格键:若要按课程性质查找请输入1,若要按学分查找请输入2:2输入要查找的课程的学分15课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期3 hh xx 10 8 2 15 1继续查找请按回车键,结束请按空格键:课程设计体会:通过学习和练习C程序的设计基础,学习到了很多关于C的知识。在这次学习过程中,毫无疑问的遇到了很多困惑、疑问,难免心情沮丧,失去耐心,信心受挫,但同学的帮助,老师的解惑和自己的坚持。终于做了出来。看着这一页页的程序,我感受到了成功的喜悦。用一句话来形容一下这几天就是:苦并快乐着。

    展开全文
  • c语言编写的学生选课系统学生选课系统课程报告
  • 假定有n门课程,,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课.试设计一选修课程系统,使之能提供一下功能: (1)系统以菜单...
  • 这是一个用C语言编写的数据结构课程设计,题目是学生选课系统C言版,报告和源代码都在其中,报告中各方面分析的都比较详细,值得分享。
  • 这是用c语言写的一个学生选课系统,刚学c时候写的课程设计,有报告、流程图。报告写的挺全面的。程序可运行,有源码
  • 学生选课系统c语言

    2008-06-16 18:52:44
    课程设计 系统 选课
  • 假定有n门课程,每门课程课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能: ...
  • 学生选课管理系统 用顺序表实现 ◆问题描述  设计一个计算机管理完成的学生选课信息基本业务。 ◆要求 课程信息包括:课程编号、课程名称、课程性质、总学时、学分、课程人数上限。 选课信息包括:学号、姓名、...
  • 学生选课系统 c语言

    千次阅读 2017-05-07 18:51:00
    2 *主题:学生选修课程系统设计 3 * 4 *设计要求: 5 *1.添加功能:程序能够任意添加课程学生记录,可提供选择界面供用户选择所需要添加的类别,要求编号要唯一,如果添加了重复编号的记录是,则提示数据...
      1 /*********************************
      2 *主题:学生选修课程系统设计 
      3 * 
      4 *设计要求: 
      5 *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加的类别,要求编号要唯一,如果添加了重复编号的记录是,则提示数据添加重复并取消添加。 
      6 *2.查询功能:可根据编号、姓名等信息对已添加的同学和课程记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 
      7 *3.显示功能:可显示当前系统中所有学生和课程的记录,每条记录占据一行。 
      8 *4.编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 
      9 *5.删除功能:主要实现对已添加的学生和课程记录进行删除。如果当前系统中没有对应的记录,则提示“记录为空!”并返回操作。 
     10 *6.统计功能:能根据多种参数进行统计。能统计学生人数、课程门数、选修某门课程的学生的相关信息。 
     11 *
     12 *********************************/
     13 /* 
     14 *    Verson:2.0(basic) 
     15 *    
     16 *    History: 完成课程信息的录入,查询等操作;完成选课功能(2017-05-05 20:30:00-01:20:00) 
     17 *
     18 *    Author:universes 
     19 *
     20 *
     21 *********************************/
     22 /* 
     23 *    Verson:1.9
     24 *    
     25 *    History:完成了学生信息的查询操作 (2017-05-04 22:00:32-01:11:00) 
     26 *
     27 *    Author:universes 
     28 *
     29 *
     30 ********************************/
     31 /* 
     32 *    Verson:1.5
     33 *    
     34 *    HIstory2:添加查重功能 (2017-05-02 23:39:19-01:06:05) 
     35 *    History1:完成了用户对课程和学生信息的添加操作(没有查重功能)(2017-05-02 22:06:13-23:39:19) 
     36 *
     37 *    Author:universes
     38 *
     39 *
     40 ********************************/
     41 /* 
     42 *    Verson:1.0 
     43 *
     44 *    History:完成了用户的选择功能框架(2017-04-19 22:06:13-22:40:47) 
     45 *
     46 *    Author:universes 
     47 *
     48 *
     49 ********************************/
     50 #include <stdio.h>
     51 #include <malloc.h>
     52 #include <stdlib.h>
     53 #include <string.h>
     54 
     55 #define SIZE_STU 10
     56 #define SIZE_COU 10
     57 #define SIZE_SEL 10
     58 //函数声明部分 
     59 void home(void);
     60 void stu_operate(void);
     61 void cou_operate(void);
     62 void statistic(void);
     63 void choose(void);
     64 void delete_sel(int);
     65 //--学生信息部分: 
     66 void input_stu(void);
     67 void search_stu(void);
     68 void search_stu_id(void);
     69 void search_stu_name(void);
     70 void show_stu(void);
     71 void edit_stu(void);
     72 void renew_stu(void); 
     73 void delete_stu(void);
     74 //--课程信息部分: 
     75 void input_cou(void);
     76 void search_cou(void);
     77 void search_cou_id(void);
     78 void search_cou_name(void);
     79 void show_cou(void);
     80 void edit_cou(void);
     81 void renew_cou(void); 
     82 void delete_cou(void);
     83 
     84 /*学生信息结构体*/
     85 struct student_info {
     86     char stu_ID[9];
     87     char stu_name[5];
     88     char sex[9];
     89     char age[9];
     90     char collage[9];
     91     char grade[9];
     92     char contact[9];
     93 }stu[SIZE_STU];
     94 
     95 /*课程信息结构体*/
     96 struct course_info {
     97     char course_ID[9];
     98     char course_name[9];
     99     char property[9];
    100     char period[9];
    101     char credit[9];
    102     char time[9];
    103     int people;
    104 }cou[SIZE_COU];
    105 
    106 /*选课记录结构体*/
    107 struct select {
    108     int s;//存放学生信息的数组下标 
    109     int c;//存放课程信息的数组下标 
    110 }sel[SIZE_SEL]; 
    111 
    112 //全局变量i,j,x分别是学生,课程,选课信息数组下标
    113 int i = -1;
    114 int j = -1;
    115 int x = -1;
    116 
    117 int main(void){
    118     //进入欢迎界面 
    119     home();
    120     return 0;
    121 }
    122 
    123 //欢迎界面 
    124 void home(void) {
    125     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
    126     int h;
    127     printf("\n\n                        请选择你要进行的操作:");
    128     printf("\n\n                             1.学生操作");
    129     printf("\n                             2.课程操作");
    130     printf("\n                             3.开始选课");
    131     printf("\n                             4.选课统计");
    132     printf("\n                             5.退出系统");
    133     printf("\n                                                      ");
    134     printf("\n                        请输入:");
    135     scanf("%d",&h);
    136     system("cls");
    137     switch(h){
    138         case 1:
    139             stu_operate();
    140             break;
    141         case 2:
    142             cou_operate(); 
    143             break;
    144         case 3:
    145             choose();
    146             break;
    147         case 4:
    148             statistic();
    149             break;
    150         default:
    151             system("cls");
    152             printf("BYE!");
    153             break;
    154     }
    155 }
    156 /*开始选课*/
    157 void choose(void){
    158     char stu_id[10],cou_id[10];
    159     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
    160     //输入选课学生信息 
    161     printf("\n\n                 请输入选课人学号:");
    162     fflush(stdin);
    163     scanf("%s",stu_id);
    164     int h,flag = 0;
    165     for(h = 0;h <= i;h++){
    166         if(strcmp(stu[h].stu_ID,stu_id)==0){
    167             flag = 0;
    168             break;
    169         } else {
    170             flag = 1;
    171         }
    172     }
    173     if(flag||i==-1){
    174         printf("\n                 不存在此学号\n");
    175         system("pause");
    176         system("cls");
    177         home();
    178     }
    179     //录入姓名信息 
    180     x++;
    181     sel[x].s = h; 
    182     //输入课程信息 
    183     printf("\n\n                 请输入选修课程号:");
    184     fflush(stdin);
    185     scanf("%s",cou_id);
    186     flag = 0;
    187     for(h = 0;h <= j;h++){
    188         if(strcmp(cou[h].course_ID,cou_id)==0){
    189             flag = 0;
    190             break;
    191         } else {
    192             flag = 1;
    193         }
    194     }
    195     if(flag||j==-1){
    196         printf("\n                 不存在此课程号\n");
    197         x--;
    198         system("pause");
    199         system("cls");
    200         home();
    201     }
    202     //录入课程信息
    203     sel[x].c = h;
    204     cou[h].people++; 
    205     printf("\n                 录入成功!\n");
    206     system("pause");
    207     system("cls");
    208     home();
    209 }
    210 /*删除选课记录*/
    211 void delete_sel(int q){//删除第q+1条记录 
    212 /*注意!本函数没有将x减1,请在函数外手动减1(考虑外层函数循环的需要)*/    
    213     int h;
    214     cou[sel[q].c].people--;
    215     for(h = q;q < x;h++){
    216         q++;
    217         sel[h].c = sel[q].c;
    218         sel[h].s = sel[q].s;
    219     }
    220     
    221 }
    222 //对学生记录进行操作
    223 void stu_operate(void) {
    224     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
    225     printf("\n\n                 请选择你要对学生记录进行的操作:");
    226     printf("\n\n                             1.添加");
    227     printf("\n                             2.查询");
    228     printf("\n                             3.显示");
    229     printf("\n                             4.返回主页面");
    230     printf("\n                                                      ");
    231     printf("\n                        请输入:");
    232     int i;
    233     scanf("%d",&i);
    234     system("cls");
    235     switch(i){
    236         case 1://添加学生信息 
    237             input_stu();
    238             break;
    239         case 2://查询学生信息 
    240             search_stu(); 
    241             break;
    242         case 3://显示所有学生信息
    243             show_stu(); 
    244             break;
    245         case 4:
    246             home();
    247             break; 
    248     }
    249 }
    250 //对课程记录进行操作 
    251 void cou_operate(void) {
    252     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
    253     printf("\n\n                 请选择你要对课程记录进行的操作:");
    254     printf("\n\n                             1.添加");
    255     printf("\n                             2.查询");
    256     printf("\n                             3.显示");
    257     printf("\n                             4.返回主页面");
    258     printf("\n                                                      ");
    259     printf("\n                        请输入:");
    260     int i;
    261     scanf("%d",&i);
    262     system("cls");
    263     switch(i){
    264         case 1:
    265             input_cou();
    266             break;
    267         case 2:
    268             search_cou();
    269             break;
    270         case 3:
    271             show_cou();
    272         case 4:
    273             home();
    274             break; 
    275     }
    276 }
    277 //选课信息统计记录
    278 void statistic(void){
    279     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
    280     printf("\n\n                     共有学生信息:%d 条",i+1); 
    281     printf("\n                     共有课程信息:%d 条",j+1);
    282     if(x == -1){
    283         printf("\n                       选课记录:0 条");
    284         printf("\n\n                     "); 
    285         system("pause");
    286         system("cls");
    287         home();
    288     } else {
    289         printf("\n\n                        选课记录 %d 条:",x+1);
    290         int m;
    291         for(m = 0;m <= x;m++){
    292             printf("\n                     ================");
    293             printf("\n                     第%d条",m+1);
    294             printf("\n                     学生学号:%s",stu[sel[m].s].stu_ID);
    295             printf("\n                     学生姓名:%s",stu[sel[m].s].stu_name);
    296             printf("\n                     课程号:%s",cou[sel[m].c].course_ID);
    297             printf("\n                     课程名:%s",cou[sel[m].c].course_name); 
    298         }
    299         printf("\n\n            "); 
    300         system("pause");
    301         system("cls");
    302         home();
    303     }
    304     
    305 }
    306 
    307 
    308 //--------------------------------------学生信息插入--------------------------------------
    309 void input_stu(void){
    310     char flag;
    311     FILE * fp;
    312     //--判断文件是否为空 
    313     fp = fopen("student.txt","r+");
    314     flag = fgetc(fp);
    315     if(flag==EOF){
    316         fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
    317     }
    318     fclose(fp);
    319     //-- 
    320     fp = fopen("student.txt","a+");
    321     if(fp == NULL){
    322         printf("打开文件失败!");
    323         system("cls");
    324         stu_operate();
    325     }
    326     printf("学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
    327     while(1){
    328         i++;
    329         scanf("%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
    330         //--数据查重
    331         int h; 
    332         for(h = 0;h < i;h++){
    333             if(i == 0) break;//第一条数据不需要查重 
    334             if (strcmp(stu[h].stu_ID,stu[i].stu_ID)==0) {
    335                 printf("该学号已存在,请重新输入!\n");
    336                 scanf("\n%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
    337                 h = -1;
    338             }
    339         }
    340         //-- 
    341         fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].stu_ID,stu[i].stu_name,stu[i].sex,stu[i].age,stu[i].collage,stu[i].grade,stu[i].contact);
    342         printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
    343         fflush(stdin); 
    344         scanf("%c",&flag); 
    345         fclose(fp);
    346         if(flag!='y'&&'Y') break;
    347         fp = fopen("student.txt","a");
    348     }
    349     renew_stu();
    350     system("cls");
    351     stu_operate();
    352 } 
    353 /*查询学生信息*/
    354 void search_stu(void){
    355     system("cls");
    356     printf("\n请选择查询方式:");
    357     printf("\n  1.学号查询");
    358     printf("\n  2.姓名查询");
    359     printf("\n请选择:");
    360     int h;
    361     scanf(" %d",&h);
    362     switch(h){
    363         case 1:
    364             search_stu_id();
    365             break;
    366         case 2:
    367             search_stu_name();
    368             break;
    369             
    370     } 
    371 }
    372 /*学号查询*/
    373 void search_stu_id(void){
    374     system("cls");
    375     char id[9];
    376     printf("\n输入学生的学号:");
    377     fflush(stdin); 
    378     scanf("%s",id);
    379     int h;
    380     for(h = 0;h <= i;h++){
    381         if(strcmp(stu[h].stu_ID,id)==0){
    382             system("cls");
    383             printf("查找成功!"); 
    384             printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
    385             printf("\n\t-----------------------------------------------------------------"); 
    386             printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    387             system("pause");
    388             system("cls");
    389             stu_operate();
    390         }
    391     }
    392     system("cls");
    393     printf("没有此学号!\n");
    394     system("pause");
    395     system("cls");
    396     stu_operate();
    397 } 
    398 /*姓名查询*/
    399 void search_stu_name(void){
    400     system("cls");
    401     char name[9];
    402     printf("\n输入学生的姓名:");
    403     fflush(stdin); 
    404     scanf("%s",name);
    405     int h;
    406     for(h = 0;h <= i;h++){
    407         if(strcmp(stu[h].stu_name,name)==0){
    408             system("cls");
    409             printf("查找成功!"); 
    410             printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
    411             printf("\n\t---------------------------------------------------------"); 
    412             printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    413             system("pause");
    414             system("cls");
    415             stu_operate();
    416         }
    417     }
    418     system("cls");
    419     printf("没有此姓名!");
    420     system("pause");
    421     system("cls");
    422     stu_operate();
    423 } 
    424 /*显示所有学生信息*/
    425 void show_stu(void){
    426     int h;
    427     if(i == -1){
    428         printf("\n还没有录入信息!\n");
    429         system("pause");
    430         system("cls");
    431         stu_operate();
    432     }
    433     system("cls");
    434     printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
    435     printf("\n\t---------------------------------------------------------"); 
    436     for(h = 0;h <= i;h++){
    437         printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    438     }
    439     //
    440     fflush(stdin);
    441     printf("\n\t1.修改");
    442     printf("\n\t2.删除"); 
    443     printf("\n\t3.返回");
    444     printf("\n\n  选择要进行的操作:");
    445     int flag;
    446     fflush(stdin);
    447     scanf("%d",&flag);
    448     switch(flag){
    449         case 1:
    450             edit_stu();
    451             break; 
    452         case 2:
    453             delete_stu();
    454             break;
    455         default:
    456             system("cls");
    457             stu_operate();
    458             break;
    459             
    460     } 
    461 }
    462 /*编辑学生信息*/
    463 void edit_stu(void){
    464     printf("\n输入需要编辑的学生的学号:");
    465     char id[10];
    466     getchar();
    467     scanf("%s",id);
    468     int h;
    469     for(h = 0;h <= i;h++){
    470         if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的行 
    471             system("cls");
    472             printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
    473             printf("\n\t---------------------------------------------------------"); 
    474             printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    475             printf("\n这是修改前的数据,请依次输入修改值:\n\t");
    476             fflush(stdin);
    477             scanf("%s %s %s %s %s %s %s",&stu[h].stu_ID,&stu[h].stu_name,&stu[h].sex,&stu[h].age,&stu[h].collage,&stu[h].grade,&stu[h].contact);
    478             int k;
    479             for(k = 0;k <= i;k++){
    480                 if(strcmp(stu[k].stu_ID,stu[h].stu_ID)==0){
    481                     if(k==h){
    482                         continue;
    483                     } else {//学号不唯一 
    484                         printf("\n此学号已存在!重新输入学号:");
    485                         fflush(stdin);
    486                         scanf("%s",&stu[h].stu_ID);
    487                         k = -1;
    488                     }
    489                 }
    490             }
    491             /*将修改信息写入文件*/
    492             //思想:将原文件重新写入一遍
    493             renew_stu();
    494             system("cls");
    495             printf("修改成功!\n");
    496             system("pause"); 
    497             system("cls");
    498             stu_operate();
    499         }
    500     }
    501     printf("\n此学号不存在!\n");
    502     system("pause");
    503     system("cls");
    504     stu_operate();
    505 }
    506 /*删除学生信息*/
    507 void delete_stu(void){
    508     printf("\n输入需要编辑的学生的学号:");
    509     char id[10];
    510     getchar();
    511     scanf("%s",id);
    512     int h;
    513     for(h = 0;h <= i;h++){
    514         if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的行 
    515             system("cls");
    516             //检查他/她是否选课了
    517             int a;
    518             for(a = 0;a <= x;a++){
    519                 if(h==sel[a].s){//选课了则将对应课程记录减1,以及选课数组减1 
    520                     delete_sel(a);
    521                     a = -1;
    522                     x--;
    523                     continue;
    524                 }
    525             } 
    526             //如果只有一条记录
    527             if(i==0){
    528                 i = -1;
    529                 renew_stu();
    530                 printf("修改成功!\n");
    531                 system("pause"); 
    532                 system("cls");
    533                 stu_operate();
    534             } 
    535             
    536             int k;
    537             for(k = h+1;k <= i;k++,h++){//将数组直接向前移动 
    538                 strcpy(stu[h].stu_ID,stu[k].stu_ID); 
    539                 strcpy(stu[h].stu_name,stu[k].stu_name); 
    540                 strcpy(stu[h].sex,stu[k].sex); 
    541                 strcpy(stu[h].grade,stu[k].grade); 
    542                 strcpy(stu[h].contact,stu[k].contact); 
    543                 strcpy(stu[h].collage,stu[k].collage); 
    544                 strcpy(stu[h].age,stu[k].age); 
    545             }
    546             /*将修改信息写入文件*/
    547             //思想:将原文件重新写入一遍
    548             renew_stu();
    549             i--;
    550             system("cls");
    551             printf("修改成功!\n");
    552             system("pause"); 
    553             system("cls");
    554             stu_operate();
    555         }
    556     }
    557     printf("\n此学号不存在!\n");
    558     system("pause");
    559     system("cls");
    560     stu_operate();
    561 }
    562 //--------------------------------------课程信息插入--------------------------------------
    563 void input_cou(void){
    564     char flag;
    565     FILE * fp;
    566     //--判断文件是否为空 
    567     fp = fopen("course.txt","r+");
    568     flag = fgetc(fp);
    569     if(flag==EOF){
    570         fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
    571     }
    572     fclose(fp);
    573     //-- 
    574     fp = fopen("course.txt","a+");
    575     if(fp == NULL){
    576         printf("打开文件失败!");
    577         system("cls");
    578         cou_operate();
    579     }
    580     printf("代码\t名称\t性质\t总学时\t学分\t开课学期\n");
    581     while(1){
    582         j++;
    583         scanf("%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
    584         //--数据查重
    585         int h; 
    586         for(h = 0;h < j;h++){
    587             if(j == 0) break;//第一条数据不需要查重 
    588             if (strcmp(cou[h].course_ID,cou[j].course_ID)==0) {
    589                 printf("该课程号已存在,请重新输入!\n");
    590                 scanf("\n%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
    591                 h = -1;
    592             }
    593         }
    594         //-- 
    595         fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[j].course_ID,cou[j].course_name,cou[j].property,cou[j].period,cou[j].credit,cou[j].time,cou[j].people);
    596         printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
    597         fflush(stdin); 
    598         scanf("%c",&flag); 
    599         fclose(fp);
    600         if(flag!='y'&&'Y') break;
    601         fp = fopen("course.txt","a");
    602     }
    603     renew_cou();
    604     system("cls");
    605     cou_operate();
    606 } 
    607 /*查询课程信息*/
    608 void search_cou(void){
    609     system("cls");
    610     printf("\n请选择查询方式:");
    611     printf("\n  1.课程号查询");
    612     printf("\n  2.课程名查询");
    613     printf("\n请选择:");
    614     int h;
    615     scanf(" %d",&h);
    616     switch(h){
    617         case 1:
    618             search_cou_id();
    619             break;
    620         case 2:
    621             search_cou_name();
    622             break;
    623             
    624     } 
    625 }
    626 /*课程号查询*/
    627 void search_cou_id(void){
    628     system("cls");
    629     char id[9];
    630     printf("\n输入课程号:");
    631     fflush(stdin); 
    632     scanf("%s",id);
    633     int h;
    634     for(h = 0;h <= j;h++){
    635         if(strcmp(cou[h].course_ID,id)==0){
    636             system("cls");
    637             printf("查找成功!"); 
    638             printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
    639             printf("\n\t-----------------------------------------------------------------"); 
    640             printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
    641             system("pause");
    642             system("cls");
    643             cou_operate();
    644         }
    645     }
    646     system("cls");
    647     printf("没有此课程号!\n");
    648     system("pause");
    649     system("cls");
    650     cou_operate();
    651 } 
    652 /*课程名查询*/
    653 void search_cou_name(void){
    654     system("cls");
    655     char name[9];
    656     printf("\n输入课程名:");
    657     fflush(stdin); 
    658     scanf("%s",name);
    659     int h;
    660     for(h = 0;h <= j;h++){
    661         if(strcmp(cou[h].course_name,name)==0){
    662             system("cls");
    663             printf("查找成功!"); 
    664             printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
    665             printf("\n\t---------------------------------------------------------"); 
    666             printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
    667             system("pause");
    668             system("cls");
    669             cou_operate();
    670         }
    671     }
    672     system("cls");
    673     printf("没有此课程名!");
    674     system("pause");
    675     system("cls");
    676     cou_operate();
    677 } 
    678 /*显示所有课程信息*/
    679 void show_cou(void){
    680     int h;
    681     if(j == -1){
    682         printf("\n还没有录入信息!\n");
    683         system("pause");
    684         system("cls");
    685         cou_operate();
    686     }
    687     system("cls");
    688     printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
    689     printf("\n\t-------------------------------------------------------------"); 
    690     for(h = 0;h <= j;h++){
    691         printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
    692     }
    693     //
    694     fflush(stdin);
    695     printf("\n\t1.修改");
    696     printf("\n\t2.删除"); 
    697     printf("\n\t3.返回");
    698     printf("\n\n  选择要进行的操作:");
    699     int flag;
    700     fflush(stdin);
    701     scanf("%d",&flag);
    702     switch(flag){
    703         case 1:
    704             edit_cou();
    705             break; 
    706         case 2:
    707             delete_cou();
    708             break;
    709         default:
    710             system("cls");
    711             cou_operate();
    712             break;
    713             
    714     } 
    715 }
    716 /*编辑课程信息*/
    717 void edit_cou(void){
    718     printf("\n输入需要编辑的课程号:");
    719     char id[10];
    720     getchar();
    721     scanf("%s",id);
    722     int h;
    723     for(h = 0;h <= j;h++){
    724         if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行 
    725             system("cls");
    726             printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期");
    727             printf("\n\t-------------------------------------------------------------"); 
    728             printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time);
    729             printf("\n这是修改前的数据,请依次输入修改值:\n\t");
    730             fflush(stdin);
    731             scanf("%s %s %s %s %s %s",&cou[h].course_ID,&cou[h].course_name,&cou[h].property,&cou[h].period,&cou[h].credit,&cou[h].time);
    732             int k;
    733             for(k = 0;k <= j;k++){
    734                 if(strcmp(cou[k].course_ID,cou[h].course_ID)==0){
    735                     if(k==h){
    736                         continue;
    737                     } else {//课程号不唯一 
    738                         printf("\n此课程号已存在,重新输入:");
    739                         fflush(stdin);
    740                         scanf("%s",&cou[h].course_ID);
    741                         k = -1;
    742                     }
    743                 }
    744             }
    745             /*将修改信息写入文件*/
    746             //思想:将原文件重新写入一遍
    747             renew_cou();
    748             system("cls");
    749             printf("修改成功!\n");
    750             system("pause"); 
    751             system("cls");
    752             cou_operate();
    753         }
    754     }
    755     printf("\n此课程号不存在!\n");
    756     system("pause");
    757     system("cls");
    758     cou_operate();
    759 }
    760 /*删除课程信息*/
    761 void delete_cou(void){
    762     printf("\n输入需要编辑的课程号:");
    763     char id[10];
    764     getchar();
    765     scanf("%s",id);
    766     int h;
    767     for(h = 0;h <= j;h++){
    768         if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行 
    769             system("cls");
    770             //如果只有一条记录
    771             if(j==0){
    772                 j = -1;
    773                 renew_cou();
    774                 printf("修改成功!\n");
    775                 system("pause"); 
    776                 system("cls");
    777                 cou_operate();
    778             }
    779             //查看是否有人选课
    780             if(cou[h].people!=0){//有人选课时
    781                 int a;
    782                 for(a = 0;a <= x;a++){
    783                     if(sel[a].c == h){
    784                         delete_sel(a);
    785                         a = -1;
    786                         x--;
    787                         continue;
    788                     }
    789                 }
    790             }
    791             int k;
    792             for(k = h+1;k <= j;k++,h++){//将数组直接向前移动 
    793                 strcpy(cou[h].course_ID,cou[k].course_ID); 
    794                 strcpy(cou[h].course_name,cou[k].course_name); 
    795                 strcpy(cou[h].property,cou[k].property); 
    796                 strcpy(cou[h].period,cou[k].period); 
    797                 strcpy(cou[h].credit,cou[k].credit); 
    798                 strcpy(cou[h].time,cou[k].time); 
    799             }
    800             /*将修改信息写入文件*/
    801             //思想:将原文件重新写入一遍
    802             renew_cou();
    803             j--;
    804             system("cls");
    805             printf("修改成功!\n");
    806             system("pause"); 
    807             system("cls");
    808             cou_operate();
    809         }
    810     }
    811     printf("\n此课程号不存在!\n");
    812     system("pause");
    813     system("cls");
    814     cou_operate();
    815 }
    816 
    817 //--功能函数
    818 /*更新系统数据至文件*/
    819 void renew_stu(void){
    820     FILE * fp;
    821     fp = fopen("student.txt","w+");
    822     if(fp == NULL){
    823         printf("\n打开文件失败,无法保存至文件。\n");
    824         fclose(fp);
    825         return ;
    826     }
    827     fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
    828     if(i == -1){
    829         fclose(fp);
    830         return;
    831     }
    832     int h;
    833     for(h = 0;h <= i;h++){
    834         fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
    835     }
    836     fclose(fp);
    837     
    838 } 
    839 void renew_cou(void){
    840     FILE * fp;
    841     fp = fopen("course.txt","w+");
    842     if(fp == NULL){
    843         printf("\n打开文件失败,无法保存至文件。\n");
    844         fclose(fp);
    845         return ;
    846     }
    847     fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
    848     if(j == -1){
    849         fclose(fp);
    850         return;
    851     }
    852     int h;
    853     for(h = 0;h <= j;h++){
    854         fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);    }
    855     fclose(fp);
    856     
    857 } 

     第一次发博客,挺激动的。写的是学生选课系统,也算是自己的第二个小项目,第一个是算术表达式,不怕丢人哈哈,写的过程中都是非常艰难,经常写到一半就写不下去了,因为一开始的构思就是错误的。当然,也谈不上什么构思,就是简单的想了一下大体的方向。所以到后面越来越难做,只好重新修改一遍。包括这次也是如此。以后这方面要小心,一定要先认真的构思一下。也有一部分原因是好久没有写c了,好几个月了,结构体和指针的一些知识都还给老师了,所以这次也算是边写边学了吧,哈哈~

    我编程的时间不长,所以这里面肯定有一些错误,或者存在更好的解决方案,欢迎上课!谢谢!

    ps:寻找一起学习的小伙伴!

    转载于:https://www.cnblogs.com/litlife/p/6821797.html

    展开全文
  • C语言程序设计 简单的 包括课程的具体信息 课程名称 课程种类 授课时间 实验时间 开课学期等内容
  •  假定有n门课程,每门课程课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。  试设计一选修课程系统,使之能提供以下...
  • 这是一个用C语言编写的学生选课管理系统,主要实现了,学生选课的功能,可以对数据进行修改、删除、录入等功能。特别适合学生课程设计

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

c语言课程设计学生选课系统

c语言 订阅