当前位置: 首页 > news >正文

手机运动信息管理系统

目录

一:案例要求:

二:代码:(多文件形式)

1:main.h

2 main.cpp

3 menu.cpp(这个可以拆开写在每一个.cpp里面)

4 功能1用户信息的增删改查.h

5功能1用户信息的增删改查.cpp

6功能2运动信息管理.h

7功能2运动信息管理.cpp

8功能3运动排行榜.h

9功能3运动排行榜.cpp

10功能4定制运动路线.h

11功能4定制运动路线.cpp

12功能5 数据文件操作.h

13功能5 数据文件操作.cpp


一:案例要求:

二:代码:(多文件形式)

1:main.h

#ifndef _MENU_ALL_H_
#define _MENU_ALL_H_
#include<string.h>
#include<fstream>
#include<iomanip>
#include<iostream> 
#include<stdlib.h>
using namespace std;
typedef int status;
#define MAXSIZE 100
typedef struct {string idcard;string name;string sex;int age;int step[7];double averagesteps;//int day;
}people;
typedef struct{people *elem;int length;
}user;
void menuall();
#endif

2 main.cpp

#include "main.h"
#include "reach1.h"
//void reach1(user &users);
void reach2(user &users);
void reach3(user &users);
void reach4(user &users);
void reach5(user &users);
int main() {user users; users.elem=new people[MAXSIZE];users.length=0;int flag = 1;while (1) {menuall();int x = -1;cout << "请选择:";cin >> x;switch (x) {case 0:exit(0);case 1: system("cls");reach1(users);if (flag == 0) {cout << "请先完成数据加载!"; break;}break;case 2:system("cls");reach2(users);if (flag == 0) {cout << "请先完成数据加载!"; break;} system("cls"); break;case 3: system("cls");reach3(users);if (flag == 0) {cout << "请先完成数据加载!"; break;} system("cls"); break;case 4: system("cls");reach4(users);system("cls");if (flag == 0) {cout << "请先完成数据加载!"; break;} break;case 5: system("cls");reach5(users);system("cls");break;default: cout << "Input Error"<<endl; break;}}system("pause");system("cls");return 0;
}

3 menu.cpp(这个可以拆开写在每一个.cpp里面)

#include "main.h"
void menuall()
{cout << "************手机运动信息管理系统************" << endl;cout << endl;cout << "  1,用户信息管理        2,运动信息管理      " << endl;cout << "  3,运动排行榜          4,定制运动路线      " << endl;cout << "  5,读取数据文件        0,退出              " << endl;cout << endl;cout << "********************************************" << endl;
}
void menu1()
{cout << "**************用户信息管理**************" << endl;cout << endl;cout << "  1,添加用户         2,删除用户         " << endl;cout << "  3,查询用户         4,修改用户         " << endl;cout << "  0,返回上一级       5,显示全部用户                    " << endl;cout << endl;cout << "****************************************" << endl;
}
void menu2()
{cout << "**************运动信息管理**************" << endl;cout << endl;cout << "  1,添加用户运动信息                    " << endl;cout << "  2,修改用户运动信息                    " << endl;cout << "  3,显示所有用户运动信息                " << endl;cout << "  0,返回上一级                          " << endl;cout << endl;cout << "****************************************" << endl;
}
void menu3()
{cout << "**************运动排行榜*************" << endl;cout << endl;cout << "  1,当天排行榜                       " << endl;cout << "  2,连续运动排行榜                   " << endl;cout << "  3,指定用户的一周排行榜             " << endl;cout << "  0,返回上一级                       " << endl;cout << endl;cout << "*************************************" << endl;
}
void menu4()
{cout << "**************定制运动路线**************" << endl;cout << endl;cout << "  1,绘制运动路线                        " << endl;cout << "  2,选择运动路线                        " << endl;cout << "  0,返回上一级                          " << endl;cout << endl;cout << "****************************************" << endl;
}
void menu5()
{int n;cout << "**************读取数据文件**************" << endl;cout << endl;cout << "  1,数据加载                            " << endl;cout << "  2,数据保存                            " << endl;cout << "  0,返回上一级                          " << endl;cout << endl;cout << "****************************************" << endl;
}

4 功能1用户信息的增删改查.h

#ifndef ff
#define ff
//用户信息的增删改查
void menu1();
void reach1(user &users);
bool add_1(user &users);
bool delete_1(user &users);
bool find_1(user &users);
bool modify_1(user &users);
void output(user users);
#endif

5功能1用户信息的增删改查.cpp

#include "main.h"
#include "reach1.h"
#include "reach5.h"
void reach1(user &users) {while (1) {menu1();int x = -1;bool flag = false;cout << "请选择:";cin >> x;switch (x){case 1:if (add_1(users)) {cout << "成功添加用户" << endl;}else {cout << "添加用户失败" << endl; }  break;case 2:if (delete_1(users)) {cout << "成功删除用户" << endl;}else {cout << "删除用户失败" << endl; } break;case 3:if (find_1(users)) {cout << "成功查找用户" << endl; }else {cout << "查找用户失败" << endl; } break;case 4:if (modify_1(users)) {cout << "成功修改用户信息" << endl;}else {cout << "修改用户信息失败" << endl; } break;case 0: system("cls");  return;case 5: output(users); break;default:cout << "Input Error";  break;}system("pause");system("cls");}
}
bool add_1(user &users) {people t1;cout << "请决定添加几个用户信息:";int x = -1,flag=0;cin >> x;string idcard;for (int i = 0; i < x; i++) {cout << "用户名(手机号(11位)):";while (true) {cin >> idcard;if (idcard[0] == '1' && idcard.length() == 11) {for (int j=0;j<users.length;j++) {//唯一性if (users.elem[i].idcard==idcard) {cout << "用户名重复,请重新输入:";flag = 1;}}if (flag == 0) {t1.idcard = idcard; break;}}else cout << "输入错误(手机号首位1,长度11),请重新输入:";}cout << "请输入昵称(4~12个):";flag = 0;string name;while (true) {cin >> name;if (name.length() >= 4 && name.length() <= 12) {for (int j = 0; j < users.length;j++) {//唯一性if (users.elem[j].name==name) {cout << "昵称重复,请重新输入:";flag = 1;}}if (flag == 0) t1.name = name; break;}else cout << "输入错误(长度(4~12)),请重新输入:";}flag = 0;cout << "请输入性别:";string sex;while (true) {cin >> sex;if (sex == "男" || sex == "女") {t1.sex = sex; break;}else  cout << "性别有误,请重新输入:";}cout << "请输入年龄:";int age;while (true) {cin >> age;if (age < 0 || age>200) {cout << "输入错误,请重新输入:";}else {t1.age = age; break;}}for(int j=1;j<=7;j++){t1.step[j-1]=0;}t1.averagesteps=0;write(t1);users.elem[users.length++]=t1;
}return true;
}
bool delete_1(user &users) {cout << "请输入要删除用户的手机号或者昵称:(0/1)";int x=-1;cin>>x;int flag = 0,k=0;string target;switch(x){case 0: cout<<"请输入手机号:";cin >> target;for (int i = 0; i < users.length; i++) {if (target.compare(users.elem[i].idcard) != 0) {users.elem[k++]=users.elem[i];}else flag=1;}if(flag==1)users.length--;break;case 1:cout<<"请输入昵称:";cin>>target;for(int i=0;i<users.length;i++){if(target.compare(users.elem[i].name)!=0){users.elem[k++]=users.elem[i];}else flag=1;}if(flag==1)users.length--;break;default: cout<<"Input Error"<<endl;}if (flag == 1) 	return true;return false;
}
void menu1_1() {cout << "===============查询方式===================" << endl;cout << "  1用户名          2性别      3昵称 " << endl;cout << "  0返回上一级" << endl;cout << "==========================================" << endl;
}
bool find_1(user &users) {menu1_1();int x = -1,flag=0;string idcard,name;while (true) {cout << "选择查询方式:";cin >> x; switch (x) {case 0:return true;case 1:  cout << "请输入用户名:";cin >> idcard;for (int i=0;i<users.length;i++) {if (users.elem[i].idcard.compare(idcard)==0) {cout << "用户名: " << users.elem[i].idcard << "  昵称:" << users.elem[i].name << "  性别:" << users.elem[i].sex<< "  年龄:" << users.elem[i].age <<endl; flag = 1;}}if (flag == 0)cout << "查无此人"<<endl; break;case 2:cout << "请输入昵称:";cin >> name;for (int i=0;i<users.length;i++) {if (users.elem[i].name.compare(name)==0) {cout << "用户名: " << users.elem[i].idcard << "  昵称:" << users.elem[i].name << "  性别:" << users.elem[i].sex<< "  年龄:" << users.elem[i].age <<endl; flag = 1;}}if (flag == 0)cout << "查无此人"<<endl; break;deault: cout << "输入错误,请重新输入:" << endl; break;}}if(flag==1)return true;return false;
}
bool modify_1(user &users) {people t1;int flag = 0,x=-1,flag1=0;cout << "请输入待修改的用户名:";string target;cin >> target;for (int i = 0; i < users.length; i++) {if (target.compare(users.elem[i].idcard) == 0) {//这个地方可以和add_1部分功能复用,可以改进flag1=1;cout << "是否修改用户名(0:no 1yes):";cin >> x;if (x == 1) {cout << "用户名(手机号(11位)):";string idcard;while (true) {cin >> idcard;if (idcard[0] == '1' && idcard.length() == 11) {for (int j=0;j<users.length;j++) {//唯一性if (users.elem[j].idcard.compare(idcard) == 0) {cout << "用户名重复,请重新输入:";flag = 1;break;}}if (flag == 0) {users.elem[i].idcard = idcard; break;}}else cout << "输入错误(手机号首位1,长度11),请重新输入:";}}cout<<"是否修改昵称(0no/1yes):";cin>>x;if(x==1){cout<<"修改昵称为:";string name;while (true) {cin >> name;if (name.length() >= 4&& name.length() <= 12) {for (int j=0;j<users.length;j++) {//唯一性if (users.elem[j].name.compare(name) == 0) {cout << "昵称重复,请重新输入:";flag = 1;break;}}if (flag == 0) {users.elem[i].name = name; break;}}else cout << "输入错误(手机号首位1,长度11),请重新输入:";}}	cout<<"是否修改性别(0no/1yes):";string sex;cin>>x;if(x==1){while(true){cout<<"请输入性别:";cin>>sex;if(sex=="男"||sex=="女"){users.elem[i].sex=sex;break;}else{cout<<"输入性别有误,请重新输入!"<<endl;}}}cout<<"是否修改年龄(0no/1yes):";	int age;cin>>x;if(x==1){while(true){cout<<"请输入待修改的年龄:";cin>>age;if(age>=0&&age<=120){users.elem[i].age=age;break;}else{cout<<"年龄输入有误,请重新输入:"<<endl;}}}}}	if(flag1==1)return true;return false;
}
void output(user users){for(int i=0;i<users.length;i++){cout << "用户名: " << users.elem[i].idcard << "  昵称:" << users.elem[i].name << "  性别:" << users.elem[i].sex<< "  年龄:" << users.elem[i].age <<endl;}
}

6功能2运动信息管理.h

#ifndef ea
#define ea
//运动信息管理
void menu2();
void reach2(user &users);
void show_2(user &users);
void modify_2(user &users);
void add_2(user &users); 
int account(people t);
#endif

7功能2运动信息管理.cpp

#include "main.h"
#include "reach2.h"
void reach2(user &users){while(1){menu2();cout<<"请选择:";int m;cin>>m;switch(m){case 0:return ;case 1:add_2(users);break;case 2:modify_2(users);break;case 3:show_2(users);break;default:cout<<"Input Error"<<endl;break;} system("pause");system("cls");}
} 
void add_2(user &users){for(int i=0;i<users.length;i++){int foot=0;cout<<"请输入昵称为"<<users.elem[i].name<<"当天的运动步数:";cin>>foot;int k=0,sum=0,max=0,day=0;for(int j=1;j<7;j++){users.elem[i].step[k]=users.elem[i].step[j];sum+=users.elem[i].step[k];k++;}users.elem[i].step[k]=foot;sum+=users.elem[i].step[k];users.elem[i].averagesteps=sum/7.0;}
}
void modify_2(user &users){cout<<"请输入要修改步数的用户名:";string target;cin>>target;int flag=0,foot=0;for(int i=0;i<users.length;i++){if(!users.elem[i].idcard.compare(target)){flag=1;cout<<"请输入修改的步数:";cin>>foot;users.elem[i].step[6]=foot;}else{int k=0;for(int j=1;j<7;j++){users.elem[i].step[k++]=users.elem[i].step[j];}users.elem[i].step[k]=0;}}if(flag==0)cout<<"查无此人"<<endl;if(flag==1) cout<<"修改成功!"<<endl;
}
void show_2(user &users){cout<<"    用户名"<<"    昵称   "<<" 性别 "<<" 年龄 "<<" 第一天 "<<" 第二天 "<<" 第三天 "<<" 第四天 "<<" 第五天 "<<" 第六天 "<<" 第七天 "<<" 连续运动天数 "<<" 平均步数 "<<endl;for(int i=0;i<users.length;i++){cout<<left<<users.elem[i].idcard<<"    "<<left<<users.elem[i].name<<"    "<<left<<users.elem[i].sex<<"    "<<left<<users.elem[i].age<<"    ";for(int j=0;j<7;j++){cout<<left<<users.elem[i].step[j]<<"   ";}cout<<"       "<<account(users.elem[i])<<"        "<<users.elem[i].averagesteps<<endl;}
}
int account(people t){//计算连续运动天数 int max=0,num=0;for(int i=0;i<7;i++){if(t.step[i]>0){num++;if(max<num) max=num;}else{if(max<num) {max=num;num=0;}else num=0;}} return max;
} 

8功能3运动排行榜.h

#ifndef eh
#define eh
//运动排行榜
void menu3();
void reach3(user &users);
void sort_1(user users);
void sort_2(user users);
void sort_3(user users);
#endif

9功能3运动排行榜.cpp

#include "main.h"
#include "reach3.h"
void reach3(user &users){while(1){menu3();cout<<"请选择排序方式:";int x=-1;cin>>x;switch(x){case 0: return ;case 1: sort_1(users);break;case 2: sort_2(users);break;case 3: sort_3(users);break;default:cout<<"Input Error"<<endl;break;}system("pause");system("cls");}
}
void sort_1(user users){cout<<"按照当天运动步数排行:"<<endl;cout<<" 用户名 "<<" 昵称 "<<" 当天运动步数:"<<endl;for (int i = 0; i < users.length-1; i++) {int min = i;for (int j = i; j < users.length; j++) {if (users.elem[min].step[6] < users.elem[j].step[6]) {min = j;}}if (min != i) {swap(users.elem[i],users.elem[min]);}}for(int i=0;i<users.length;i++){cout<<users.elem[i].idcard<<"  "<<users.elem[i].name<<"  "<<users.elem[i].step[6]<<endl;}
}
void sort_2(user users) {cout<<"按照连续运动天数排行:"<<endl;cout<<" 用户名 "<<" 昵称 "<<" 连续运动天数:"<<endl;for (int i = 0; i < users.length-1; i++) {int min = i;for (int j = i; j < users.length; j++) {if (users.elem[min].day < users.elem[j].day) {min = j;}}if (min != i) {swap(users.elem[i],users.elem[min]);}}for(int i=0;i<users.length;i++){cout<<users.elem[i].idcard<<"  "<<users.elem[i].name<<"  "<<users.elem[i].day<<endl;}
} 
void sort_3(user users){cout<<"按照一周总步数排行:"<<endl;cout<<" 用户名 "<<" 昵称 "<<" 平均步数:";for (int i = 0; i < users.length-1; i++) {int min = i;for (int j = i; j < users.length; j++) {if (users.elem[min].averagesteps < users.elem[j].averagesteps) {min = j;}}if (min != i) {swap(users.elem[i],users.elem[min]);}
}
for(int i=0;i<users.length;i++){cout<<users.elem[i].idcard<<"  "<<users.elem[i].name<<"  "<<users.elem[i].averagesteps<<endl;}
} 

10功能4定制运动路线.h

#ifndef ge
#define ge
//定制运动路线
#define Maxint 32767//表示无穷大 
#define MVNum 20//最大顶点数 
typedef char VerTexType;//设顶点的数据类型为字符型
typedef double ArcType;//假设边的权值类型为浮点型 
typedef struct {VerTexType vexs[MVNum][50];//顶点表ArcType arcs[MVNum][MVNum];//邻接矩阵int vexnum, arcnum;//图的当前点数和边数 
}AMGraph;
void menu4();
void reach4(user &users);
status LocateVex(AMGraph G, char* u);
status Selectgraph(AMGraph G,char *s);
void draw(user users,AMGraph& G);
void choice(user users,AMGraph G);
status Readtxtgraph(AMGraph& G);
#endif

11功能4定制运动路线.cpp

#include "main.h"
#include "reach4.h"
status Readtxtgraph(AMGraph& G)
{int i = 0, j, k;double w;int s;char s1[50], s2[50];fstream f;f.open("C:\\Users\\a1474\\OneDrive\\桌面\\新建项目\\stu1.txt", ios::in);while (f >> s >> G.vexs[i]){i++;}f.close();G.vexnum = i;for (i = 0; i < G.vexnum; i++)for (j = 0; j < G.vexnum; j++)G.arcs[i][j] = Maxint;//边的权值均设置为无穷大 i = 0;f.open("C:\\Users\\a1474\\OneDrive\\桌面\\新建项目\\stu2.txt", ios::in);while (f >> s1 >> s2 >> w){k = LocateVex(G, s1);j = LocateVex(G, s2);//确定v1,v2在G中的位置 G.arcs[k][j] = w;G.arcs[j][k] = w;i++;}f.close();G.arcnum = i;cout << "运动地点名称:" << endl;for (i = 0; i < G.vexnum; i++){cout << G.vexs[i];cout << endl;}cout << "各运动地点间距离得出的邻接矩阵:" << endl;for (i = 0; i < G.vexnum; i++){for (j = 0; j < G.vexnum; j++){if (G.arcs[i][j] == 32767)cout << left << setw(4) << "∞";elsecout << left << setw(4) << G.arcs[i][j];}}return 1;
}status LocateVex(AMGraph G, char* u)
{int o;for (o = 0; o < G.vexnum; o++){if (strcmp(G.vexs[o], u) == 0)return o;}return -1;
}void draw(user users,AMGraph& G){if(Readtxtgraph(G)){cout<<"绘制完成"<<endl;} return ;
} void choice(user users,AMGraph G){char s[50];cout<<"请输入运动起点:";cin>>s;Selectgraph(G,s); 
}
status Selectgraph(AMGraph G,char *s)
{int n;for(n=0;n<G.vexnum;n++){if(strcmp(G.vexs[n],s)==0)break;}if(n==G.vexnum)return 0;int p[G.vexnum][G.vexnum];int i,S[G.vexnum],j,k;int a[G.vexnum];int num=1,u;double dist[G.vexnum],wmin;for(i=0;i<G.vexnum;i++){a[i]=-1;}for(i=0;i<G.vexnum;i++){for(j=0;j<G.vexnum;j++){p[i][j]=-1;}}for(i=0;i<G.vexnum;i++){dist[i]=G.arcs[n][i];S[i]=0;}S[n]=1;for(i=0;i<G.vexnum;i++){p[i][0]=n;}do{wmin=Maxint;u=n;for(i=0;i<G.vexnum;i++){if(S[i]==0){if(dist[i]<wmin){u=i;wmin=dist[i];}}}S[u]=1;for(i=0;i<G.vexnum;i++){if(p[u][i]==-1){p[u][i]=u;break;}}for(i=0;i<G.vexnum;i++){if(S[i]==0){if(dist[u]+G.arcs[u][i]<dist[i]){k=1;for(j=0;j<G.vexnum;j++){if(p[i][j]==-1&&a[i]==-1)a[i]=j; if(p[i][j]==-1){break;}}j=a[i];while(p[u][k]!=-1){p[i][j]=p[u][k];k++;j++;}dist[i]=dist[u]+G.arcs[u][i];}if(num==G.vexnum-2)p[i][j]=i;}}num++;}while(num!=G.vexnum-1);for(i=0;i<G.vexnum;i++){j=0;if(i==n)continue;else{while(p[i][j]!=-1){cout<<left<<setw(16)<<G.vexs[p[i][j]];j++;}cout<<dist[i]<<endl;}}return 1;
}
void reach4(user &users){AMGraph G;while(1){menu4();cout<<"请输入选择:";int x;cin>>x;switch(x){case 0: return ;case 1:draw(users, G);break;case 2:choice(users,G);break;default:cout<<"Input Error"<<endl;break;}system("pause");system("cls");}
}

12功能5 数据文件操作.h

#ifndef geh
#define geh
//数据文件操作
void menu5();
status reach5(user &users);
status read(user &users);
status write(people t1);
status writeall(user &users);
#endif

13功能5 数据文件操作.cpp

#include "main.h"
#include "reach5.h"
string idcard;
string name;
string sex;
int age;
double averagesteps;
status reach5(user &users) {while(1){menu5();cout << "请选择:";int x=-1;cin >> x;switch (x) {case 0: system("cls");return 1;case 1:read(users); break;case 2:writeall(users);break;default:cout << "Input Error,Please Rnew Input"<<endl; break;}system("pause");system("cls");}return 1;
}
status read(user &users) {//读取用户信息 int n,j=0;people t1;fstream f("C:\\Users\\a1474\\OneDrive\\桌面\\新建项目\\stu.txt",ios::in);if (!f)                                //打开失败{cout << "文件打开失败!" << endl;return 1;}else {cout << "文件打开成功" << endl;}while (f >> t1.idcard>>t1.name >> t1.sex >> t1.age){n = 0;while (f >> t1.step[n]){n++;if (n == 7)break;}f >> t1.averagesteps;f >> t1.day;users.elem[j++]=t1;users.length++;}f.close();for (int i = 0; i <users.length; i++){cout << setw(16) << users.elem[i].idcard;cout << left << setw(8) << users.elem[i].name;cout << left << setw(8) << users.elem[i].sex;cout << left << setw(8) << users.elem[i].age;for (int j = 0; j < 7; j++){cout << left << setw(8) << users.elem[i].step[j];}cout << left << setw(16) << users.elem[i].averagesteps;//cout << left << setw(8) << users.elem[i].day;cout << endl;}return 1;
}
status write(people t1)//写临时文件,防止断电等紧急关闭 
{int i;fstream f;f.open("C:\\Users\\a1474\\OneDrive\\桌面\\新建项目\\stu3.txt",ios::out|ios::app);if(!f){cout<<"文件打开失败!"<<endl; return 1;}f<<left<<setw(16)<<t1.idcard;f<<left<<setw(8)<<t1.name;f<<left<<setw(8)<<t1.sex;f<<left<<setw(8)<<t1.age;for(int j=0;j<7;j++){f<<left<<setw(8)<<t1.step[j];}f<<left<<setw(16)<<t1.averagesteps;f<<endl;f.close();return 1;
}
status writeall(user &users){ifstream ifa;people t1;ifa.open("C:\\Users\\a1474\\OneDrive\\桌面\\新建项目\\stu3.txt", ios::in);char c;ifa >> c;if (ifa.fail()){//cout << "文件为空!" << endl;ifa.close();}else{cout<<"检测到有临时数据是否恢复并保存(0no 1yes):";while(1){int x=-1,flag=0;cin>>x;switch(x){case 1:while (ifa >> t1.idcard>>t1.name >> t1.sex >> t1.age){int n = 0;while (ifa >> t1.step[n]){n++;if (n == 7)break;}ifa >> t1.averagesteps;users.elem[users.length-1]=t1;users.length++;}cout<<"数据恢复成功!";flag=1;break;case 0: flag=1;break;default:cout<<"选择错误,请重新选择:"; break;}if(flag==1) break;}}ifa.close();fstream f;f.open("C:\\Users\\a1474\\OneDrive\\桌面\\新建项目\\stu4.txt",ios::out);if(!f){cout<<"文件打开失败!"<<endl; return 1;}for( int i=0; i<users.length; i++) {f<<left<<setw(16)<<users.elem[i].idcard;f<<left<<setw(8)<<users.elem[i].name;f<<left<<setw(8)<<users.elem[i].sex;f<<left<<setw(8)<<users.elem[i].age;for(int j=0;j<7;j++){f<<left<<setw(8)<<users.elem[i].step[j];}f<<left<<setw(16)<<users.elem[i].averagesteps;f<<endl;}f.close();cout<<"文件保存成功!"<<endl;return 1;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Oracle(76)如何收集统计信息?
  • 深度解析Python PyInstaller打包EXE的详细教程
  • C#发送邮件功能实现全面指南?有哪些方法?
  • C语言--01基础数据类型
  • 前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)
  • 【设计模式】六大原则-下
  • OpenAI 重回巅峰:ChatGPT-4O 最新模型超越谷歌 Gemini 1.5,多项测试夺冠!
  • C++ | Leetcode C++题解之第355题设计推特
  • QTday04
  • 复现 LET-NET
  • rust api接口开发(以登陆和中间件鉴权为例)
  • 企业高性能web服务器之nginx篇
  • 26-vector arraylist和linkedlist的区别
  • 保研考研机试攻略:第七章——图论(2)
  • 5 - Linux YUM仓库及NFS共享服务
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Akka系列(七):Actor持久化之Akka persistence
  • AngularJS指令开发(1)——参数详解
  • Javascript设计模式学习之Observer(观察者)模式
  • Java读取Properties文件的六种方法
  • Java反射-动态类加载和重新加载
  • LeetCode29.两数相除 JavaScript
  • Linux后台研发超实用命令总结
  • MobX
  • Vim 折腾记
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 聊聊hikari连接池的leakDetectionThreshold
  • 区块链技术特点之去中心化特性
  • 深入浅出webpack学习(1)--核心概念
  • 回归生活:清理微信公众号
  • 如何在招聘中考核.NET架构师
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​比特币大跌的 2 个原因
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​香农与信息论三大定律
  • # include “ “ 和 # include < >两者的区别
  • # Redis 入门到精通(一)数据类型(4)
  • # 安徽锐锋科技IDMS系统简介
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (4)STL算法之比较
  • (CPU/GPU)粒子继承贴图颜色发射
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (二)JAVA使用POI操作excel
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二开)Flink 修改源码拓展 SQL 语法
  • (分布式缓存)Redis哨兵
  • (论文阅读30/100)Convolutional Pose Machines
  • (四)模仿学习-完成后台管理页面查询
  • (四)软件性能测试
  • (四)事件系统
  • (总结)Linux下的暴力密码在线破解工具Hydra详解