学生管理系统更新(账号系统)

news2024/11/25 19:24:14

展示

头文件

#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>//输入输出函数
#include<stdlib.h>//动态分配函数和随机函数
#include<windows.h>//控制台程序,用来实现cmd指令,title指令,cls指令等等
#include<locale.h>//本地化,用于控制从标准库中对于不同地区会产生不一样行为的部分
#include<string.h>//字符串函数
//宏定义,学科排序
#define functioncreate(major) void major##compare(mana mn){\
	int i,j,sum=mn->sum;\
	for(i=0;i<sum-1;i++)\
	for(j=0;j<sum-i-1;j++)\
	if(mn->student[j].grade->major<mn->student[j+1].grade->major)\
	swap(&mn->student[j],&mn->student[j+1]);\
}
typedef struct a1 {	//学生成绩信息
	int Chinese;
	int Math;
	int English;
	int Physics;
	int Chemistry;
	int Organism;
	int All;
}*grade;
typedef struct a2 {	//学生信息   自定义结构体
	char name[10];
	char stunum[20];
	grade grade;
	int Class;
}*student;
typedef struct a3 {	//全体学生信息   自定义结构体
	int sum;
	student student;
	int capacity;
}*mana;
typedef struct m {
	int kind;
	char account[20];
	char password[20];
	char stunum[20];
}acco;
void setpos(short x, short y);	//设置位置
void init();	//初始化
void welcome();	//欢迎界面
void manager(mana mn);	//开始
void menu();	//菜单
void addstu(mana mn);//加入
void initmana(mana mn);// 初始化
void exportcapacity(mana mn);//扩容
void modifystu(mana mn);//修改个人
void showsin(student stu, int i);//展示单人
void showall(mana mn);
void clean(mana mn);//清空
void swap(student p1, student p2);
void compare(mana mn);
void initstu(student mn);
void stunumcompare(mana mn);
void enter();
int identify(int a);
void regist();
void read(mana all);
void save(mana all);
void clear(mana all);
void teacher(mana all);
void stu(mana all);

源文件

#include "FileName.h"
// 检查字符串是否全部为字母
bool is_alpha(const char* s) {
    for (int i = 0; i < strlen(s); i++) {
        if (!isalpha(s[i])) {
            return false;
        }
    }
    return true;
}

// 检查字符串是否全部为数字
bool is_number(const char* s) {
    for (int i = 0; i < strlen(s); i++) {
        if (!isdigit(s[i])) {
            return false;
        }
    }
    return true;
}

// 设置控制台光标位置
void setpos(short x, short y) {
    HANDLE mn = GetStdHandle(STD_OUTPUT_HANDLE);
    //此处运用句柄,句柄可以理解为一个可以操作其他设备的东西//
    COORD pos = { x,y };
    //COORD是windows APL中定义的一个结构体,表示一个字符在控制台屏幕缓冲区上的坐标
    SetConsoleCursorPosition(mn, pos);
}

// 初始化控制台,隐藏光标
void init() {
    HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    //STD_OUTPUT_HANDLE即为输出设备,可理解为窗口
    //影藏光标操作
    CONSOLE_CURSOR_INFO CursorInfo;
    GetConsoleCursorInfo(hOutput, &CursorInfo);
    //获取控制台光标信息,检索有关指定控制台屏幕缓冲区的光标大小和可见性的信息
    CursorInfo.bVisible = false;//隐藏控制台光标
    SetConsoleCursorInfo(hOutput, &CursorInfo);//设置控制台光标状态
}

// 显示欢迎界面
void welcome() {
    init();
    system("title 学生成绩管理系统");//运用title指令修改窗口指令为“学生成绩管理系统”
    system("mode con cols=100 lines=30");//运用cmd指令将黑窗大小设置为30行,100列的大小
    setpos(40, 12);//定义上面那行字出现的位置
    printf("欢迎来到学生成绩管理系统");
    setpos(40, 13);
    system("pause");//运用pause指令,用处是按下任意键才能指向下一操作
}

// 显示主菜单
void menu() {//菜单
    system("cls");//cls指令:清除1
    setpos(30, 5);
    printf("请点击相应按键决定您的下一步操作");
    setpos(30, 10);
    printf("1.添加新学生-------2.清空");
    setpos(30, 12);
    printf("3.排序---------------4.班级排名");
    setpos(30, 14);
    printf("5.修改学生信息-----6.查看学生成绩");
    setpos(30, 16);
    printf("------------0.退出-----------");
    setpos(38, 20);
}

// 初始化管理结构
void initmana(mana mn) {
    mn->capacity = 0;
    mn->student = NULL;
    mn->sum = 0;
}

// 扩展学生数组容量
void exportcapacity(mana mn) {
    if (mn->capacity > mn->sum)
        return;
    int capacity = mn->capacity == 0 ? 1 : 2 * mn->capacity;
    student temp = (student)realloc(mn->student, sizeof(struct a2) * capacity);
    if (temp == NULL) {
        printf("Error: could not allocate memory\n");
        return;
    }
    mn->student = temp;
    mn->capacity = capacity;
}

// 获取用户输入并验证
void get_input(const char* prompt, char* input, bool(*validate)(const char*)) {
    do {
        system("cls");
        setpos(30, 10);
        printf("%s", prompt);
        scanf("%s", input);
    } while (!validate(input));
}

// 初始化学生信息,包括班级信息
void initstu(student mn) {
    student now = mn;
    int sum = 0;
    char temp[100];

    get_input("请输入新学生的姓名(拼音):", temp, is_alpha);
    strcpy(now->name, temp);
    char stunum[100];
    get_input("请输入新学生的学号:", stunum, is_number);
    strcpy(now->stunum, stunum);

    char classStr[100];
    get_input("请输入新学生的班级:", classStr, is_number);
    now->Class = atoi(classStr);

    int Chinese, Math, English, Physics, Chemistry, Organism;
    int* subjects[] = { &Chinese, &Math, &English, &Physics, &Chemistry, &Organism };
    const char* subject_names[] = { "语文", "数学", "英语", "物理", "化学", "生物" };

    for (int i = 0; i < 6; i++) {
        char score[100];
        char prompt[50];
        sprintf(prompt, "请输入%s成绩:", subject_names[i]);
        get_input(prompt, score, is_number);
        *subjects[i] = atoi(score);
        sum += *subjects[i];
    }

    now->grade->Chinese = Chinese;
    now->grade->Math = Math;
    now->grade->English = English;
    now->grade->Physics = Physics;
    now->grade->Chemistry = Chemistry;
    now->grade->Organism = Organism;
    now->grade->All = sum;
    system("cls");
}

// 学号比较函数,用于排序
void stunumcompare(mana mn) {
    int i, j, sum = mn->sum;
    for (i = 0; i < sum - 1; i++) {
        for (j = 0; j < sum - i - 1; j++) {
            if (strcmp(mn->student[j].stunum,mn->student[j+1].stunum))
                swap(&mn->student[j], &mn->student[j + 1]);
        }
    }
}

// 添加新学生
void addstu(mana mn) {
    system("cls");
    exportcapacity(mn);
    mn->student[mn->sum].grade = (grade)malloc(sizeof(struct a1));
    initstu(&mn->student[mn->sum]);
    mn->sum++;
    setpos(40, 10);
    printf("加入完成");
    setpos(40, 12);
    system("pause");
    system("cls");
}

// 修改学生信息
void modifystu(mana mn) {
    system("cls");
    setpos(30, 10);
    int sum = 0;
    printf("请输入你要修改的学生名字(拼音):");
    char s[10];
    scanf("%s", s);
    int i;
    for (i = 0; i < mn->sum; i++) {
        if (strcmp(s, mn->student[i].name) == 0)
            break;
    }
    system("cls");
    if (i == mn->sum) {
        setpos(30, 10);
        printf("查无此人,");
        system("pause");
        return;
    }
    student now = &(mn->student[i]);
    initstu(now);
}

// 显示单个学生信息,包括班级
void showsin(student stu, int i) {
    setpos(20, 5 + 2 * i);
    printf("%d", stu->Class); // 显示班级信息
    setpos(25, 5 + 2 * i);
    printf("%s", stu->name); // 显示学生姓名
    setpos(30, 5 + 2 * i);
    printf("%s", stu->stunum); // 显示学号
    setpos(35, 5 + 2 * i);
    printf("%d", stu->grade->Chinese); // 显示语文成绩
    setpos(40, 5 + 2 * i);
    printf("%d", stu->grade->Math); // 显示数学成绩
    setpos(45, 5 + 2 * i);
    printf("%d", stu->grade->English); // 显示英语成绩
    setpos(50, 5 + 2 * i);
    printf("%d", stu->grade->Physics); // 显示物理成绩
    setpos(55, 5 + 2 * i);
    printf("%d", stu->grade->Chemistry); // 显示化学成绩
    setpos(60, 5 + 2 * i);
    printf("%d", stu->grade->Organism); // 显示生物成绩
    setpos(65, 5 + 2 * i);
    printf("%d", stu->grade->All); // 显示总分
}

// 显示所有学生信息,包括表头
void showall(mana mn) {
    int i = 0, sum = mn->sum;
    if (sum == 0) {
        setpos(45, 13);
        printf("暂空"); // 若无学生信息,显示暂空
    }
    system("cls");
    // 显示表头
    setpos(20, 3);
    printf("班级");
    setpos(25, 3);
    printf("姓名");
    setpos(30, 3);
    printf("学号");
    setpos(35, 3);
    printf("语文");
    setpos(40, 3);
    printf("数学");
    setpos(45, 3);
    printf("英语");
    setpos(50, 3);
    printf("物理");
    setpos(55, 3);
    printf("化学");
    setpos(60, 3);
    printf("生物");
    setpos(65, 3);
    printf("总分");
    // 显示每个学生的信息
    for (i = 0; i < sum; i++)
        showsin(&mn->student[i], i);
    setpos(50, 25);
    system("pause");
    system("cls");
}

// 清空学生信息
void clean(mana mn) {
    system("cls");
    free(mn->student); // 释放学生数组内存
    mn->student = NULL;
    mn->capacity = mn->sum = 0; // 重置容量和学生数量
    setpos(40, 14);
    printf("清空成功");
    system("pause");
}

// 交换两个学生的信息
void swap(student p1, student p2) {
    struct a2 mn = *p1;
    *p1 = *p2;
    *p2 = mn;
}

// 未实现的函数占位符
functioncreate(Math)
functioncreate(Chinese)
functioncreate(English)
functioncreate(Physics)
functioncreate(Chemistry)
functioncreate(Organism)
functioncreate(All)

// 选择排序方式并执行
void compare(mana mn) {
    system("cls");
    setpos(37, 10);
    printf("请选择您的排序方式");
    // 显示排序选项
    setpos(35, 12);
    printf("1.语文");
    setpos(45, 12);
    printf("2.数学");
    setpos(35, 14);
    printf("3.英语");
    setpos(45, 14);
    printf("4.物理");
    setpos(35, 16);
    printf("5.化学");
    setpos(45, 16);
    printf("6.生物");
    setpos(35, 18);
    printf("7.学号");
    setpos(45, 18);
    printf("8.总分");
    setpos(40, 20);
    int a;
    scanf("%d", &a);
    // 根据选择执行相应的排序函数
    switch (a) {
    case 1:Chinesecompare(mn); break;
    case 2:Mathcompare(mn); break;
    case 3:Englishcompare(mn); break;
    case 4:Physicscompare(mn); break;
    case 5:Chemistrycompare(mn); break;
    case 6:Organismcompare(mn); break;
    case 7:stunumcompare(mn); break;
    case 8:Allcompare(mn); break;
    }
    system("cls");
    setpos(40, 14);
    printf("排序完成,请自行查看");
    setpos(40, 15);
    system("pause");
}

// 显示指定班级的学生信息
void showClassStudents(mana mn) {
    system("cls");
    int classNum; // 用户输入的班级号
    setpos(30, 10);
    printf("请输入要查询的班号: ");
    scanf("%d", &classNum);

    // 创建新的mana对象用于存储特定班级的学生
    mana classMn = (mana)malloc(sizeof(struct a3));
    initmana(classMn);

    // 遍历原始mana对象,复制符合班级号的学生到新的mana对象
    for (int i = 0; i < mn->sum; i++) {
        if (mn->student[i].Class == classNum) {
            exportcapacity(classMn);
            classMn->student[classMn->sum] = mn->student[i];
            classMn->sum++;
        }
    }

    if (classMn->sum == 0) {
        system("cls");
        setpos(30, 10);
        printf("该班级无学生记录");
        system("pause");
    }
    else {
        compare(classMn);
        showall(classMn);
    }

    // 释放新创建的mana对象内存
    free(classMn->student);
    free(classMn);
    setpos(50, 25);
    system("cls");
}

// 程序入口,显示欢迎界面并处理用户选择
void manager(mana mn) {
    int choose;
    do {
        menu(); // 显示主菜单
        scanf("%d", &choose);
        // 根据用户选择执行相应功能
        switch (choose) {
        case 1:addstu(mn); break;
        case 2:clean(mn); break;
        case 3:compare(mn); break;
        case 4:showClassStudents(mn); break;
        case 5:modifystu(mn); break;
        case 6:showall(mn); break;
        case 0:break;
        }
        save(mn);
    } while (choose);
}
void save(mana all) {//人数,空间,学生信息
    FILE* file = fopen("allinfo.txt", "w");
    fprintf(file,"%d ",all->sum);
    fprintf(file, "%d ", all->capacity);
    fclose(file);
    file = fopen("info.txt", "w");//班级 学号 姓名 成绩
    student stu=all->student;
    int i;
    for (i = 0; i < all->sum; i++) {
        fprintf(file, "%d ", stu[i].Class);
        fprintf(file, "%s ", stu[i].stunum);
        fprintf(file, "%s ", stu[i].name);
        fprintf(file, "%d %d %d %d %d %d %d ", stu[i].grade->All, stu[i].grade->Chemistry, stu[i].grade->Chinese, stu[i].grade->English, stu[i].grade->Math, stu[i].grade->Organism, stu[i].grade->Physics);
    }
    fclose(file);
}
void read(mana all) {
    FILE* file = fopen("allinfo.txt", "r");
    fscanf(file,"%d",&all->sum);
    fscanf(file, "%d", &all->capacity);
    fclose(file);
    all->student = (student)malloc(sizeof(struct a2) * all->sum);
    student stu=all->student;
    file = fopen("info.txt", "r");
    int i;
    for (i = 0; i < all->sum; i++) {//班级 学号 姓名 成绩
        fscanf(file, "%d", &stu[i].Class);
        fscanf(file, "%s", stu[i].stunum);
        fscanf(file, "%s", stu[i].name);
        stu[i].grade = (grade)malloc(sizeof(struct a1));
        fscanf(file, "%d%d%d%d%d%d%d", &stu[i].grade->All, &stu[i].grade->Chemistry, &stu[i].grade->Chinese, &stu[i].grade->English, &stu[i].grade->Math, &stu[i].grade->Organism, &stu[i].grade->Physics);
    }
}
void regist() {
    system("cls");
    FILE* file = fopen("account number.txt", "a");
    acco m;
    setpos(40, 12);
    printf("请输入您的账号:");
    scanf("%s", m.account);
    system("cls");
    setpos(40, 12);
    printf("请输入您的密码:");
    scanf("%s", m.password);
    system("cls");
    setpos(35, 12);
    printf("请选择您的用户类型:1.管理员 2.老师 3.学生");
    setpos(50, 13);
    scanf("%d", &m.kind);
    system("cls");
    setpos(50, 14);
    printf("请输入您的学号/工号:");
    scanf("%s", &m.stunum);
    system("cls");
    setpos(40, 12);
    printf("恭喜您创建成功!");
    setpos(40, 13);
    fprintf(file, "%s %s %d %s\n",m.account,m.password,m.kind,m.stunum);
    fclose(file);
    system("pause");
}
int identify(int a) {
    system("cls");
    setpos(40, 12);
    printf("请输入您的账号:");
    char ac[20],nu[20];
    scanf("%s", ac);
    setpos(40, 13);
    printf("请输入您的密码:");
    scanf("%s", nu);
    system("cls");
    FILE* file = fopen("account number.txt","r");
    char ab[20], bc[20],num[20];
    int kind,flag=0;
    while (fscanf(file, "%s%s%d%s", ab, bc, &kind,num) != EOF) {
        if (strcmp(ac, ab) || strcmp(nu, bc))
            continue;
        flag = 1;
        break;
    }
    system("cls");
    if (flag) {
        setpos(40, 12);
        printf("欢迎使用本系统!");
        setpos(40, 13);
        system("pause");
        return 1;
    }
    setpos(40, 12);
    printf("账号密码错误,请重新输入");
    setpos(40, 13);
    system("pause");
    return 0;
}
void enter() {
    welcome();
    int a;
    mana mn = (mana)malloc(sizeof(struct a3));
    initmana(mn); // 初始化管理结构
    read(mn);
    while (1) {
        system("cls");
        setpos(40, 12);
        printf("请选择登陆方式:");
        setpos(29, 13);
        printf("1.管理员  2.老师  3.学生  4.退出  5.注册账号");
        setpos(40, 15);
        scanf("%d", &a);
        if (a == 4)
            break;
        if (a == 5) {
            regist();
            continue;
        }
        if (a != 1 && a != 2 && a != 3) {
            system("cls");
            setpos(40, 12);
            printf("选择错误");
            setpos(38, 13);
            system("pause");
            continue;
        }
        if (!identify(a))
            continue;
        switch (a) {
        case 1:manager(mn); break;
        case 2:teacher(mn); break;
        case 3:stu(mn); break;
        default:break;
        }
    }
    save(mn);
    clear(mn);
}
void clear(mana all) {
    int i;
    for (i = 0; i < all->sum; i++)
        free(all->student[i].grade);
    free(all->student);
    free(all);
}
void teacher(mana all) {
    system("cls");
    while (1) {
        setpos(40, 12);
        printf("是否查看班级信息:1.是  0.否");
        setpos(45, 13);
        int a;
        scanf("%d", &a);
        if (a)
            showClassStudents(all);
        else
            break;
    }
}
void stu(mana all) {
    FILE* file = fopen("account number.txt", "r");
    int i;
    char stunum[20];
    flag:system("cls");
    setpos(40, 12);
    printf("请输入您的学号(输入0则退出):");
    scanf("%s", stunum);
    system("cls");
    if (!strcmp("0", stunum))
        return;
    for (i = 0; i < all->sum; i++) {
        if (strcmp(stunum, all->student[i].stunum))
            continue;
        break;
    }
    if (i == all->sum) {
        system("cls");
        setpos(40, 12);
        printf("学号不存在");
        setpos(40, 13);
        system("pause");
        goto flag;
    }
    setpos(20, 3);
    printf("班级");
    setpos(25, 3);
    printf("姓名");
    setpos(30, 3);
    printf("学号");
    setpos(35, 3);
    printf("语文");
    setpos(40, 3);
    printf("数学");
    setpos(45, 3);
    printf("英语");
    setpos(50, 3);
    printf("物理");
    setpos(55, 3);
    printf("化学");
    setpos(60, 3);
    printf("生物");
    setpos(65, 3);
    printf("总分");
    showsin(&all->student[i], 0);
    setpos(40, 12);
    system("pause");
}

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

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

相关文章

2024中国宁波-东南亚职业教育产教协同发展校企对接会举办

2024年6月16日&#xff0c;由东南亚教育部长组织技术教育发展中心&#xff08;SEAMEO TED&#xff09;、联合国教科文组织国际农村教育研究与培训中心&#xff08;UNESCO INRULED&#xff09;、中国教育国际交流协会&#xff08;CEAIE&#xff09;三方主办的“2024中国宁波-东南…

深入理解和实现Windows进程间通信(共享内存)

常见的进程间通信方法 常见的进程间通信方法有&#xff1a; 管道&#xff08;Pipe&#xff09;消息队列共享内存信号量套接字 下面&#xff0c;我们将详细介绍共享内存的原理以及具体实现。 什么是共享内存&#xff1f; Windows共享内存&#xff08;Shared Memory in Windo…

单商户社区团购卖菜卖水果商城自提点商城系统小程序源码

打造便捷团购新体验 &#x1f34e; 引言&#xff1a;社区团购的崛起 近年来&#xff0c;社区团购以其独特的优势&#xff0c;迅速崛起并受到广大消费者的喜爱。它不仅能够提供物美价廉的商品&#xff0c;还能让居民们享受到更加便捷的购物体验。而单商户社区团购系统小程序&am…

Airtest-Selenium实操小课④:微信读书上阅读书籍

1. 前言 上一课我们讲到用Airtest-Selenium爬取下载可爱的猫猫图片&#xff0c;还没看的同学可以戳这里看看~ 那么今天的推文&#xff0c;我们就来说说看&#xff0c;怎么实现模拟真人去打开微信读书网站&#xff0c;点击进入书本进行阅读。 2.需求分析和准备 整体的需求大…

告别繁琐录入,一键解锁OCR魅力:高效文字识别工具推荐

在日常工作中&#xff0c;我们常常会需要找一些模版&#xff0c;如果直接下载编辑某某文档&#xff0c;都是要花钱的。 比如领导让我找个法律文书&#xff0c;改成我们的内容&#xff0c;网上有很多的参考文档&#xff0c;但是不论哪个&#xff0c;下载都要钱&#xff0c;也不…

STM32 CAN总线通讯

使用STM32的CAN通讯&#xff0c;利用回环模式&#xff0c;按键控制发送CAN数据&#xff0c;中断接收CAN数据并通过串口助手打印出来。 7.2、配置引脚信息 由于每次新建工程都需要配置信息&#xff0c;比较麻烦&#xff0c;好在STM32CubeIDE提供了导入.ioc文件的功能&#xff…

阿里云PAI主机网页访问测试

笔者使用的阿里云平台PAI主机(首次使用免费三个月额度)&#xff0c;由于其默认不设置公网IP&#xff0c;所以在该主机上启动HTTP服务后无法访问测试。 这里使用ssh来作隧道穿透&#xff0c;首先需要配置ssh。 云主机配置ssh 1. 修改root账号密码 在云主机上执行 passwd ro…

图片转pdf,图片转pdf在线转换,在线图片转pdf

图片转PDF&#xff0c;听起来似乎是一个简单的操作&#xff0c;但实际上&#xff0c;它涉及到许多细节和技巧。有时候我们需要将图片转换为PDF格式&#xff0c;以便于分享、打印或保存。那么&#xff0c;如何将图片转换成PDF呢&#xff1f;接下来&#xff0c;我将为您详细介绍几…

电脑系统重装怎么操作?分享四个win10重装系统方法

“我遇到了一些笔记本电脑的问题&#xff0c;别人告诉我解决这个问题需要重新安装Win10电脑系统。但我不记得我把光盘放在哪里了&#xff0c;我能否在不丢失文件的情况下重新安装操作系统&#xff1f;电脑系统重装怎么操作&#xff1f;”虽然电脑自带系统中有多种方法可供选择&…

有哪些常用ORM框架

ORM&#xff08;Object-Relational Mapping&#xff0c;对象关系映射&#xff09;是一种编程技术&#xff0c;它允许开发者使用面向对象的编程语言来操作关系型数据库。ORM的主要目的是将数据库中的数据表映射到编程语言中的对象&#xff0c;从而使得开发者可以使用对象的方式来…

Docker之overlay2的迁移

原因 docker默认将文件及其容器放置在了系统盘的挂载区内&#xff0c;如果长期使用会发现系统挂载区被overlay2挤爆了,因此在一开始我们将其迁移在大容量外挂磁盘上,就可以避免系统盘被挤爆,放心使用. 具体操作 # 停止容器 systemctl stop docker# 修改容器配置&#xff0c…

Spring+SpringMVC介绍+bean实例化+依赖注入实战

Spring介绍 Spring是一个轻量级的Java 开发框架&#xff0c;核心是IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09; Spring解决了业务层&#xff08;Service包&#xff09;与其他各层&#xff08;表现层&#xff0c;包括Model&#xff0c;Vie…

无版权图片素材搜索网站,解决无版权图片查找问题

在数字内容创作领域&#xff0c;图片素材的选择至关重要。一张高质量、合适的图片不仅能够吸引读者的眼球&#xff0c;还能有效传达信息。然而&#xff0c;找到既免费又无版权限制的图片素材并非易事。小编将为大家介绍几个解决这一问题的无版权图片素材搜索网站&#xff0c;这…

程序猿大战Python——面向对象——对象属性

什么是属性 目标&#xff1a;了解什么是属性&#xff1f; 在现实生活中&#xff0c;属性就表示固有特征&#xff0c;比如&#xff1a;一辆小轿车的属性有轮胎数、颜色、品牌等。 仔细观察后会发现&#xff0c;属性可以简单理解为与生俱来的特征&#xff0c;比如一个人的姓名、年…

Lazada API接口——一键获取商品买家评论数据信息

一、引言 在电商领域&#xff0c;买家评论是商品销售中不可忽视的重要因素。它们不仅影响着潜在消费者的购买决策&#xff0c;还为商家提供了宝贵的客户反馈。为了满足商家和数据分析师对买家评论数据的需求&#xff0c;我们特别开发了一款针对Lazada平台的接口&#xff0c;其…

30分钟完成一个AI视频,跑通0到1的过程,包含文生图,图生视频的制作

关注公众号&#xff0c;赠送AI/Python/Linux资料 步骤一&#xff1a;写故事 需要给出故事情节&#xff0c;让kimi首先提供一个提示词模版 提示词输入后&#xff0c;就让kimi开始写故事了 一个完整的故事就出来了 非常好&#xff0c;描述一个IT人的一生是一个宏大的主题&#…

后台管理台字典localStorage缓存删除

localStorage里存放了如以下dictItems_开头的字典数据&#xff0c;localStorage缓存是没有过期时间的&#xff0c;需要手动删除。同时localStorage里还存有其他不需要删除的数据。 这里的方案是遍历localStorage&#xff0c;利用正则和所有key进行匹配&#xff0c;匹配到dict…

【有手就会】图数据库Demo教程,实现《诡秘之主》中的人物关系探索

前言 星环社区版家族于近期发布了单机、30s一键启动的StellarDB图数据库&#xff0c;本篇文章将为用户介绍如何使用开发版StellarDB实现人物关系探索。 友情链接&#xff1a;白话大数据 | 关于图数据库&#xff0c;没有比这篇更通俗易懂的啦 TDH社区版本次发布StellarDB社区…

如何选择合适的半桥栅极驱动芯片?KP8530X,KP85402,KP85211A满足你对半桥栅极驱动一切需求

半桥栅极驱动系列KP8530X&#xff0c;KP85402&#xff0c;KP85211A在功率电子领域展现出卓越的性能和可靠的品质。具备诸多显著优势。首先&#xff0c;半桥栅极驱动系列KP8530X&#xff0c;KP85402&#xff0c;KP85211A拥有出色的耐压性能&#xff0c;可承受高达数百伏的电压&a…

ArcGIS制作规划图卫星影像地图虚化效果

文章目录 一、效果展示二、加载数据三、效果制作四、注意事项一、效果展示 二、加载数据 订阅专栏后,从csdn私信查收实验数据资料,加载ArcGIS制作规划图卫星影像地图虚化效果.rar中的数据,如下所示: 三、效果制作 1. 创建掩膜图层 新建一个矢量图层,因为主要是作图需要…