一个C语言实现的成绩查询系统
D1:
1.系统组成:
1.1一个初始登录界面,包含三个组件
1.登入
2.注册
3.退出
1.2一个账号系统登录界面,包括账号和密码,登录账号以后进入第三个界面
1.3学生系统
学生系统包括:
1.修改密码
2.考试
考试界面包括:
1.习题页面以及习题判断页面
2.完成答题以后的分数页面
3.完成答题以后退出
3.成绩查询
成绩查询界面包括:
1.考试时间
2.考试成绩
3.页面切换功能
4.选择输入框
退出到系统上一级
1.4管理员系统
管理员系统包括
1.修改密码
2.用户查询
用户查询系统包括
1.全部查询
2.条件查询
3.退出系统
3.成绩查询
成绩查询包括
1.考试时间
2.考试成绩
3.页面切换功能
4.选择输入框
退出到系统上一级
工程设计包括:
1.如何实现一个简单的gui界面
2.如何实现一个文件/系统的分段查询功能
3.如何打包成为一个exe文件
4.从哪个功能开始实现
模块化设计
1.习题模块设计
`//
// Created by Galaxy on 2026/1/5.
//
include"Main.h"
int kaoshixiti_1(int currentScore){
char userChoice;
// 输出考试系统信息
printf("考试系统\n\n");
printf("欢迎haha角色:学生\n");
printf("考试类型:C语言考试\n\n");
printf("日期:2024年12月2日\n\n");
// 输出题目信息
printf("第1题,分数20\n");
printf("题目:在16位系统中,C语言中,错误的int类型的常数的是()\n\n");
// 输出选项
printf("A)32768\n");
printf("B)0\n");
printf("C)037\n");
printf("D)0xAF\n\n");
// 获取用户选择
printf("请选择 ");
scanf(" %c", &userChoice);
// 检查答案(正确答案是a)
if (userChoice == 'a') {
currentScore += 20;
} else {
currentScore += 0;
}
return currentScore;
}
int kaoshixiti_2(int currentScore){
char userChoice;
// 输出考试系统信息
// 输出考试系统信息
printf("考试系统\n\n");
printf("欢迎haha 角色:学生 日期:2024年12月2日\n");
printf("考试类型:C语言考试\n\n");
// 输出题目信息
printf("第2题,分数20\n");
printf("题目:C语言程序的模块化是通过以下哪个选项实现的()\n\n");
// 输出选项
printf("A)变量\n");
printf("B)语句\n");
printf("C)函数\n");
printf("D)程序行\n\n");
// 获取用户选择
printf("请选择 ");
scanf(" %c", &userChoice);
// 检查答案(正确答案是c)
if (userChoice == 'c') {
currentScore += 20;
} else {
currentScore += 0;
}
return currentScore;
}
int kaoshixiti_3(int currentScore){
// 输出考试系统信息
char userChoice;
printf("考试系统\n\n");
printf("欢迎haha角色:学生\n");
printf("考试类型:C语言考试\n\n");
printf("日期:2024年12月2日\n\n");
// 输出题目信息
printf("第3题,分数20\n");
printf("题目:以下选项中叙述正确的是()\n\n");
// 输出选项
printf("A)函数体必须由 [ 开始 ]\n");
printf("B)C 程序必须由 main 语句开始 ▲\n");
printf("C)C 程序中的注释可以嵌套\n");
printf("D)C 程序中的注释必须在一行完成\n\n");
// 输出提示
printf("请选择");
// 检查答案(正确答案是a)
scanf(" %c", &userChoice);
if (userChoice == 'a') {
currentScore += 20;
} else {
currentScore += 0;
}
return currentScore;
}
int kaoshixiti_4(int currentScore){
char userChoice;
printf("考试系统\n\n");
printf("欢迎haha 角色:学生\n");
printf("考试类型:C语言考试\n\n");
printf("日期:2024年12月2日\n\n");
// 输出题目信息
printf("第4题,分数20\n");
printf("题目:C语言中整数-8在内存中存储形式是()\n\n");
// 输出选项(注意保持选项中的空格格式)
printf("A) 1111 1111 1111 1000\n");
printf("B) 1000 0000 0000 1000\n");
printf("C) 0000 0000 0000 1000\n");
printf("D) 1111 1111 1111 0111\n\n");
// 输出提示
printf("请选择");
scanf(" %c", &userChoice);
// 检查答案(正确答案是B)
if (userChoice == 'B') {
currentScore += 20;
} else {
currentScore += 0;
}
return currentScore;
}
int kaoshixiti_5(int currentScore){
char userChoice;
// 显示题目
printf("\n考试系统 - C语言考试\n");
printf("====================\n");
printf("题目:以下对C语言的描述中,正确的是()\n\n");
printf("A) C语言源程序中可以有重名的函数\n");
printf("B) 一个C项目可以有一个或多个.c文件构成\n");
printf("C) 最小的C语言源程序中没有任何内容\n");
printf("D) 一行只能写一条语句\n\n");
// 获取用户选择
printf("请选择 ");
scanf(" %c", &userChoice);
// 检查答案(正确答案是B)
if (userChoice == 'B') {
currentScore += 20;
} else {
currentScore += 0;
}
return currentScore;
}
int kaoshichengji()
{
int current_score = 0;
current_score = kaoshixiti_1(current_score);
current_score = kaoshixiti_2(current_score);
current_score = kaoshixiti_3(current_score);
current_score = kaoshixiti_4(current_score);
current_score = kaoshixiti_5(current_score);
printf("最终得分: %d\n", current_score);
return current_score;
}
`
2.数据对象设计
1.四张表格:




3.数据读写模块设计
4.exe封装模块设计
实际问题解决
1.多文件开发问题
解决方案:利用C语言设置.h文件以及.c文件并将.c文件加入Cmake文件来实现
2.项目顺序问题:
解决方案:从依赖度低的部分开始,即满足拓扑排序准则
项目顺序:首先实现那两个习题
3.考试习题的输入和输出是什么?是分数 0/20
4.接受传参问题
问题描述:函数没有接受返回值的参数,导致current_score的值一直是0.
5.如何保存全局变量:使用一个额外的.h文件进行保存
6.如何一一对应sql对象与结构体对象//该问题似乎无法解决(无法配置mysql环境),修改为配置文件环境
clion使用侧边栏链接到数据库以后如何使用、、最终决定放弃该方案并采用文件系统进行操作
7.文件系统读写
1.学习如何读写文件
1.1 文件流, 缓冲区 ,打开及关闭文件
单行文件读取

多行文件读取

按照字节读取

1.2写入文件

2.文件标准化输入输出
这里有一个很重要的问题,如何标准化读出流程呢?fscanf()
3.写数据库/文件问题
1.成绩写文件问题
4.数据库问题
1.数据库时间戳

浙公网安备 33010602011771号