【数据结构实践课设】新生报道注册管理信息系统

目录

1.主要框架

2.写入文件

3.读取文件

4.注册学生信息

5.增加学生信息

6.删除学生信息

7.按姓名查询

8.按班级查询

9.按专业查询

10.打印学生信息

11.完整代码


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

完整代码在最后面。

这次我们的目标是用C语言实现新生报道注册管理信息系统。

这是我们要用到 C 语言中的三个头文件,分别是:

#include <stdio.h>:它包含了一些输入输出的函数,例如printf()和scanf()。

#include <stdlib.h>:它包含了实用的函数,例如动态内存分配函数malloc() 和free()。

#include <string.h>:它包含了一些操作字符串的函数,例如strcpy() 和strcat()。

1.主要框架

我们首先定义了一个表示学生的结构体,然后声明了要用到的函数,接着编写主函数,搭建好了大致的系统框架:

// 定义一个表示学生的结构体
struct student {char nam[10];       // 学生姓名char sex[4];        // 学生性别char spec[20];      // 学生专业char classid[10];   // 学生班级IDchar phone[15];     // 学生电话号码char bedroom[8];    // 学生宿舍号码
};// 函数声明
void createdata(struct student *stu, int *len);        // 注册学生信息
void add(struct student *stu, int *len);               // 增加学生信息
void delete_student(struct student *stu, int *len);    // 删除学生信息
void search_name(struct student *stu, int len);        // 按姓名查询
void search_class(struct student *stu, int len);       // 按班级查询
void search_specialty(struct student *stu, int len);   // 按专业查询
void print_fun(struct student *stu, int len);          // 打印学生信息// 主函数
int main() {int choice;struct student p[1024];int len = 0;while (1) {printf("\n                         新生报到信息注册系统\n\n");printf("**********************************************************************\n");printf("1. 注册学生信息\n");printf("2. 增加学生信息\n");printf("3. 删除学生信息\n");printf("4. 按姓名查询\n");printf("5. 按班级查询\n");printf("6. 按专业查询\n");printf("7. 打印学生信息\n");printf("8. 退出系统\n");printf("**********************************************************************\n");printf("请输入选项:");scanf("%d", &choice);switch (choice) {case 1: // 注册学生信息createdata(p, &len);break;case 2: // 增加学生信息add(p, &len);break;case 3: // 删除学生信息delete_student(p, &len);break;case 4: // 按姓名查询search_name(p, len);break;case 5: // 按班级查询search_class(p, len);break;case 6: // 按专业查询search_specialty(p, len);break;case 7: // 打印学生信息print_fun(p, len);break;case 8: // 退出系统printf("谢谢您的使用!\n\n");exit(0); // 退出程序default:printf("输入有误!请重新输入。\n\n");break;}}return 0;
}

接下来,我们要编写前面声明了的函数。

2.写入文件

// 定义一个名为regis的函数
// 参数为一个指向struct student类型的指针p和一个整型变量len
void regis(struct student *p, int len) {// 定义一个FILE类型的指针,用于打开/关闭文件FILE *fp;// 打开名为student_info.txt的文件,使用写入模式打开,即将内容写入到文件尾部fp = fopen("student_info.txt", "w");// 循环遍历学生信息数组for (int i = 0; i < len; i++) {// 将学生信息按指定格式写入到文件中fprintf(fp, "%s %s %s %s %s %s\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);}// 关闭文件fclose(fp);
}

函数regis用于将结构体数组中的数据写入到文件中。它首先使用fopen函数打开一个名为"student_info.txt"的文件,并指定模式为"w",表示以写入方式打开文件。然后,使用fprintf函数将结构体数组中的数据按照指定的格式写入文件。最后,使用fclose函数关闭文件。

3.读取文件

// 定义一个名为read_data的函数
// 参数为一个指向struct student类型的指针p和一个指向整型变量len的指针
void read_data(struct student *p, int *len) {// 定义一个FILE类型的指针,用于打开/关闭文件FILE *fp;// 打开名为student_info.txt的文件,使用读取模式打开fp = fopen("student_info.txt", "r");// 检查文件是否打开成功if (fp == NULL) {printf("文件打开失败\n");return;}// 循环读取文件中的学生信息,直到遇到文件结尾或读取出错while (fscanf(fp, "%s %s %s %s %s %s", p[*len].nam, p[*len].sex, p[*len].spec, p[*len].classid, p[*len].phone, p[*len].bedroom) == 6) {// 每读取一行信息,增加len的值(*len)++;}// 关闭文件fclose(fp);
}

函数read_data用于从文件中读取数据并存入结构体数组中。它首先使用fopen函数打开名为"student_info.txt"的文件,并指定模式为"r",表示以只读方式打开文件。然后,它使用fscanf函数按照指定的格式逐行读取文件中的数据,并将读取的数据存入结构体数组p中的相应位置。同时,使用指针len来记录读取的数据行数。最后,使用fclose函数关闭文件。

regis和read_data这两个函数配合使用可以实现将结构体数组中的数据写入文件,以及从文件中读取数据并存入结构体数组中的功能。

4.注册学生信息

void createdata(struct student *p, int *len) {int n;      // 定义变量n,用于存储学生人数printf("报到学生人数:");scanf("%d", &n);   // 从用户输入中获取学生人数信息printf("请输入学生信息:\n");// 循环获取每个学生的信息,共n次for (int i = 0; i < n; i++) {printf("学生%d:\n", i+1);printf("姓名:");scanf("%s", p[i].nam);printf("性别:");scanf("%s", p[i].sex);printf("专业:");scanf("%s", p[i].spec);printf("班级:");scanf("%s", p[i].classid);printf("电话号码:");scanf("%s", p[i].phone);printf("宿舍号:");scanf("%s", p[i].bedroom);printf("\n");}*len = n;   // 将len的值设为学生人数nregis(p, n);    // 将学生信息写入文件
}

首先,该函数会从用户输入中获取学生人数,并将其存储在变量`n`中。然后,函数会通过循环获取每个学生的信息,并将其存储在结构体数组`p`的相应位置。每次循环,函数会提示用户输入学生的姓名、性别、专业、班级、电话号码和宿舍号,并使用`scanf`函数读取用户的输入。接下来,函数将学生人数`n`存储到通过指针`len`传递的变量中,以便在后续的代码中可以使用。然后,函数会调用`regis`函数,将结构体数组中的学生信息写入文件中。

5.增加学生信息

void add(struct student *p, int *len) {int c = 1;   // 定义变量c,用于存储用户的选择// 循环添加学生信息,直到用户选择退出while (c == 1) {int mylen = *len;   // 将len的值赋给mylenstruct student st;   // 定义一个struct student类型的变量st,用于存储要添加的学生信息printf("请输入要添加学生的信息:\n");printf("姓名:");scanf("%s", st.nam);printf("性别:");scanf("%s", st.sex);printf("专业:");scanf("%s", st.spec);printf("班级:");scanf("%s", st.classid);printf("电话号码:");scanf("%s", st.phone);printf("宿舍号:");scanf("%s", st.bedroom);printf("\n");p[mylen] = st;   // 将学生信息添加到数组p的末尾*len = mylen + 1;   // 将len的值增加1print_fun(p, *len);   // 打印所有学生的信息printf("\n");printf("是否继续添加?输入:\n1.继续\n2.退出\n");scanf("%d", &c);   // 获取用户的选择}regis(p, *len);   // 将学生信息写入文件
}

函数首先定义变量c,用于存储用户的选择,然后通过循环添加学生信息,直到用户选择退出。循环内部,函数先将指针len指向的值存储到变量mylen中,然后定义一个新的结构体变量st,用来存储要添加的学生信息。接着,函数会提示用户输入要添加的学生信息,使用scanf函数获取用户的输入,并将输入的信息存储到结构体变量st中。然后,将st所存储的学生信息添加到原有学生信息的结构体数组p的末尾。另外,通过指针len传递的值增加1,以便在后续的代码中可以使用。

接下来,函数调用print_fun函数,将所有学生的信息打印出来以便修改验证。然后,函数会提示用户选择是否继续添加,如果用户选择退出,则跳出循环。最后,函数调用regis函数将更新后的学生信息写入文件中,以便下次使用时可以使用。

6.删除学生信息

void delete_student(struct student *p, int *len) {char nam[10];   // 定义一个字符数组,用于存储要删除的学生姓名printf("请输入要删除的学生姓名: ");scanf("%s", nam);   // 获取用户输入的学生姓名int flag = 0;   // 定义一个标志变量,用于记录是否找到匹配的学生姓名// 循环查找学生姓名,并删除匹配的学生记录for (int i = 0; i < *len; i++) {if (strcmp(p[i].nam, nam) == 0) {   // 如果找到匹配的学生姓名// 将后面的学生记录依次向前移动for (int j = i; j < *len - 1; j++) {strcpy(p[j].nam, p[j + 1].nam);strcpy(p[j].sex, p[j + 1].sex);strcpy(p[j].spec, p[j + 1].spec);strcpy(p[j].classid, p[j + 1].classid);strcpy(p[j].phone, p[j + 1].phone);strcpy(p[j].bedroom, p[j + 1].bedroom);}(*len)--;   // 更新学生记录数量flag = 1;   // 设置标志变量为1,表示找到了匹配的学生姓名break;   // 跳出循环}}if (flag) {   // 如果找到了匹配的学生姓名printf("删除成功!\n");regis(p, *len);   // 将更新后的学生信息写入文件} else {   // 如果没有找到匹配的学生姓名printf("学生姓名不存在!\n");}
}

函数首先定义一个字符数组`nam`,用于存储要删除的学生姓名,并提示用户输入要删除的学生姓名。然后使用`scanf`函数获取用户输入的学生姓名。接着,函数定义一个标志变量`flag`,用于记录是否找到匹配的学生姓名。

接下来,函数通过循环遍历已有的学生记录,从中查找匹配的学生姓名,并删除匹配的学生记录。当找到匹配的学生姓名时,函数使用一个内层循环将后面的学生记录依次向前移动,以覆盖被删除的学生记录。在移动学生记录后,通过`strcpy`函数将后面学生记录的属性值依次复制到当前学生记录中。同时,通过递减指针`len`所指向的值,以更新学生记录的数量。

如果成功删除了学生记录,则将标志变量`flag`设置为1表示找到了匹配的学生姓名,并跳出循环。否则,如果没有找到匹配的学生姓名,则标志变量`flag`保持为0。

最后,函数根据标志变量`flag`的值,判断是否成功删除了学生记录。如果成功删除了学生记录,则打印"删除成功!"的提示,并调用`regis`函数将更新后的学生信息写入文件。否则,如果没有找到匹配的学生姓名,则打印"学生姓名不存在!"的提示。

7.按姓名查询

void search_name(struct student *p, int len) {char nam1[100];   // 定义一个字符数组,用于存储要查询的学生姓名printf("请输入要查询学生姓名:");scanf("%s", nam1);   // 获取用户输入的学生姓名printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");int flag = 0;   // 定义一个标志变量,用于记录是否找到匹配的学生姓名// 循环查找学生姓名,并输出匹配的学生记录for (int i = 0; i < len; i++) {if (strcmp(p[i].nam, nam1) == 0) {   // 如果找到匹配的学生姓名printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);flag = 1;   // 设置标志变量为1,表示找到了匹配的学生姓名break;   // 跳出循环}}if (!flag) {   // 如果没有找到匹配的学生姓名printf("姓名输入有误!\n");}
}

函数首先定义一个字符数组`nam1`,用于存储要查询的学生姓名,并提示用户输入要查询的学生姓名。然后使用`scanf`函数获取用户输入的学生姓名。接着,函数打印一个表头,用于显示学生信息的各个属性。同时,函数定义一个标志变量`flag`,用于记录是否找到匹配的学生姓名。

接下来,函数通过循环遍历已有的学生记录,从中查找匹配的学生姓名,并输出匹配的学生记录。当找到匹配的学生姓名时,函数使用`printf`函数按照指定的格式输出匹配的学生的姓名、性别、专业、班级、电话号码和宿舍号。同时,将标志变量`flag`设置为1表示找到了匹配的学生姓名,并跳出循环。

最后,函数根据标志变量`flag`的值,判断是否成功找到了匹配的学生姓名。如果没有找到匹配的学生姓名,则打印"姓名输入有误!"的提示。

8.按班级查询

void search_class(struct student *p, int len) {char classid[10];   // 定义一个字符数组,用于存储要查询的班级printf("请输入要查询的班级: ");scanf("%s", classid);   // 获取用户输入的班级printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");int flag = 0;   // 定义一个标志变量,用于记录是否找到匹配的班级// 循环查找班级,并输出匹配的学生记录for (int i = 0; i < len; i++) {if (strcmp(p[i].classid, classid) == 0) {   // 如果找到匹配的班级printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);flag = 1;   // 设置标志变量为1,表示找到了匹配的班级}}if (!flag) {   // 如果没有找到匹配的班级printf("没有找到该班级的学生信息!\n");}
}

函数首先定义一个字符数组`classid`,用于存储要查询的班级,并提示用户输入要查询的班级。然后使用`scanf`函数获取用户输入的班级。接着,函数打印一个表头,用于显示学生信息的各个属性。同时,函数定义一个标志变量`flag`,用于记录是否找到匹配的班级。

接下来,函数通过循环遍历已有的学生记录,从中查找匹配的班级,并输出匹配的学生记录。当找到匹配的班级时,函数使用`printf`函数按照指定的格式输出匹配的学生的姓名、性别、专业、班级、电话号码和宿舍号。同时,将标志变量`flag`设置为1表示找到了匹配的班级。

最后,函数根据标志变量`flag`的值,判断是否成功找到了匹配的班级。如果没有找到匹配的班级,则打印"没有找到该班级的学生信息!"的提示。

9.按专业查询

void search_specialty(struct student *p, int len) {char spec[20];   // 定义一个字符数组,用于存储要查询的专业printf("请输入要查询的专业: ");scanf("%s", spec);   // 获取用户输入的专业printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");int flag = 0;   // 定义一个标志变量,用于记录是否找到匹配的专业// 循环查找专业,并输出匹配的学生记录for (int i = 0; i < len; i++) {if (strcmp(p[i].spec, spec) == 0) {   // 如果找到匹配的专业printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);flag = 1;   // 设置标志变量为1,表示找到了匹配的专业}}if (!flag) {   // 如果没有找到匹配的专业printf("没有找到该专业的学生信息!\n");}
}

函数首先定义一个字符数组`spec`,用于存储要查询的专业,并提示用户输入要查询的专业。然后使用`scanf`函数获取用户输入的专业。接着,函数打印一个表头,用于显示学生信息的各个属性。同时,函数定义一个标志变量`flag`,用于记录是否找到匹配的专业。

接下来,函数通过循环遍历已有的学生记录,从中查找匹配的专业,并输出匹配的学生记录。当找到匹配的专业时,函数使用`printf`函数按照指定的格式输出匹配的学生的姓名、性别、专业、班级、电话号码和宿舍号。同时,将标志变量`flag`设置为1表示找到了匹配的专业。

最后,函数根据标志变量`flag`的值,判断是否成功找到了匹配的专业。如果没有找到匹配的专业,则打印"没有找到该专业的学生信息!"的提示。

10.打印学生信息

void print_fun(struct student *p, int len) {printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");// 循环输出所有学生记录for (int i = 0; i < len; i++) {printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);}
}

函数首先打印一个表头,用于显示学生信息的各个属性。接着,函数通过循环遍历已有的学生记录,并使用`printf`函数按照指定的格式输出每个学生的姓名、性别、专业、班级、电话号码和宿舍号。

11.完整代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 定义一个表示学生的结构体
struct student {char nam[10];       char sex[4];        char spec[20];      char classid[10];   char phone[15];     char bedroom[8];    
};// 函数声明
void createdata(struct student *stu, int *len);        // 注册学生信息
void add(struct student *stu, int *len);               // 增加学生信息
void delete_student(struct student *stu, int *len);    // 删除学生信息
void search_name(struct student *stu, int len);        // 按姓名查询
void search_class(struct student *stu, int len);       // 按班级查询
void search_specialty(struct student *stu, int len);   // 按专业查询
void print_fun(struct student *stu, int len);          // 打印学生信息// 主函数
int main() {int choice;struct student p[1024];int len = 0;while (1) {printf("\n                         新生报到信息注册系统\n\n");printf("**********************************************************************\n");printf("1. 注册学生信息\n");printf("2. 增加学生信息\n");printf("3. 删除学生信息\n");printf("4. 按姓名查询\n");printf("5. 按班级查询\n");printf("6. 按专业查询\n");printf("7. 打印学生信息\n");printf("8. 退出系统\n");printf("**********************************************************************\n");printf("请输入选项:");scanf("%d", &choice);switch (choice) {case 1: createdata(p, &len);break;case 2: add(p, &len);break;case 3: delete_student(p, &len);break;case 4: search_name(p, len);break;case 5: search_class(p, len);break;case 6: search_specialty(p, len);break;case 7: print_fun(p, len);break;case 8: printf("谢谢您的使用!\n\n");exit(0); default:printf("输入有误!请重新输入。\n\n");break;}}return 0;
}//写入文件 
void regis(struct student *p, int len) {FILE *fp;fp = fopen("student_info.txt", "w");for (int i = 0; i < len; i++) {fprintf(fp, "%s %s %s %s %s %s\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);}fclose(fp);
}// 读取文件
void read_data(struct student *p, int *len) {FILE *fp;fp = fopen("student_info.txt", "r");if (fp == NULL) {printf("文件打开失败\n");return;}while (fscanf(fp, "%s %s %s %s %s %s", p[*len].nam, p[*len].sex, p[*len].spec, p[*len].classid, p[*len].phone, p[*len].bedroom) == 6) {(*len)++;}fclose(fp);
}// 注册学生信息
void createdata(struct student *p, int *len) {int n;      printf("报到学生人数:");scanf("%d", &n);   printf("请输入学生信息:\n");for (int i = 0; i < n; i++) {printf("学生%d:\n", i+1);printf("姓名:");scanf("%s", p[i].nam);printf("性别:");scanf("%s", p[i].sex);printf("专业:");scanf("%s", p[i].spec);printf("班级:");scanf("%s", p[i].classid);printf("电话号码:");scanf("%s", p[i].phone);printf("宿舍号:");scanf("%s", p[i].bedroom);printf("\n");}*len = n;   regis(p, n);    
}// 增加学生信息
void add(struct student *p, int *len) {int c = 1;   while (c == 1) {int mylen = *len;   struct student st;   printf("请输入要添加学生的信息:\n");printf("姓名:");scanf("%s", st.nam);printf("性别:");scanf("%s", st.sex);printf("专业:");scanf("%s", st.spec);printf("班级:");scanf("%s", st.classid);printf("电话号码:");scanf("%s", st.phone);printf("宿舍号:");scanf("%s", st.bedroom);printf("\n");p[mylen] = st;   *len = mylen + 1;   print_fun(p, *len);   printf("\n");printf("是否继续添加?输入:\n1.继续\n2.退出\n");scanf("%d", &c);   }regis(p, *len);   
}// 删除学生信息
void delete_student(struct student *p, int *len) {char nam[10];   printf("请输入要删除的学生姓名: ");scanf("%s", nam);   int flag = 0;   for (int i = 0; i < *len; i++) {if (strcmp(p[i].nam, nam) == 0) {   for (int j = i; j < *len - 1; j++) {strcpy(p[j].nam, p[j + 1].nam);strcpy(p[j].sex, p[j + 1].sex);strcpy(p[j].spec, p[j + 1].spec);strcpy(p[j].classid, p[j + 1].classid);strcpy(p[j].phone, p[j + 1].phone);strcpy(p[j].bedroom, p[j + 1].bedroom);}(*len)--;   flag = 1;   break;   }}if (flag) {   printf("删除成功!\n");regis(p, *len);   } else {   printf("学生姓名不存在!\n");}
}// 按姓名查询
void search_name(struct student *p, int len) {char nam1[100];   printf("请输入要查询学生姓名:");scanf("%s", nam1);   printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");int flag = 0;   for (int i = 0; i < len; i++) {if (strcmp(p[i].nam, nam1) == 0) {   printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);flag = 1;   break;   }}if (!flag) {   printf("姓名输入有误!\n");}
}// 按班级查询
void search_class(struct student *p, int len) {char classid[10];   printf("请输入要查询的班级: ");scanf("%s", classid);   printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");int flag = 0;   for (int i = 0; i < len; i++) {if (strcmp(p[i].classid, classid) == 0) {   printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);flag = 1;   }}if (!flag) {   printf("没有找到该班级的学生信息!\n");}
}// 按专业查询
void search_specialty(struct student *p, int len) {char spec[20];   printf("请输入要查询的专业: ");scanf("%s", spec);   printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");int flag = 0;   for (int i = 0; i < len; i++) {if (strcmp(p[i].spec, spec) == 0) {   printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);flag = 1;   }}if (!flag) {   printf("没有找到该专业的学生信息!\n");}
}// 打印学生信息
void print_fun(struct student *p, int len) {printf("姓名\t性别\t专业\t班级\t电话号码\t宿舍号\t\n");for (int i = 0; i < len; i++) {printf("%s\t%s\t%s\t%s\t%s\t\t%s\t\n", p[i].nam, p[i].sex, p[i].spec, p[i].classid, p[i].phone, p[i].bedroom);}
}

运行截图:

说明:输入选项1后,填写报到学生人数最好不要超过10人,主要是一条一条数据输入得输半天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/212366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】第二十七站:内存管理与文件页缓冲区

文章目录 一、物理内存和磁盘交换数据的最小单位二、操作系统如何管理内存三、文件的页缓冲区四、基数树or基数&#xff08;字典树&#xff09;五、总结 一、物理内存和磁盘交换数据的最小单位 我们知道系统当中除了进程管理、文件管理以外&#xff0c;还有内存管理 内存的本质…

思科最新版Cisco Packet Tracer 8.2.1安装

思科最新版Cisco Packet Tracer 8.2.1安装 一. 注册并登录CISCO账号二. 下载 Cisco Packet Tracer 8.2.1三. 安装四. 汉化五. cisco packet tracer教学文档六. 正常使用图 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新…

[香橙派]orange pi zero 3 烧录Ubuntu系统镜像——无需HDMI数据线安装

一、前言 本文我们将介绍如何使用orange pi zero 3 安装Ubuntu系统&#xff0c;本文相关步骤均参考自开发手册。 二、实施准备 根据开发手册中所提到的&#xff0c;我们应该拥有如下配件: 1.orange pi zero 3 开发板 2.TF 卡——最小 8GB 容量的 class10 级或以上的高速闪迪卡。…

鸿蒙OS应用开发之语句

在程序开发中&#xff0c;已经有上面的运算符和数据类型了&#xff0c;可以满足了大部的需求&#xff0c;但是这些程序还是比较简单的计算和逻辑运算&#xff0c;如果需要复杂的计算和逻辑处理&#xff0c;就需要采用复杂逻辑程序块来处理了&#xff0c;也就是复杂条件语句才能…

模型 心流

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。完全投入其中。 1 心流的应用 1.1 优秀运动员的心流体验 迈克尔乔丹&#xff08;Michael Jordan&#xff09;&#xff1a;篮球之神乔丹在比赛中经常进入心流状态&#xff0c;他曾表示&#xff…

DIY手工艺作坊网站建设的作用如何

我国文化悠久流长&#xff0c;很多手工艺品制作技术放在如今依然有很高的需求度&#xff0c;加之现代新增的技艺&#xff0c;样式多且艺术性强&#xff0c;比如常见的陶器手工制作技术&#xff0c;当然还有更多。 而对相关作坊来说&#xff0c;除了艺术传承外&#xff0c;还需…

接触刚性环境任务下的机器人力控(阻抗)性能测试

内涵 接触刚性环境任务下的机器人力控&#xff08;阻抗&#xff09;性能测试旨在评估机器人在与刚性物体交互时的性能表现。这种测试通过调整机器人的控制参数&#xff0c;如期望刚度和期望阻尼等&#xff0c;并分析记录的数据&#xff0c;旨在确保机器人能够在执行任务时保持…

短剧分销小程序/APP开发:开启短剧收益时代

今年&#xff0c;短剧火爆出圈&#xff0c;市场规模将达至200亿元至300亿元。国内全全平台付费短剧日充值金额为6000万元&#xff0c;短剧作为一种“快餐式”文化迅速爆火。 短剧契合了观众娱乐时间碎片化的发展趋势&#xff0c;相比于传统的电视剧&#xff0c;短剧节奏快、剧…

MongoDB的连接数据库,创建、删除数据库,创建、删除集合命令

本文主要介绍MongoDB的连接数据库&#xff0c;创建、删除数据库&#xff0c;创建、删除集合命令。 目录 MongoDB连接数据库连接到本地 MongoDB 实例连接到远程 MongoDB 实例 MongoDB创建和删除数据库MongoDB创建和删除集合创建集合删除集合 MongoDB连接数据库 连接 MongoDB 数…

P1317 低洼地题解

题目 一组数&#xff0c;分别表示地平线的高度变化。高度值为整数&#xff0c;相邻高度用直线连接。找出并统计有多少个可能积水的低洼地&#xff1f; 如图&#xff1a;地高变化为 [0,1,0,2,1,2,0,0,2,0]。 输入输出格式 输入格式 两行&#xff0c;第一行n, 表示有n个数。第…

openGauss学习笔记-151 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_basebackup

文章目录 openGauss学习笔记-151 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_basebackup151.1 背景信息151.2 前提条件151.3 语法151.4 示例151.5 从备份文件恢复数据 openGauss学习笔记-151 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_basebackup 151.1 …

基于java swing 药品销售管理系统

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

短视频账号剪辑矩阵+无人直播系统源头开发

抖去推爆款视频生成器&#xff0c;通过短视频矩阵、无人直播&#xff0c;文案引流等&#xff0c;打造实体商家员工矩阵、用户矩阵、直播矩阵&#xff0c;辅助商家品牌曝光&#xff0c;团购转化等多功能赋能商家拓客引流。 短视频矩阵通俗来讲就是批量剪辑视频和批量发布视频&am…

Multisim电路仿真软件使用教程

安装直接参考这篇文章&#xff1a;Multisim 14.0安装教程 软件管家公众号里有很多软件&#xff0c;需要的可以去找下然后安装&#xff0c;这里用的是14.0版本。 这里有个大神的详细教程&#xff0c;可以参考&#xff1a; Multisim软件使用详细入门教程&#xff08;图文全解&…

Python房价分析(二)随机森林分类模型

目录 1 数据预处理 1.1 房价数据介绍 1.2 数据预处理 1.2.1 缺失值处理 1.2.2异常值处理 1.2.3 数据归一化 1.2.4 分类特征编码 2 随机森林模型 2.1 模型概述 2.2 建模步骤 2.3 参数搜索过程 3模型评估 3.1 模型评估结果 3.2 混淆矩阵 3.3 绘制房价类别三分类的…

面试官:性能测试瓶颈调优你是真的会吗?

引言&#xff1a;性能瓶颈调优 在实际的性能测试中&#xff0c;会遇到各种各样的问题&#xff0c;比如 TPS 压不上去等&#xff0c;导致这种现象的原因有很多&#xff0c;测试人员应配合开发人员进行分析&#xff0c;尽快找出瓶颈所在。 理想的性能测试指标结果可能不是很高&…

Latex公式中矩阵的方括号和圆括号表示方法

一、背景 在使用Latex写论文时&#xff0c;不可避免的涉及到矩阵公式。有的期刊要求矩阵用方括号&#xff0c;有的期刊要求矩阵用圆括号。因此&#xff0c;特记录一下Latex源码在两种表示方法上的区别&#xff0c;以及数组和方程组的扩展。 二、矩阵的方括号表示 首先所有的…

OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存

Android现行的Camera API2机制可以通过onImageAvailable(ImageReader reader)回调从底层获取到Jpeg、Yuv和Raw三种格式的Image&#xff0c;然后通过保存Image实现拍照功能&#xff0c;但是却并没有Api能直接在上层直接拿到实时预览的数据。 Android Camera预览的实现是上层下发…

Java学习笔记——instanceof关键字

instanceof关键字&#xff1a; 作用&#xff1a;保证对象向下转型的安全性在对象向下转型前判断某一对象实例是否属于某个类 判断时&#xff0c;如果对象是null&#xff0c;则 instanceof 判断结果为 false

Tr0ll

信息收集 探测主机存活信息&#xff1a; nmap -sn --min-rate 10000 192.168.182.0/24Starting Nmap 7.94 ( https://nmap.org ) at 2023-11-14 15:45 CST Nmap scan report for 192.168.182.1 Host is up (0.00026s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap…