c语言课程表,c语言课程表的管理与实现

发布时间:2022-11-25

本文目录一览:

  1. 如何用C语言实现大学排课
  2. 用c语言如何编辑课程表,来个大神教教吧!最后做出来的课程表格式是exe格式,自己怎么也做不好。
  3. 急急!!用C语言编课程表,要求:每星期5天,每天不超过6节课,有语文、数学、英语、政治、历史、音乐
  4. c语言怎样编写课程表,请问程序怎样写?
  5. 用C语言怎么编出来课程表

如何用C语言实现大学排课

#include stdio.h
#include stdlib.h
#define M 100
struct Student {
    int StudentID;
    char name[50];
    float PeacetimeScore;
    float TestScore;
    float TotalScore;
};
int main() {
    int InputInformation (struct Student student[]);
    void TotalScoreStatistics (struct Student student[], int n);
    void TotalScoreSort (struct Student student[], int n);
    void ScoreRevise (struct Student student[], int n);
    void display (struct Student student[], int n);
    int menu ();
    int n = 1, count;
    struct Student student[M];
    while (n) {
        n = menu ();
        switch (n) {
            case 1:
                count = InputInformation (student);
                break;
            case 2:
                TotalScoreStatistics (student, count);
                break;
            case 3:
                TotalScoreSort (student, count);
                break;
            case 4:
                ScoreRevise (student, count);
                break;
            case 5:
                display (student, count);
                break;
            case 0:
                printf ("您选择了退出!\n");
                break;
            default :
                printf ("输入有误,重新输入!\n");
                break;
        }
    }
    return 0;
}
int menu () {
    int n, i;
    char * menu[] = {
        "* * * * * * * * * * * * * * *MENU* * * * * * * * * * * * * * *",
        " 1.学生信息录入",
        " 2.总成绩统计",
        " 3.总成绩排序",
        " 4.成绩更改",
        " 5.显示所有学生信息",
        " 0.退出",
        "* * * * * * * * * * * * * * *MENU* * * * * * * * * * * * * * *"
    };
    for (i = 0; i < 8; i++)
        printf ("%s\n", menu[i]);
    printf ("请选择(输入序号):");
    scanf ("%d", &n);
    return n;
}
int InputInformation (struct Student student[]) {
    int i;
    FILE *fp;
    for (i = 0; ; i++) {
        printf ("输入第 %d 个学生的如下信息:\n", i+1);
        printf ("学号:");
        scanf ("%d", &student[i].StudentID);
        if (student[i].StudentID == 0) //如果学号输入是0则结束输入
            break;
        getchar ();
        printf ("姓名:");
        gets (student[i].name);
        printf ("平时成绩:");
        scanf ("%f", &student[i].PeacetimeScore);
        printf ("考试成绩:");
        scanf ("%f", &student[i].TestScore);
        fp = fopen ("myfile.txt", "a");
        if (fp == NULL) {
            printf ("文件打开失败!\n");
            exit (-1);
        }
        fprintf (fp, "%d %s %.2f %.2f\n", student[i].StudentID, student[i].name, student[i].PeacetimeScore, student[i].TestScore);
    }
    fclose (fp); //关闭文件
    return i;
}
void TotalScoreStatistics (struct Student student[], int n) {
    int i;
    printf ("\n 学号 姓名 总成绩\n\n");
    for (i = 0; i < n; i++) {
        student[i].TotalScore = student[i].PeacetimeScore * 0.2 + student[i].TestScore * 0.8;
        printf (" %d %s %.2f\n", student[i].StudentID, student[i].name, student[i].TotalScore);
    }
}
void TotalScoreSort (struct Student student[], int n) {
    int i, j;
    float temp;
    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (student[i].TotalScore < student[j].TotalScore) {
                temp = student[i].TotalScore;
                student[i].TotalScore = student[j].TotalScore;
                student[j].TotalScore = temp;
            }
        }
    }
    for (i = 0; i < n; i++)
        printf ("%.2f ", student[i].TotalScore);
    printf ("\n");
}
void ScoreRevise (struct Student student[], int n) {
    int m, k, i = 0;
    FILE *fp;
    printf ("输入要修改的学生的学号:");
    scanf ("%d", &k);
    printf ("您是要修改平时成绩还是考试成绩呢?\n");
    printf ("1.修改平时成绩\n");
    printf ("2.修改考试成绩\n");
    printf ("输入您的选择:");
    scanf ("%d", &m);
    for (i = 0; i < n; i++) {
        if (student[i].StudentID == k) {
            if (m == 1) {
                // 修改平时成绩
                printf("请输入新的平时成绩:");
                scanf("%f", &student[i].PeacetimeScore);
            } else if (m == 2) {
                // 修改考试成绩
                printf("请输入新的考试成绩:");
                scanf("%f", &student[i].TestScore);
            }
            student[i].TotalScore = student[i].PeacetimeScore * 0.2 + student[i].TestScore * 0.8;
            printf("修改成功!新的总成绩为:%.2f\n", student[i].TotalScore);
            break;
        }
    }
}
void display (struct Student student[], int n) {
    int i;
    printf ("\n 学号 姓名 平时成绩 考试成绩 总成绩\n\n");
    for (i = 0; i < n; i++) {
        printf (" %d %s %.2f %.2f %.2f\n", student[i].StudentID, student[i].name, student[i].PeacetimeScore, student[i].TestScore, student[i].TotalScore);
    }
}

用c语言如何编辑课程表,来个大神教教吧!最后做出来的课程表格式是exe格式,自己怎么也做不好。

写了一个,比较笨,不知行不行 生成exe程序在 Release 目录下

急急!!用C语言编课程表,要求:每星期5天,每天不超过6节课,有语文、数学、英语、政治、历史、音乐

#include stdio.h
#include time.h
#include stdlib.h
#define DAYS_OF_A_WEEK 5
#define MAX_CLASSES_A_DAY 6
#define MAX_CLASS_NAME_LEN 10
#define TOTAL_CLASSESS_TYPE_NUM 5
typedef struct {
    char class_name[MAX_CLASS_NAME_LEN];
    int class_num_per_week;
} Class;
Class class_data[]= {
    {"语文",3},{"数学",3},{"英语",3},{"政治",2},{"历史",2},{"音乐",2}
};
char week_days_name[][10] = {"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
char class_arrange_table[MAX_CLASSES_A_DAY][DAYS_OF_A_WEEK][MAX_CLASS_NAME_LEN] = {0};
int main(int argc, char *argv[]) {
    int i,j,k;
    int row,col;
    srand(time(NULL));
    for(i = 0; i < TOTAL_CLASSESS_TYPE_NUM; i++) {
        for(j = 0; j < class_data[i].class_num_per_week; j++) {
            row = rand() % DAYS_OF_A_WEEK;
            col = rand() % MAX_CLASSES_A_DAY;
            while(strlen(class_arrange_table[row][col]) != 0) {
                row = rand() % DAYS_OF_A_WEEK;
                col = rand() % MAX_CLASSES_A_DAY;
            }
            strcpy(class_arrange_table[row][col], class_data[i].class_name);
        }
    }
    printf("%4s","");
    for(i = 1; i <= DAYS_OF_A_WEEK; i++) {
        printf("|%10s", week_days_name[i]);
    }
    printf("\n");
    for(i = 0; i < MAX_CLASSES_A_DAY; i++) {
        for(j = 0; j < 4 + DAYS_OF_A_WEEK * 10 + DAYS_OF_A_WEEK; j++) {
            printf("-");
        }
        printf("\n");
        printf("%4d", i + 1);
        for(j = 0; j < DAYS_OF_A_WEEK; j++) {
            printf("|%10s", class_arrange_table[i][j]);
        }
        printf("\n");
    }
    for(j = 0; j < 4 + DAYS_OF_A_WEEK * 10 + DAYS_OF_A_WEEK; j++) {
        printf("-");
    }
    printf("\n");
    return 0;
}

c语言怎样编写课程表,请问程序怎样写?

//2020年3月12日编写
#include stdio.h
char c=' ';
void chang()//长函数
{
    printf("___________");
}
void kuang()//宽函数
{
    printf("|");
}
void zon(char cc)//总汇函数
{
    int a;
    printf("\n");
    printf("|");
    for(a=0;a<4;a++)
    {
        chang();
        if(a<3)
            printf("%c",cc);
    }
    printf("|");
}
void zon2(char a1[],char a2[],char a3[],char a4[])//总汇函数2
{
    printf("\n");
    printf("|%-11s|",a1);printf("%-11s|",a2);printf("%-11s|",a3);printf("%-11s|",a4);
}//函数;
main()
{
    int a,b;
    for(a=0;a<4;a++)//第一行
    {
        printf(" ");
        chang();
    }
    printf("\n|%21c课程表%20c|",c,c);
    zon(' ');
    zon2(" ", "1.2节", "3.4节", "5.6节");
    zon('|');
    zon2("星期一","语文","计算机","体育");//第二行
    zon('|');
    zon2("星期二","数学","政治","数学");//第三行
    zon('|');
    zon2("星期三","英语","体育","自习");//第四行
    zon('|');
    zon2("星期四","计算机","语文","体育");//第五行
    zon('|');
    zon2("星期五","计算机","英语","自习");//第六行
    zon('|');
}

用C语言怎么编出来课程表

一、功能模块概要说明:

  1. 输入函数
    • char* uscanf(int,int,int) //图形模式下输入函数,大小写26个字母0-9数字外加空格键为有效输入,可以使用BACKSPACE。
  2. 开始界面,退出界面和主界面
    • void starting() //开始界面
    • void end() //结束界面
    • char* index() //主选择界面函数,返回选择信息(字符串);
  3. 数据输入、创建链表模块
    • char* tinkey(char*,int,int) //输入切换处理
    • char* recourse(char*,int,int) //课程输入
    • int wdetect(struct person*,char*) //课程输入检测,检测课表一星期同一天同一时间段内课程安排是否重复,如果重复给出修改提示信息
    • char* infuse(char*,char*,int) //课表输入
    • struct course *ccreat(char*) //创建课程单向链表
    • struct person* pcreat(char *) //创建个人课表节点
    • char *infuse(char**,struct person**,struct person**,char*) //创建课表双向链表
  4. 课表输出
    • char *print(char*) //课表输出背景界面
    • char *pkey() //课表输出按纽界面及处理
    • int table(int,int,struct person*) //在指定区域一表格形式输出一个人的课表
    • int forebox(struct person*) //初略显示下三个人的课表提示
  5. 文件存储和装载
    • char* save(char *,struct person *) //保存为磁盘文件,在图形模式下进行文件读写操作之后,程序出现莫名其妙的异常显示情形
  6. 课表查询
    • struct person *pdemand(struct person *,char *) //按人名字查询其课表安排。
    • struct person* wddemand(struct person*,int) //按星期几查询课程安排情况。
    • struct person *cdemand(struct person *,char *) //按课程查询老师或学生课程安排情况。
    • char *demand(struct person *) // 查询切换,并显示查询结果,按名字查询一次只能一个。按星期几和课程查询可以查询到多个,如查询到多个接果,按任意键可依次输出。
  7. 排序
    • struct course *csort(struct course *) //按课程编号排序课表节点中课程链表
    • struct person *psort(struct person *) //按人学号或老师编号排序课表链表
    • char sort(struct person*) //排序切换,并提示排序结果
  8. 插入
    • char *insert(char *,struct person **,struct person **) //擦入课表节点
  9. 删除
    • char *delete(struct person **,char *) //按人名删除其课表节点

二、操作说明:

  1. Infuse: 选定这个键后按Enter进入学生输入菜单,你可以输入学生的学号,姓名,学生在一学期内的所学课程的课程名,课程号,学时,以及在一周内上课的地址。如果当输入某课程上课地址有重复时,系统自动发出报警信息,并提示出错的地方,以便修改。 当选定course时,表明此学生所学的该课程的信息输入完成再输入另外所学课程的信息,如上所写照样输入。 当选定finish时,并按回车键后,表明此学生在这一学期内所学的课程信息输入完成。如要继续输入学生的信息如前所述。 当选定back时,并按下回车键后,返回TIME TABLE主菜单,选择主菜单里的功能对所输入的信息进行处理。 当选定exit时,并按下回车键后,返回程序。结束程序。
  2. SAVE/LOAD: 选定此并按回车。此键作用对所输入的信息进行格式输出/载入。输入你要保存信息的文件名,文件格式系统自动生成。利用键盘上的方向键和TAB键进行控制。
  3. DEMAND: 按ENTER键开始输入,按反向键进行查询切换。当按星期几和课程查询时候,如遇到查询到多个结果,按任意键可依次输出直到完。
  4. INSERT: 按ENTER键开始输入,按反向键进行查询切换。输入同INFURE项。
  5. DELETE: 按ENTER键显示输入框开始输入。其他同上。
  6. SORT: 当提示框中SORT变为红色时候,表示被选中,按ENTER键开始插入,如成功给出提示信息。
  7. PRINT: 依次输出链表,如果输出链表为空则不进仍输出页面。NEXT为下一个,PRO为上一个。下面FORENOTICE 框显示后三个节点。
  8. EXIT: 退出系统。效果同按ESC。

三、例程:

#include stdio.h
#include stdlib.h
#include string.h
int main() {
    char *p[8][5],*a;
    int i=0,j=0,n;
    a=(char *)malloc(sizeof(char));
    for(j=0;j<5;j++) {
        for(i=0;i<8;i++) {
            printf("周%d第%d节",j+1,i+1);
            scanf("%s",a);
            p[j][i]=a;
            a=(char *)malloc(sizeof(char));
        }
    }
    printf("周一\t\t周二\t\t周三\t\t周四\t\t周五\n");
    for(j=0;j<5;j++) {
        for(i=0;i<8;i++) {
            printf("%s\t\t",p[j][i]);
        }
        printf("\n");
    }
    return 0;
}