根据提供的文件信息,我们可以分析出该段代码是用C语言编写的程序,旨在实现对数据库的基本操作,这里所说的数据库是Microsoft Access。以下是对该代码的关键知识点进行深入解析: ### 一、基本数据结构定义 #### 1. `count` 结构体 ```c typedef struct count {/*¼ṹ*/ char name[10]; int num; } count; ``` 这个结构体用于存储名称(最大长度为9个字符加上结束符)和一个整型数字。虽然在代码中没有明确使用此结构体的地方,但可以推测它可能用于计数或标识某种类型的数据。 #### 2. `st` 结构体 ```c typedef struct st { char name[10]; long Number; int Math; int C; int Amount; } st; ``` 这个结构体主要用于存储学生信息: - `name`: 学生姓名,最多支持9个字符加上结束符。 - `Number`: 学号,使用长整型表示。 - `Math`: 数学成绩。 - `C`: C语言课程成绩。 - `Amount`: 总分。 ### 二、全局变量声明 ```c st record[8]; count num[1]; char filename[10] = {"0"}; char filename2[10] = {"0"}; int Inputnum[8]; ``` 这些全局变量包括: - `record`: 一个包含8个`st`结构体的数组,用于存储学生信息。 - `num`: 包含1个`count`结构体的数组,用途未知。 - `filename`: 存储原始文件名的字符串,初始值为"0"。 - `filename2`: 存储修改后的文件名的字符串,初始值也为"0"。 - `Inputnum`: 一个包含8个整型元素的数组,用途未知。 ### 三、函数定义 #### 1. 主菜单函数 `MainMenu` ```c void MainMenu() {/*˵*/ printf("\n\t\t\t\t**********\n"); // 主菜单界面显示 } ``` 主菜单提供了多个选项,包括: - 1.录入 - 2.查询 - 3.删除 - 4.退出 - 5.排序 - 6.帮助 #### 2. 删除子菜单函数 `DelMenu` ```c void DelMenu() {/*ɾ˵*/ printf("\n\t\t\t\t************\n"); // 删除菜单界面显示 } ``` 删除菜单提供两个选项: - 1.按学号删除 - 2.帮助 #### 3. 排序子菜单函数 `RankingMenu` ```c void RankingMenu() {/*˵*/ printf("\n\t\t\t\t************\n"); // 排序菜单界面显示 } ``` 排序菜单提供四个选项: - 1.数学成绩排序 - 2.C语言成绩排序 - 3.总分排序 - 4.帮助 #### 4. 查询子菜单函数 `InquireMenu` ```c void InquireMenu() {/*Ѷ˵*/ printf("\n\t\t\t\t************\n"); // 查询菜单界面显示 } ``` 查询菜单提供六个选项: - 1.按学号查询 - 2.查询所有 - 3.数学成绩查询 - 4.C语言成绩查询 - 5.总分查询 - 6.帮助 #### 5. 输入文件名函数 `Inputfilename` ```c char Inputfilename() {/*ļͬʱļ*/ char str2[] = {"B"}; printf("**录入文件名**:"); scanf("%s", filename); getchar(); strcpy(filename2, filename); strcat(filename2, str2); } ``` 该函数用于从用户处获取文件名,并将其保存到`filename`变量中。同时将"**B"附加到文件名的末尾,形成新的文件名并保存在`filename2`变量中。 #### 6. 文件读取函数 `readfile` ```c FILE* readfile() {/*ȡĵ*/ FILE* fp1; if ((fp1 = fopen(filename, "rb")) == NULL) { printf("\n文件读取失败!!\n"); fclose(fp1); } return (fp1); } ``` 该函数尝试打开指定的文件用于二进制读取,如果文件打开失败,则输出错误信息并关闭文件。 #### 7. 文件创建函数 `foundfile` ```c FILE* foundfile() {/*½ĵ*/ FILE* fp1; if ((fp1 = fopen(filename, "wb")) == NULL) { printf("\n文件创建失败!!\n"); fclose(fp1); } return (fp1); } ``` 该函数尝试创建或截断指定的文件用于二进制写入,如果文件创建或截断失败,则输出错误信息并关闭文件。 #### 8. 文件追加写入函数 `savefile` ```c FILE* savefile() {/*ĵ*/ FILE* fp1; if ((fp1 = fopen(filename, "ab")) == NULL) { printf("\n文件追加打开失败!!\n"); fclose(fp1); } return (fp1); } ``` 该函数尝试打开指定的文件用于追加写入二进制数据,如果文件打开失败,则输出错误信息并关闭文件。 #### 9. 录入数据函数 `InputSave` ```c int InputSave() {/***/... ``` 该函数用于录入学生的相关信息,并将其保存到文件中。具体实现细节由于代码不完整而无法完全展示。 ### 四、总结 这段C语言代码提供了一个基础的命令行界面程序,允许用户对Access数据库中的学生信息进行操作,包括录入、查询、删除以及排序等常见功能。通过定义结构体来组织数据,使用文件操作来持久化存储数据,实现了基本的数据管理功能。此外,还设计了友好的菜单系统来引导用户进行操作。需要注意的是,代码中存在一些不规范的编码和未完成的部分,例如注释中的乱码和部分函数实现的缺失,这些都需要进一步完善和修正。
#include <string.h>
typedef struct count{ /*保存记录条数结构体*/
char name[10];
int num;
}count;
typedef struct st{
char name[10];
long Number;
int Math;
int C;
int Amount;
}st;
st record[8];
count num[1];
char filename[10]={"0"};
char filename2[10]={"0"};
int Inputnum[8];
void MainMenu(){ /*主菜单*/
printf("\n\t\t\t\t* * * * * * * * * *\n");
printf("\t\t\t\t* 主菜单 *\n");
printf("\t\t\t\t* 1. 创建新文件 *\n");
printf("\t\t\t\t* 2. 添加记录 *\n");
printf("\t\t\t\t* 3. 删除记录 *\n");
printf("\t\t\t\t* 4. 排序 *\n");
printf("\t\t\t\t* 5. 查询记录 *\n");
printf("\t\t\t\t* 6. 退出 *\n");
printf("\t\t\t\t* * * * * * * * * *\n");
void DelMenu(){ /*删除菜单*/
printf("\n\t\t\t\t* * * * * * * * * * * *\n");
printf("\t\t\t\t* 删除菜单 *\n");
printf("\t\t\t\t* 1. 学号查询删除 *\n");
printf("\t\t\t\t* 2. 返回到上级菜单 *\n");
printf("\t\t\t\t* * * * * * * * * * * *\n");
}
void RankingMenu(){ /*排序菜单*/
printf("\n\t\t\t\t* * * * * * * * * * * *\n");
printf("\t\t\t\t* 排序菜单 *\n");
printf("\t\t\t\t* 1. 数学成绩排序 *\n");
printf("\t\t\t\t* 2. C语言成绩排序 *\n");
printf("\t\t\t\t* 3. 总分排序 *\n");
printf("\t\t\t\t* 4. 返回到上级菜单 *\n");
printf("\t\t\t\t* * * * * * * * * * * *\n");
}
void InquireMenu(){ /*查讯菜单*/
printf("\n\t\t\t\t* * * * * * * * * * * *\n");
printf("\t\t\t\t* 查讯菜单 *\n");
printf("\t\t\t\t* 1. 学号查讯 *\n");
printf("\t\t\t\t* 2. 姓名查讯 *\n");
printf("\t\t\t\t* 3. 数学成绩查讯 *\n");
printf("\t\t\t\t* 4. C语言成绩查讯 *\n");
printf("\t\t\t\t* 5. 总分查讯 *\n");
printf("\t\t\t\t* 6. 返回到上级菜单 *\n");
printf("\t\t\t\t* * * * * * * * * * * *\n");
剩余21页未读,继续阅读
- Levluo2021-03-12就是坑人的,你这是什么数据库,你这是txt文件!
- 粉丝: 43
- 资源: 45
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 聋哑人手语词汇图像分类数据集【已标注,约1,100张数据】
- 基于Pygame库实现新年烟花效果的Python代码
- 必应图片壁纸Python爬虫代码bing-img.zip
- 购物返利源码/代购网站源码/每日分打包完整版源码下载
- Java外卖项目(瑞吉外卖项目的扩展)
- 使用Python和matplotlib库绘制爱心图形的技术教程
- 国际象棋检测11-YOLO(v7至v9)、COCO、Darknet、Paligemma、VOC数据集合集.rar
- Python与Pygame实现带特效的圣诞节场景模拟程序
- R语言实战机器学习实战教程
- 常用算法介绍与学习资源汇总
- ssd5课件图片记录保存
- 国际象棋检测2-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Offer资讯交流Web系统(编号:0889870).zip
- 高考志愿智能推荐系统_2a1qfv22.zip
- 个性化推荐影院(编号:03132141).zip
- 高校学生求职就业平台(编号:24440246).zip