linux下使用C语言实现简易的学生信息管理系统
学生管理系统的文件总共有 5 个: main.c、stuSystem.h、stuSystem.c、ArrayLib.h 和 ArrayLib.c
其中 ArrayLib.h 和 ArrayLib.c 为程序所用到的数据存储方式:动态数组。具体代码在我的另一篇博客上:C语言实现自己的动态数组库,进去里面把代码拷贝下来就得到 ArrayLib.h 和 ArrayLib.c 这两个代码文件了。
剩下的三个代码文件:main.c、stuSystem.h、stuSystem.c 就在这篇博客中,分别拷贝下来。然后把这 5 个代码文件放在同一个地方(相同的文件夹下),然后进去这个文件夹中,运行编译命令:
gcc main.c -o output |
然后就得到了可执行文件 output,运行它就可以了!
main.c
/**************************************************** 文件名:main.c* 文件描述:学生管理系统框架 需要配合stuSystem.c* stuSystem.h 以及动态数组库函数一起编译* 编辑人:王廷云* 编辑日期:2017-10-10* 修改日期:2018-2-10
****************************************************/#include <stdio.h>
#include <string.h>
#include "stuSystem.h"
#include "arrayLib.h"int main(void)
{int index = 0; // 菜单功能索引int key; // 用户按键输入FILE *fp;Array_t *ar;char *mainMenu[] = { // 菜单选项"1.注册学生信息","2.查询学生信息","3.删除学生信息","4.退出管理系统",};int NR = sizeof(mainMenu)/sizeof(mainMenu[0]);// 菜单选项数/* 打开文件获取数据 */fp = fopen("./stuInfo.db", "r");if (NULL == fp) // 文件不存在则创建{fp = fopen("./stuInfo.db", "w+");}if (fread(&key, 1, 1, fp) != 1) // 如果文件为空{ar = initArray(sizeof(Student_t));}else // 文件不为空{fclose(fp); // 先关闭打开的文件ar = loadArrayFromFile("./stuInfo.db"); // 从文件中加载数据if (ar == NULL){fprintf(stderr,"load info failed.\n");return -2;}}/* 初始化学生管理系统 */initStuSysem();while (1){/* 显示学生管理系统主菜单 */showMenu(mainMenu,NR,index);/* 获取用户输入 */key = getInput();/* 根据用户输入进行功能选择 */switch (key){/* 上移 */case UP : index -= 1;if (index == -1) index = NR-1; break;/* 下移 */case DOWN : index = (index+1)%NR; break;/* 功能确认 */case ENTER :switch (index){/* 注册学生信息 */case 0: addStuInfo(ar); break;/* 查询学生信息 */case 1: queryStuInfo(ar); break;/* 删除学生信息 */case 2: deleteStuInfo(ar); break;/* 退出学生系统 */case 3: exitStuSystem(ar); break;} break;/* 其它按键 */default : continue;}}return 0;
}
stuSystem.h
/********************************************* 文件名: stuSystem.h* 文件描述: 学生管理系统工程头文件,包含了该工程所有* 需要用到的枚举,结构体定义,方法函数的声明* 编辑人:王廷云* 编辑日期:2017-10-1* 修改日期:2018-1-10
********************************************/#ifndef _STUSYSTEM_H_
#define _STUSYSTEM_H_#include "arrayLib.h"/* 用户输入按键枚举 */
enum Key_e {UP, /* 上键 */DOWN, /* 下键 */RIGHT, /* 右键 */LEFT, /* 左键 */ENTER, /* 确认键 */YES, /* 肯定键 */NO, /* 取消键 */QUIT, /* 退出键 */UNKNOW, /* 其它未知键 */
};/* 学生结构体封装 */
typedef struct {int id; // 学生学号:idchar name[10]; // 学生姓名float grade; // 学生成绩
} Student_t;/* 初始化学生管理系统 */
void initStuSysem(void);/* 显示功能选择菜单 */
void showMenu(char *menu[], int NR, int index);/* 注册学成信息 */
void addStuInfo(Array_t *ar);/* 查询学生信息 */
void queryStuInfo(Array_t *ar);/* 查询所有学生信息 */
void showAllStuInfo(Array_t *ar);/* 根据学生学号显示信息 */
void showStuInfoById(Array_t *ar);/* 根据学生姓名显示信息 */
void showStuInfoByName(Array_t *ar);/* 根据学生成绩显示信息 */
void showStuInfoByGrade(Array_t *ar);/* 显示学生信息 */
void showStuInfo(void *data);/* 退出显示学生信息界面 */
void exitStuInfo(void);/* 用于回调的比较函数 */
/* 1、根据学号 */
int compFunById(const void *data1, const void *data2);
/* 2、根据名字 */
int compFunByName(const void *data1, const void *data2);
/* 3、根据成绩 */
int compFunByGrade(const void *data1, const void *data2);/* 删除学生信息 */
void deleteStuInfo(Array_t *ar);/* 删除所有学生信息 */
void deleteAllStu(Array_t *ar);/* 根据学号删除学生信息 */
void deleteStuById(Array_t *ar);/* 根据姓名删除学生信息 */
void deleteStuByName(Array_t *ar);/* 根据成绩删除学生信息 */
void deleteStuByGrade(Array_t *ar);/* 获取用户输入 */
int getInput(void);/* 退出学生管理系统 */
void exitStuSystem(Array_t *ar);#endif // _STUSYSTEM_H_
stySystem.c
/******************************************* 文件名: stuSystem.c* 文件描述: 学生管理系统项目里所有方法函数的实现* 编辑人:王廷云* 编辑日期:2017-10-1* 修改日期:2018-1-10
******************************************/#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "stuSystem.h"
#include "arrayLib.h"/** 函数名: initStuSysem* 函数功能: 对学生管理系统进行初始化* 参数: 无* 返回值: 无
*/
void initStuSysem(void)
{/* 对终端界面进行配置 */fprintf(stdout, "\033[2J"); // 清屏system("stty -icanon"); // 关闭缓冲system("stty -echo"); // 关闭回显printf("\033[?25l"); // 隐藏鼠标光标fflush(stdout); // 刷新
}/** 函数名: showMenu* 函数描述: 显示学生管理系统功能菜单* 参数: 1.菜单内容 2.菜单功能数目 3.功能索引值* 返回值: 无
*/
void showMenu(char *menu[], int NR, int index)
{int i;/* 屏幕设置 */for (i = 0; i < 100; i++) // 清除屏幕{printf("\033[%d;1H\033[K", i);}printf("\033[1;1H"); // 定位到第一行第一列fflush(stdout);/* 打印菜单 */for (i = 0; i < NR; i++){if (i == index){/* 显示绿底黑字 */printf("\033[42;30m%s\033[0m\n",menu[i]);}else{/* 显示白底黑字 */printf("\033[47;30m%s\033[0m\n",menu[i]);}}
}/** 函数名: getInput* 函数功能: 获取用户输入* 参数: 无* 返回值: 返回用户输入对应值
*/
int getInput(void)
{int key;char ch;ch = getchar();if (ch == '\033' && getchar() == '[') // 方向键{ch = getchar();switch (ch){case 'A': key = UP; break;case 'B': key = DOWN; break;default : key = UNKNOW; break;}}else if (ch == '\n') // 确认键{key = ENTER;}else if (ch == 'y' && getchar() == '\n'){key = YES;}else if (ch == 'n' && getchar() == '\n'){key = NO;}else{key = UNKNOW;}return key;
}/** 函数名: addStuInfo* 函数功能: 注册学生信息菜单功能* 参数: 保存数据的数组指针* 返回值: 无
*/
void addStuInfo(Array_t *ar)
{Student_t stu;int key;/* 开启缓冲、显示和鼠标闪烁 */system("stty echo");system("stty icanon");printf("\033[?25h");fflush(stdout);/* 注册学生 */printf("\n******\033[34m学生信息注册\033[0m*******\n");fprintf(stdout,"学生学号:\033[32m ");fscanf(stdin,"%d",&(stu.id));printf("\033[0m");fflush(stdout);fprintf(stdout,"学生姓名: \033[32m");fscanf(stdin,"%s",(stu.name));printf("\033[0m");fflush(stdout);fprintf(stdout,"学生成绩: \033[32m");fscanf(stdin,"%f",&(stu.grade));printf("\033[0m");fflush(stdout);/* 确认是否录入学生注册信息 */getchar(); /* 去除回车符 */while (1){printf("\033[34m确认是否录入学生注册信息(y/n):\033[0m");key = getInput();if (key == YES) /* 确认注册 */{int ret;ret = appendArrayTail(ar,&stu);if (ret != 0){fprintf(stdout,"\033[31m录入信息失败\033[0m\n");}else{fprintf(stdout,"\033[32m录入信息成功\033[0m\n");}break;}else if (key == NO) /* 取消注册 */{printf("\033[32m录入信息取消\033[0m\n");break;}else /* 输入错误 */{printf("\033[31m输入错误!\033[0m\n");while(getchar() != '\n'); /* 去掉多余字符 */sleep(1);}}system("stty -echo");system("stty -icanon");printf("\033[?25l");fflush(stdout);sleep(1); /* 稍等1秒 */
}/** 函数名: queryStuInfo* 函数功能: 查询学生信息子菜单* 参数: 存储数据的数组指针* 返回值: 无
*/
void queryStuInfo(Array_t *ar)
{int index = 0;int i;int key;/* 如果没有任何学生信息则没有必要进行下一步 */if (ar->n == 0){printf("*****\033[31m没有任何注册学生信息\033[0m****\n");sleep(1);return;}char *childMenu[] = {"**查询所有**","*按学号查询*","*按名字查询*","*按成绩查询*","*返回主菜单*",};/* 计算菜单功能选项数 */int NR = sizeof(childMenu)/sizeof(childMenu[0]);/* 进入子菜单 */while (1){showMenu(childMenu,NR,index);key = getInput();/* 根据用户输入进行功能选择 */switch (key){/* 上移 */case UP : index -= 1;if (index == -1) index = NR-1; break;/* 下移 */case DOWN : index = (index+1)%NR; break;/* 功能确认 */case ENTER :switch (index){/* 显示所有学生信息 */case 0: showAllStuInfo(ar); break;/* 根据学号显示学生信息 */case 1: showStuInfoById(ar); break;/* 根据姓名显示学生信息 */case 2: showStuInfoByName(ar); break;/* 根据成绩显示学生信息 */case 3: showStuInfoByGrade(ar); break;/* 返回上一层菜单 */case 4: return;} break;/* 其它按键 */case UNKNOW: continue;}}
}/** 函数名:showAllStuInfo* 函数功能:显示所有学生信息* 参数:学生信息数据指针* 返回值:无
*/
void showAllStuInfo(Array_t *ar)
{printf("\n*********以下为全部学生信息*********\n");travelArray(ar,showStuInfo);exitStuInfo();
}/** 函数名:exitStuInfo* 函数功能:退出显示学生信息界面* 参数:无* 返回值:无
*/
void exitStuInfo(void)
{int key;printf("***********\033[32m请按确认键返回\033[0m***********\n");/* 关缓冲回显和鼠标闪烁 */system("stty -echo");system("stty -icanon");printf("\033[?25l");fflush(stdout);while (1) /* 等待的确认键 */{key = getInput();if (key == ENTER){return;}}
}/** 函数名:showStuInfoById* 函数功能:根据学号显示学生信息* 参数:学生信息数组* 返回值:无
*/
void showStuInfoById(Array_t *ar)
{void *temp;int id;/* 开启回显、缓冲和鼠标闪烁 */system("stty echo");system("stty icanon");printf("\033[?25h");fflush(stdout);printf("请输入学生学号:\033[32m");scanf("%d",&id);printf("\033[0m");fflush(stdout);temp = searchArrayOneByCond(ar,compFunById,&id);if (temp == NULL){printf("***********\033[31m没有该学生信息\033[0m***********\n");}else{printf("***********以下为查询结果***********\n");showStuInfo(temp);}getchar(); /* 去掉输入id时所输入的回车符 */exitStuInfo();
}/** 函数名:showStuInfoByName* 函数功能:根据姓名显示学生信息* 参数:学生信息数组* 返回值:无
*/
void showStuInfoByName(Array_t *ar)
{void *temp;char name[10];system("stty echo");system("stty icanon");printf("\033[?25h");fflush(stdout);printf("请输入学生姓名:\033[32m");scanf("%s",name);printf("\033[0m");fflush(stdout);temp = searchArrayOneByCond(ar,compFunByName,name);if (temp == NULL){printf("***********\033[31m没有该学生信息\033[0m***********\n");}else{printf("***********以下为查询结果***********\n");showStuInfo(temp);}getchar(); /* 去掉输入name时所输入的回车符 */exitStuInfo();
}/** 函数名:showStuInfoByGrade* 函数功能:根据成绩显示学生信息* 参数:学生信息数组* 返回值:无
*/
void showStuInfoByGrade(Array_t *ar)
{void *temp;float grade;system("stty echo");system("stty icanon");printf("\033[?25h");fflush(stdout);printf("请输入学生成绩:\033[32m");scanf("%f",&grade);printf("\033[0m");fflush(stdout);temp = searchArrayOneByCond(ar,compFunByGrade,&grade);if (temp == NULL){printf("***********\033[31m没有该学生信息\033[0m***********\n");}else{printf("***********以下为查询结果***********\n");showStuInfo(temp);}getchar(); /* 去掉输入grade时所输入的回车符 */exitStuInfo();
}/** 函数名:showStuInfo* 函数功能:显示学生信息* 参数:数据地址指针* 返回值:无
*/
void showStuInfo(void *data)
{Student_t *stu;stu = (Student_t *)data;printf("id: \033[32m%03d\033[0m name: \033[32m%-6s" \"\033[0m grade: \033[32m%.2f\033[0m\n",\stu->id,stu->name,stu->grade);
}/** 函数名:compFunById* 函数功能:比较回调函数,根据条件比较结果* 参数:需要比较的两个数据指针* 返回值:无
*/
int compFunById(const void *data1, const void *data2)
{Student_t *stu = (Student_t *)data1;if (stu->id == *(int *)data2){return 1;}elsereturn 0;
}/** 函数名:compFunByIdName* 函数功能:比较回调函数,根据条件比较结果* 参数:需要比较的两个数据指针* 返回值:无
*/
int compFunByName(const void *data1, const void *data2)
{Student_t *stu = (Student_t *)data1;if (strcmp(stu->name,(char*)data2) == 0){return 1;}elsereturn 0;
}/** 函数名:compFunByGrade* 函数功能:比较回调函数,根据条件比较结果* 参数:需要比较的两个数据指针* 返回值:无
*/
int compFunByGrade(const void *data1, const void *data2)
{Student_t *stu = (Student_t *)data1;if (stu->grade == *(float *)data2){return 1;}elsereturn 0;
}/** 函数名: deleteStuInfo* 函数功能: 删除学生信息* 参数: 1.子菜单的行坐标 2.子菜单的列坐标* 返回值: 无
*/
void deleteStuInfo(Array_t *ar)
{int index = 0;int i;int key;/* 如果没有任何学生信息则没有必要进行下一步 */if (ar->n == 0){printf("*****\033[31m没有任何注册学生信息\033[0m****\n");sleep(1);return;}char *childMenu[] = {"**删除所有**","*按学号删除*","*按名字删除*","*按成绩删除*","*返回主菜单*",};int NR = sizeof(childMenu)/sizeof(childMenu[0]);while (1){showMenu(childMenu,NR,index);key = getInput();/* 根据用户输入进行功能选择 */switch (key){/* 上移 */case UP : index -= 1;if (index == -1) index = NR-1; break;/* 下移 */case DOWN : index = (index+1)%NR; break;/* 功能确认 */case ENTER : switch (index){case 0: deleteAllStu(ar); break;case 1: deleteStuById(ar); break;case 2: deleteStuByName(ar); break;case 3: deleteStuByGrade(ar);break;case 4: return;} break;/* 其它按键 */case UNKNOW: continue;}}
}/** 函数名:deleteAllStu* 函数功能:删除所有学生信息* 参数:存储数据的数组指针* 返回值:无
*/
void deleteAllStu(Array_t *ar)
{int key; // 用户输入按键int sum = ar->n; // 学生总数int i, ret;system("stty icanon");system("stty echo");printf("\033[?25h");fflush(stdout);printf("\033[31m是否确定要删除所有学生信息(y/n):\033[0m");key = getInput();if (key == YES){ for (i = 0; i < sum; i++){ret = deleteArrayByIndex(ar, 0);if (ret != 0){printf("***********\033[31m删除失败,请重试\033[0m**********\n");exitStuInfo();}}printf("\033[32m成功删除所有学生信息\033[0m\n");exitStuInfo();}else if (key == NO){printf("*************\033[32m删除已取消\033[0m*************\n");exitStuInfo();}
}/** 函数名:deleteStuById* 函数功能:根据学号删除学生信息* 参数:存储数据的数组指针* 返回值:无
*/
void deleteStuById(Array_t *ar)
{int key;int id;void *temp;system("stty icanon");system("stty echo");printf("\033[?25h");fflush(stdout);printf("请输入要删除学生的学号:\033[32m");scanf("%d",&id);printf("\033[0m");fflush(stdout);getchar(); /* 去掉回车符 */temp = searchArrayOneByCond(ar,compFunById,&id);if (temp == NULL){printf("\033[31m没有该学生\033[0m\n");exitStuInfo();return;}printf("\033[31m是否确定要删除该学生信息(y/n):\033[0m");key = getInput();if (key == YES){int ret;ret = deleteArrayOneByCond(ar,compFunById,&id);if (ret != 0){printf("***********\033[31m删除失败,请重试\033[0m**********\n");exitStuInfo();return;}printf("\033[32m成功删除该学生信息\033[0m\n");exitStuInfo();}else if (key == NO){printf("*************\033[32m删除已取消\033[0m*************\n");exitStuInfo();}
}/** 函数名:deleteStuByName* 函数功能:根据姓名删除学生信息* 参数:存储数据的数组指针* 返回值:无
*/
void deleteStuByName(Array_t *ar)
{int key;char name[10];void *temp;system("stty icanon");system("stty echo");printf("\033[?25h");fflush(stdout);printf("请输入要删除学生的姓名:\033[32m");scanf("%s",name);printf("\033[0m");fflush(stdout);getchar(); /* 去掉回车符 */temp = searchArrayOneByCond(ar,compFunByName,name);if (temp == NULL){printf("\033[31m没有该学生\033[0m\n");exitStuInfo();return;}printf("\033[31m是否确定要删除该学生信息(y/n):\033[0m");key = getInput();if (key == YES){int ret;ret = deleteArrayOneByCond(ar,compFunByName,name);if (ret != 0){printf("***********\033[31m删除失败,请重试\033[0m**********\n");exitStuInfo();}printf("\033[32m成功删除该学生信息\033[0m\n");exitStuInfo();}else if (key == NO){printf("*************\033[32m删除已取消\033[0m*************\n");exitStuInfo();}
}/** 函数名:deleteStuByGrade* 函数功能:根据成绩删除学生信息* 参数:存储数据的数组指针* 返回值:无
*/
void deleteStuByGrade(Array_t *ar)
{int key;float grade;void *temp;system("stty icanon");system("stty echo");printf("\033[?25h");fflush(stdout);printf("请输入要删除学生的成绩:\033[32m");scanf("%f",&grade);printf("\033[0m");fflush(stdout);getchar(); /* 去掉回车符 */temp = searchArrayOneByCond(ar,compFunByGrade,&grade);if (temp == NULL){printf("\033[31m没有该学生\033[0m\n");exitStuInfo();return;}printf("\033[31m是否确定要删除该学生信息(y/n):\033[0m");key = getInput();if (key == YES){int ret;ret = deleteArrayOneByCond(ar,compFunByGrade,&grade);if (ret != 0){printf("***********\033[31m删除失败,请重试\033[0m**********\n");exitStuInfo();}printf("\033[32m成功删除该学生信息\033[0m\n");exitStuInfo();}else if (key == NO){printf("*************\033[32m删除已取消\033[0m*************\n");exitStuInfo();}
}/** 函数名: exitStuSystem* 函数功能: 退出学生管理系统前进行一些终端配置* 参数: 无* 返回值: 无
*/
void exitStuSystem(Array_t *ar)
{char ch;/* 恢复终端配置 */system("stty icanon"); // 恢复缓冲system("stty echo"); // 恢复回显示printf("\033[?25h"); // 显示鼠标fflush(stdout); // 刷新/* 询问是否保存修改 */fprintf(stdout, "是否保存修改?(y/n):");ch = getchar();if (ch == 'y') // 确认保存{saveArrayToFile(ar, "stuInfo.db");}exit(0); // 退出程序
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 单元测试方法
Java中的JUnit单元测试 步骤: 1.中当前工程 - 右键择:build path - add libraries - JUnit 4 - 下一步 2.创建Java类,进行单元测试。 此时的Java类要求:① 此类是public的 ②此类提供公共的无参的构造器 3.此类中声明单元测试方法。 此时的单元测试方法:方法的权限是publ…...
2024/4/5 0:33:05 - 数据结构课程设计——通讯录系统设计(C语言)
设计要求 设计以姓名为关键字的散列表(哈希表),实现通讯录查找系统,完成相应的建表和查表程序。 (1)设每个记录有下列数据项:用户名、电话号码、地址; (2)从键盘输入各记录,分别以姓名为关键字建立散列表; (3)人名可以采用汉语拼音形式。人名字符串转化为数字的方…...
2024/4/12 10:07:19 - NutzDao-自定义SQL语句进行复杂查询
NutzDao-自定义SQL语句进行复杂查询Nutz.Dao提供了大多数简单的操作,在80%以上的情况下,你并不需要编写 SQL,因为 Nutz.Dao会自动替你生成可以使用的SQL。但是,在某些特殊的情况下,尤其是考虑到效率等问题,直接写SQL 仍然是程序员们的一个杀手锏,有了这个杀手锏,程序员…...
2024/4/12 10:06:43 - C语言编译器推荐
谈起C语言编译器,那种类多的不得了,所以,今天我给大家推荐几个较好的编译器: 首先个人用的第一款编译器便是DEV-C++了,这个编译器还算不错,但不知为什么,本人用不习惯。 1、DEV-C++ 下载地址:http://download.pchome.net/development/cbuilder/detail-6772.html 个人评…...
2024/4/16 11:16:48 - 数据结构C语言版——初始化一个线性表
问题描述初始化一个线性表 程序代码 #include"stdio.h" #include"stdlib.h" #define OVERFLOW 0 #define OK 1 #define LIST_INIT_SIZE 100 #define LISTINCREMENY 10 typedef struct {int *elem;int length;int listsize; }SqList;int InitList_Sq(SqL…...
2024/4/29 6:15:19 - SQL Server创建表语句介绍
原文地址:http://database.51cto.com/art/201010/231018.htmSQL Server创建表是最常见也是最常用的操作之一,下面就为您介绍SQL Server创建表的语句写法,供您参考,希望可以让您对SQL Server创建表方面有更深的认识。USE suntest create table 仓库 ( 仓库编号 int , 仓…...
2024/4/19 9:33:57 - 最小gcc.exe编译器(C语言)
gcc是一款C语言编译器,为了研究它,我提炼了gcc的C语言最小编译环境,这里提供下载,如下:mingcc是我从Dev- C++5.11中提炼出来的,gcc的版本是:4.9.2 Dev- C++5.11下载如下:gcc.exe的编译需要一些文件,这样去研究它,是我的兴趣爱好。...
2024/5/3 23:44:11 - C语言创建简单学生成绩管理系统(数组)
C语言创建简单成绩管理系统 数组实现 头文件及宏定义 #define SIZE 10 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct student {char Name[8];char ID_number[10];int math;int english;student(){int i;for(i=0;i<8;i++){Nam…...
2024/4/20 1:29:54 - 数据结构—顺序表基本操作(c语言代码)
顺序表计算机内部存储一张线性表是用一组连续地址内存单元,这种存储结构即为顺序存储结构,这种结构下的线性表叫顺序表。顺序表有两种定义方法: 1.静态定义 2.动态生成顺序表是最简单的一种线性存储…...
2024/4/19 11:54:31 - 数据结构之图的邻接表C语言版
邻接表就是图的一种链式结构。对图中的每一个顶点Vi建立以个单链表来存放。邻接表中的每个单链表的第一个结点存放顶点的信息,并把这个结点看作链表的表头,其余结点存放与结点相关的信息。由此可知:邻接表有两张表组成,一张是表头结点表也即是存放顶点和其信息的表,还有一…...
2024/4/19 0:13:47 - 16进制转10进制(使用stl)
方法1 # include<iostream> # include<string> using namespace std; long long exp(int n) {long long sum=1;for(int i=0;i<n;i++ )sum*=16;return sum; } int main() {string s;long long sum=0;cin>>s; int length=(int)s.size();for(int i=0;i<l…...
2024/4/9 18:07:11 - 基于LINUX的C语言实现学生信息管理系统项目
学生信息管理系统 1.项目目的 本项目旨在LINUX操作系统下使用C语言管理文件的方法来实现一个学生信息管理系统,包括教师登录,查询学生信息及修改学生成绩;学生登录及查看自己信息;管理员负责对学生和教师的增删查改。 2.项目概览 本系统共有三种使用者,管理员,教师,学生…...
2024/4/16 13:26:26 - C语言-数据结构-归并排序(merge sort)-递归 迭代-源代码及分析
1. 归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二…...
2024/5/2 16:03:39 - 水滴石穿C语言之编译器引出的问题
基本解释 本节主要探讨C编译器下面两方面的特点所引发的一系列常见的编程问题。 对C文件进行分别编译:C程序通常由几个小程序(.c文件)组成,编译器将这几个小程序分别编译,然后通过链接程序将它们组合在一起形成一个目标代码。由于编译器每次只能编译一个文件,因此它不能立…...
2024/5/2 13:56:07 - 数据库基本SQL语句----嵌套查询
查询科目名称为“语文“的所有科目成绩:SELECT * FROM SCORES WHERE SUBJECT_ID IN (SELECT ID FROM SUBJECT WHERE NAMES=语文)(在WHERE子句中对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询,对于数据量较大的表,不能使用上述嵌…...
2024/4/20 6:42:53 - 纯C语言学生管理系统(学生期末作业)
** 纯C语言学生管理系统(学生期末作业) ** 分为7大功能:增、删、查、改、预览、存储、导出 代码都加有注释,利于不懂的,理解 添加功能 //添加学生 void input () {int i;int j,ge;DaoChu();printf("你要存储几个学生的信息:");scanf("%d",&ge);f…...
2024/4/9 18:07:06 - 数据结构之---C语言实现最小生成树之prim(普里姆)算法
//最小生成树之Prim算法 //杨鑫 #include <stdio.h> #include <stdlib.h> #define n 6 #define MaxNum 10000 /*定义一个最大整数*//*定义邻接矩阵类型*/ typedef int adjmatrix[n + 1][n + 1]; /*0号单元没用*/ typedef struct {int fromvex, tovex; /…...
2024/4/12 10:07:55 - C语言-数据结构-创建栈
#include <stdio.h> #include <stdlib.h> #define maxsize 100 ///创建栈 typedef int data; typedef struct {data *base; //栈底data *top; //栈顶int stacksize; //栈大小 }stack; //创建栈(初始化) void init(stack *s) {//给base开辟内存s->base = (stack…...
2024/5/2 13:25:25 - sql语句的几个常用函数总结
结构化查询语言(Structured Query Language,简称SQL语句)从单个函数的使用上来看,较为简单,但是当表与表嵌套、几个函数组合使用,即可实现强大的数据查询功能,能从数据库中快速便捷地获取需要的信息。 本文总结了sql语句中常用的5个函数,主要包含join连接函数、limit函数…...
2024/4/12 10:08:19 - C语言各种编译器的清屏方法
1,vs/vc:vs本身并没有提供专用清屏的函数,但是清屏被作为windows专用的可执行程序了,因此可以使用system("cls")来手动开启进程完成清屏。2,tc:清屏函数clrscr()总结:在windows下无论你使用什么编译器,都可以使用system("cls")来清屏。同理,在lin…...
2024/5/2 19:10:44
最新文章
- 【牛客网】值周
原题链接:登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分。 因为l<100000000,所以数组开1e8。 唯一需要注意的点就是前面给b[0]单独赋值为1(因为如果在循环中给b[0]赋值&…...
2024/5/4 3:56:43 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - vscode为什么设置不了中文?
VSCode中文插件安装 在VSCode中设置中文的首要步骤是安装“Chinese (Simplified) Language Pack for Visual Studio Code”扩展插件。这一过程十分简单,只需打开VSCode,进入扩展市场,搜索“ Chinese (Simplified) Language Pack ”然后点击…...
2024/5/3 7:57:49 - 字符串匹配算法之BF与KMP算法
目录 BF算法(暴力匹配算法) KMP算法 核心思想: next数组 next数组的优化 BF算法(暴力匹配算法) #include <assert.h> int BF(const char* str, const char* sub) {assert(str ! NULL && sub ! NULL);if (str NULL || sub NULL){return -1;}int…...
2024/5/2 2:35:56 - Verilog基础【二】
3.1 Verilog 连续赋值 关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: assign LHS_target RHS_expression ;LHS(left hand side)…...
2024/5/3 0:42:09 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/3 23:10:03 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/4 2:59:34 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57