c语言课程设计增加功能,c语言选课系统设计

发布时间:2023-01-06

本文目录一览:

  1. [请用C语言完成课程设计拜托了各位 谢谢](#请用C语言完成课程设计拜托了各位 谢谢)
  2. [C语言课程设计学生成绩管理系统 功能:学生成绩管理系统,每个学](#C语言课程设计学生成绩管理系统 功能:学生成绩管理系统,每个学)
  3. C语言课程设计
  4. c语言课程设计
  5. C语言课程设计,多媒体教室管理系统
  6. [C语言课程设计 题目为设计一个多功能计算软件实现功能 求完美的代码](#C语言课程设计 题目为设计一个多功能计算软件实现功能 求完美的代码)

请用C语言完成课程设计拜托了各位 谢谢

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
    char name[60];
    char ID[7];
    int score;
};
int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void px();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300]; // 这个数组用来保存所有的学生信息 和文件里面的一致
int Number = 0; // 记录总的学生人数
void main() {
    int choose = 0;
    FILE *fp = NULL;
    char yesorno;
    if ((fp = fopen("C://student.dat", "rb")) == NULL) {
        printf("\n=========提示:文件不存在,是否要创建一个?(y/n)\n");
        scanf("%c", &yesorno);
        if (yesorno == 'y' || yesorno == 'Y') {
            // 这里仅为了建立文件
            fp = fopen("C://student.dat", "wb");
            fclose(fp);
        } else {
            exit(0);
        }
    } else {
        Number = dq(st); // 要是文件只能够已经有数据 将数据初始化到数组中
    }
    system("cls");
    while (true) {
        xianshi();
        printf("\t\t====请选择:");
        scanf("%d", &choose);
        system("cls");
        switch (choose) {
            case 0:
                exit(0); // 退出
                break;
            case 1:
                add();
                fh(); // 增加学生成绩
                break;
            case 2:
                select();
                fh(); // 查看学生成绩
                break;
            case 3:
                chazhao();
                fh(); // 查找
                break;
            case 4:
                del();
                fh(); // 删除
                break;
            case 5:
                tj();
                fh(); // 统计
                break;
            case 6:
                px();
                fh(); // 排序
                break;
            case 7:
                bjg();
                fh(); // 输出不及格
                break;
            case 8:
                xg();
                fh(); // 修改
                break;
            case 9:
                zz();
                fh(); // 作者
                break;
            case 10:
                bca();
                fh(); // 保存数据
                break;
            default:
                break;
        }
        fflush(stdin);
        getchar();
        system("cls");
    }
}
void bca() {
    printf("\t=====程序在运行时已自动保存.....\n");
}
void fh() {
    printf("\t===按Enter键返回主菜单\n");
}
void xg() { // 修改学生信息
    int way = 0;
    printf("请选择修改查找方式\n");
    printf("1 按姓名查找修改\n");
    printf("2 按学号查找修改\n");
    scanf("%d", &way);
    switch (way) {
        case 1:
            xmxg();
            break;
        case 2:
            xhxg();
            break;
        default:
            printf("输入有误,结束!\n");
            break;
    }
}
// 按姓名修改
void xmxg() {
    FILE *fp = NULL;
    char name[60];
    int i = 0;
    int changeIndex = 0;
    int index = 0;
    printf("请输入要修改的学生姓名:");
    scanf("%s", name);
    for (i = 0; i < Number; i++) {
        if (strcmp(name, st[i].name)) {
            changeIndex = i; // 保存要修改的人的下标
        }
        break;
    }
    printf("\t姓名\t学号\t成绩\n");
    printf("\t%s\t%s\t%d\n\n", st[changeIndex].name, st[changeIndex].ID, st[changeIndex].score);
    printf("请重新输入该学生信息");
    printf("姓名:");
    scanf("%s", st[changeIndex].name);
    printf("学号:");
    scanf("%s", st[changeIndex].ID);
    printf("成绩:");
    scanf("%d", &st[changeIndex].score);
    // 信息修改后重新更新文件里面的数据 以保持数据一致性
    fp = fopen("C://student.dat", "wb");
    for (i = 0; i < Number; i++) {
        fwrite(&st[i], sizeof(struct student), 1, fp);
    }
    fclose(fp);
}
void xhxg() { // 按学号修改
    FILE *fp = NULL;
    char id[60];
    int i = 0;
    int changeIndex = 0;
    int index = 0;
    printf("请输入要修改的学生学号:");
    scanf("%s", id);
    for (i = 0; i < Number; i++) {
        if (strcmp(id, st[i].ID)) {
            changeIndex = i; // 保存要修改的人的下标
        }
        break;
    }
    printf("\t姓名\t学号\t成绩\n");
    printf("\t%s\t%s\t%d\n\n", st[changeIndex].name, st[changeIndex].ID, st[changeIndex].score);
    printf("请重新输入该学生信息");
    printf("姓名:");
    scanf("%s", st[changeIndex].name);
    printf("学号:");
    scanf("%s", st[changeIndex].ID);
    printf("成绩:");
    scanf("%d", &st[changeIndex].score);
    // 信息修改后重新更新文件里面的数据 以保持数据一致性
    fp = fopen("C://student.dat", "wb");
    for (i = 0; i < Number; i++) {
        fwrite(&st[i], sizeof(struct student), 1, fp);
    }
    fclose(fp);
    printf("\t=======修改成功\n");
}
void bjg() { // 输出不及格人数
    int i = 0;
    printf("以下是不及格:\n");
    printf("\t姓名\t学号\t成绩\n");
    for (i = 0; i < Number; i++) {
        if (st[i].score < 60) {
            printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
        }
    }
}
void px() { // 排序
    struct student temp;
    int wantNUmber = 0;
    int i = 0;
    int j = 0;
    for (i = 0; i < Number - 1; i++) {
        for (j = i; j < Number - 1; j++) {
            if (st[j].score < st[j + 1].score) {
                temp = st[j];
                st[j] = st[j + 1];
                st[j + 1] = temp;
            }
        }
    }
    printf("你想输出前几名的成绩:");
    scanf("%d", &wantNUmber);
    if (wantNUmber > Number) {
        wantNUmber = Number;
    }
    printf("\t姓名\t学号\t成绩\n");
    for (i = 0; i < wantNUmber; i++) {
        printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
    }
}
void tj() { // 统计
    int i = 0;
    double sum = 0.0;
    for (i = 0; i < Number; i++) {
        sum += st[i].score;
    }
    printf("全班总分为:%f\n", sum);
    printf("平均分为:%f\n", sum / Number);
}
void del() { // 删除
    int n = 0;
    printf("1 按姓名删除\n");
    printf("2 按学号删除\n");
    scanf("%d", &n);
    switch (n) {
        case 1:
            xmsc();
            break;
        case 2:
            xhsc();
            break;
    }
}
void xmsc() { // 按姓名删除
    FILE *fp = NULL;
    char name[60];
    int i = 0;
    int j = 0;
    printf("请输入要删除的学生姓名:");
    scanf("%s", name);
    for (i = 0; i < Number; i++) {
        if (strcmp(name, st[i].name) == 0) { // 如果查找到就删除
            for (j = i; j < Number - 1; j++) {
                st[j] = st[j + 1];
            }
            Number--;
        }
    }
    // 将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
    fp = fopen("C://student.dat", "wb");
    for (i = 0; i < Number; i++) {
        fwrite(&st[i], sizeof(struct student), 1, fp);
    }
    fclose(fp);
    printf("删除成功;\n");
}
void xhsc() { // 按学号删除
    FILE *fp = NULL;
    char id[60];
    int i = 0;
    int j = 0;
    printf("请输入要删除的学生学号:");
    scanf("%s", id);
    for (i = 0; i < Number; i++) {
        if (strcmp(id, st[i].ID) == 0) { // 如果查找到就删除
            for (j = i; j < Number - 1; j++) {
                st[j] = st[j + 1];
            }
            Number--;
        }
    }
    // 将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
    fp = fopen("C://student.dat", "wb");
    for (i = 0; i < Number; i++) {
        fwrite(&st[i], sizeof(struct student), 1, fp);
    }
    fclose(fp);
    printf("删除成功;\n");
}
void chazhao() { // 查找学生
    int n = 0;
    printf("1 按姓名查找\n");
    printf("2 按学号查找\n");
    scanf("%d", &n);
    switch (n) {
        case 1:
            xmcz();
            break;
        case 2:
            xhcz();
            break;
        default:
            printf("输入有误,结束!\n");
            break;
    }
}
void xhcz() { // 按学号查找
    char id[7];
    int i = 0;
    printf("请输入要查找学生学号:");
    scanf("%s", id);
    system("cls");
    printf("\t姓名\t学号\t成绩\n");
    for (i = 0; i < Number; i++) {
        if (strcmp(id, st[i].ID) == 0) {
            printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
        }
    }
}
void xmcz() { // 按姓名查找
    char name[7];
    int i = 0;
    printf("请输入要查找学生姓名:");
    scanf("%s", name);
    system("cls");
    printf("\t姓名\t学号\t成绩\n");
    for (i = 0; i < Number; i++) {
        if (strcmp(name, st[i].name) == 0) {
            printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
        }
    }
}
void zz() {
    printf("\t**********************************************************\n\n");
    printf("\t^^^^^^^^^^ 武汉工程大学邮电与信息工程学院 ^^^^^^^^^^\n\n");
    printf("\t^^^^^^^^^ 07网络与安全管理2班 ^^^^^^^^^\n\n");
    printf("\t^^^^^^^^^ 易樊制作 ^^^^^^^^\n\n");
    printf("\t^^^^^^^^^ 禁止CTRL+C 谢谢合作 ^^^^^^^^^\n\n");
    printf("\t^^^^^^^^^^ QQ:895115828\n\n");
    printf("\t**********************************************************\n\n");
}
void select() { // 查看学生
    int i = 0;
    printf("以下是全部学生成绩\n");
    printf("\t姓名\t学号\t成绩\n");
    for (i = 0; i < Number; i++) {
        printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
    }
}
void add() { // 增加学生
    int numberTemp = 0;
    int i = 0;
    struct student temp; // 临时保存信息
    printf("请输入要增加学生成绩个数:");
    scanf("%d", &numberTemp);
    for (i = 0; i < numberTemp; i++) {
        printf("输入第%d个同学信息\n", i + 1);
        printf("姓名:");
        scanf("%s", temp.name);
        printf("学号:");
        scanf("%s", temp.ID);
        printf("成绩:");
        scanf("%d", &temp.score);
        st[Number++] = temp; // 将刚添加的写入到数组
        bc(&temp); // 将刚添加的写入到文件
    }
    printf("添加成功\n");
}
void bc(struct student *st) {
    FILE *fp = NULL;
    fp = fopen("C://student.dat", "ab+");
    fwrite(st, sizeof(struct student), 1, fp);
    fclose(fp);
}
int dq(struct student st[]) {
    FILE *fp = NULL;
    int i = 0;
    fp = fopen("C://student.dat", "rb");
    while (fread(&st[i], sizeof(struct student), 1, fp)) {
        i++;
    }
    fclose(fp);
    return i;
}
void xianshi() {
    printf("\t*****************************************************************\n");
    printf("\t*                                                               *\n");
    printf("\t*                   学生成绩管理系统                          *\n");
    printf("\t*                                                               *\n");
    printf("\t* [1] 增加学生成绩       [2] 查看学生成绩                     *\n");
    printf("\t* [3] 查找学生成绩       [4] 删除学生成绩                     *\n");
    printf("\t* [5] 统计(总成绩和平均分) [6] 输出前N名学生成绩            *\n");
    printf("\t* [7] 输出不及格人数       [8] 修改学生信息                   *\n");
    printf("\t* [9] 关于作者            [10] 保存数据                      *\n");
    printf("\t* [0] 退出系统                                                *\n");
    printf("\t*****************************************************************\n");
}

C语言课程设计学生成绩管理系统 功能:学生成绩管理系统,每个学

参考以下,部分代码改了即可:首先将记录储存再TXT文件下,格式如下所示:

学号 姓名 性别 等级 笔试 机试 类别
1 张三 男 二级 66 77
2 李四 男 三级 88 99
3 张二 男 二级 40 60
4 李二 女 二级 50 59
5 王五 女 三级 99 99
6 王三 男 二级 77 61
7 刘四 男 四级 60 59
8 刘五 女 二级 88 77
9 张五 女 二级 64 81
10 李六 女 二级 59 30

代码如下,本人亲自编写,无错误通过

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
void add_information(string str);
void delete_information(string str);
void edit_information(string str);
void scanf_information(string str);
void score_scanf(string str);
void pingfen(string str);
void pass_total(string str);
main() {
    cout << "请输入选项:";
    int number;
    string name; // 统计用的科目名
    switch (number) {
        case 1:
            cout << "请输入选项:";
            switch (number) {
                case 1:
                    add_information(str);
                    break;
                case 2:
                    delete_information(str);
                    break;
                case 3:
                    edit_information(str);
                    break;
                case 4:
                    scanf_information(str);
                    break;
                default:
                    cout << "输入错误!";
                    break;
            }
            break;
        default:
            cout << "输入错误!";
            break;
    }
}
void add_information(string str) {
    ofstream outstream;
    outstream.open("temp.txt");
    if (!outstream) {
        cout << "打开文件失败!";
        exit(1);
    }
    outstream << str;
    outstream.close();
}
void delete_information(string str) {
    ifstream instream;
    ofstream outstream;
    string name_1;
    string a, b, c, d, e, f;
    outstream.open("temp.txt");
    bool flag = 0; // 是否查找到
    while (1) { // 删除操作,自己感觉都有点麻烦
        instream >> name_1;
        if (name_1 != a) {
            outstream << name_1 << " " << a << " " << b << " " << c << " " << d << " " << e << " " << f << endl;
        }
    }
    outstream.close();
}
void edit_information(string str) {
    ifstream instream;
    ofstream outstream;
    string name_1;
    string a, b, c, d, e, f;
    outstream.open("temp.txt");
    bool flag = 0; // 是否查找到
    while (1) { // 删除操作,自己感觉都有点麻烦
        instream >> name_1;
        if (name_1 == a) { // 找到修改的记录
            flag = 1;
            cout << "请输入新的信息:";
            cin >> a >> b >> c >> d >> e >> f;
        }
        outstream << name_1 << " " << a << " " << b << " " << c << " " << d << " " << e << " " << f << endl;
    }
    outstream.close();
}
void scanf_information(string str) {
    ifstream instream;
    string name_1;
    string a, b, c, d, e, f, g;
    bool flag = 0; // 是否查找到
    while (1) { // 删除操作,自己感觉都有点麻烦
        instream >> name_1;
        if (name_1 == g) { // 找到修改的记录
            flag = 1;
            cout << "找到记录:" << a << " " << b << " " << c << " " << d << " " << e << " " << f << endl;
        }
    }
    if (!flag) {
        cout << "未找到记录!";
    }
}
void score_scanf(string str) {
    ifstream instream;
    string name_1;
    string a, b, c, d, e, f, g;
    int count = 0;
    while (1) { // 删除操作,自己感觉都有点麻烦
        instream >> name_1;
        if (g == "优秀" || g == "良好" || g == "及格") {
            count++;
        }
        if (instream.eof()) {
            break;
        }
    }
    cout << "合格的人数为:" << count << endl;
}
void pingfen(string str) {
    // 实现评分功能
}
void pass_total(string str) {
    // 实现统计功能
}

C语言课程设计

// 我以前的作业

游戏说明

  1. 开始游戏
    1. 系统随机产生一位不重复的N位数字。N的大小与等级有关。
    2. 初级:N=3 中级:N=4 高级:N=5
    3. 游戏者输入所猜的不重复数字,并按回车提交。提交的数据数应与N的大小一致,当数据位数大于N时,只取前N位。
    4. 系统将提交的数与它自动产生的数进行比较,输出结果“AB”形式。其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
    5. 游戏者有限定次数的猜测机会,在规定次数内完成,则游戏成功,否则,游戏失败。其中,猜测次数与等级有关:
      • 初级:10次
      • 中级:9次
      • 高级:8次。
    6. 按完成游戏所用的时间和次数计算游戏者所得分数,游戏等级越高,猜测所用的次数越少,得分越高!若游戏者得分比系统已经保存的分数的高,将提示要求输入游戏者信息,并且保存在最佳排行之中。
  2. 等级设置
    • 游戏者可以自行设置游戏等级:初级,中级和高级。
  3. 最佳排行
    • 在最佳排行中,游戏者可以查看当前游戏的最佳排行。
  4. 游戏说明
    • 在游戏说明中,游戏者可以查看游戏规则。

总体设计

本课程设计对模块设计的要求如下:

  1. 要求使用多文件方式实现设计;
  2. 要求在各个文件内实现结构化设计;
  3. 每个模块作为一个单独的C文件,每个文件内的函数如表所示,表中给出了各个函数的功能说明。
  4. 宏和数据结构等放在头文件中,并使用条件编译。

文件及函数组成

源文件 函数名或其他成分 功能
record.h ASK 宏定义 结构声明
game_control.c Game_rank 设置游戏等级 Game_explain 输出游戏说明
game_register.c Tiptop_record 记录最高分 Tiptop_output 输出最佳排行
game.c Game_main 开始游戏中心 Build_number 获取系统随机数字
Game_in_out 获取游戏者数据和输出结果 Time_command 时间控制
Game_result 游戏结果处理输出
record.c main 主函数 Menu_select 选择菜单
manage_menu 处理菜单

函数设计

  1. 头部文件
    • 文件名称:record.h
    • 功能:声明函数原型,包含文件及自定义宏和数据结构。
    • 要求:报告是否能正常打开文件执行操作。
  2. 设置游戏等级函数
    • 函数原型:void Game_rank(void)
    • 功能:可由游戏者自行设置游戏等级
    • 参数:void
    • 返回值:void
    • 要求:如果游戏者没有进行等级设定,则默认初级进行游戏。
  3. 输出游戏说明函数
    • 函数原型:void Game_explain()
    • 功能:输出游戏规则说明
    • 参数:void
    • 返回值:void
    • 要求:说明游戏相应的按键,保证游戏者按照说明。
  4. 记录最高分函数
    • 函数原型:void Tiptop_register(int)
    • 功能:把从Get_player函数得到的游戏者信息和游戏的积分信息一同保存到指定路径的Tiptop_register.dat文件中
    • 参数:int S;S为游戏积分
    • 返回值:void
    • 要求:要求把Tiptop1.txt(初级最高分) Tiptop2.txt(中级最高分) Tiptop3.txt(高级最高分)原来有的信息替换为现在的信息,并且只有积分大于原有信息的第十名,才会被以替换的方式记录;并且是降序的方式排列的。
  5. 输出最佳排行函数
    • 函数原型:void Tiptop_out()
    • 功能:输出最佳排行信息
    • 参数:void
    • 返回值:void
    • 要求:没有信息的时候输出提示,有信息时按降序排列输出全部信息。
  6. 开始游戏中心函数
    • 函数原型:void Game_main()
    • 功能:调用Time_control、Build_number等函数,进行游戏的整体控制
    • 参数:void
    • 返回值:void
    • 要求:注意函数的完整性,保证游戏顺利进行,