【C语言】学生考勤管理系统

news/2024/5/19 15:28:42/文章来源:https://blog.csdn.net/weixin_65297518/article/details/127171500

✅作者简介:一位CSDN万粉博主的小娇妻,一名在读大二学生,希望大家多多支持👍👍👍
🔥系列专栏:C语言
💬个人主页:梦园的CSDN博客

请添加图片描述

学生考勤管理系统

    • 1 问题描述
    • 2 功能要求
    • 3 模块代码
      • 主界面
      • 录入系统
      • 输出系统
      • 删除系统
      • 修改系统
      • 查询系统
      • 添加系统
      • 排序系统
      • 数据统计
    • 4 系统全部代码
  • 结束语🥇

1 问题描述

要求实现一个简单、实用的学生考勤系统程序,主要功能包括考勤数据的输入、输出、删除、修改、查询、添加、排序、数据统计等。通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法的应用。

2 功能要求

代码要能提供以下几个基本功能。
(1)考勤数据是由多条数据记录构成,其信息包括:姓名、年龄、学号、班级、打卡时间、打卡次数等等。
(2)需要实现的功能
a 新增学生信息数据.
b 查找数据
c 修改学生记录
d 删除学生记录
e 显示学生考勤数据列表
f 排序(可按学号、姓名升序、打卡次数降序等排序)。
g 数据统计
(3)界面功能要求:

  1. 采用友好的界面,实现一个功能控制菜单。
  2. 每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行多次操作。
    备注
    (1)数据完整性保证。
    (2)要求报表格式灵活、形式多样、内容清楚,具体请学生自己构思、设计。

3 模块代码

主界面

运行结果如下:
在这里插入图片描述

✅代码如下:

void PrintfStudentFunction()
{printf("-------------------------------------------------\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("-----------------9.退出系统------o( ̄ヘ ̄o#)----\n");
}

录入系统

运行结果如下:
在这里插入图片描述
在这里插入图片描述
✅代码来咯~

struct Student *Input(struct Student *pArr, int len)
{//录入学生信息count = len;//开辟存储空间pArr = (struct Student *)malloc(sizeof(struct Student) * len);for (int i = 0; i < len; i++){//当前学生人数+1numCount++;printf("请输入第%d个学生的名字:\n", i + 1);scanf("%s", pArr[i].name);printf("请输入第%d个学生的年龄\n", i + 1);scanf("%d", &pArr[i].age);printf("请输入第%d个学生的学号\n", i + 1);scanf("%d", &pArr[i].num);printf("请输入第%d个学生的班级\n",i+1);scanf("%d",&pArr[i].c);printf("请输入第%d个学生的打卡时间\n", i + 1);scanf("%f", &pArr[i].date);printf("请输入第%d个同学的打卡次数\n",i+1);scanf("%d",&pArr[i].num1);}printf("学生信息录入完毕!!!!!!!\n");system("cls");PrintfStudentFunction();return pArr;
}

输出系统

在这里插入图片描述

运行结果:
在这里插入图片描述
✅代码来啦~

//输出学生信息
void Output(struct Student *pArr)
{printf("姓名\t年龄\t学号\t班级\t打卡时间\t打卡次数\n");for (int i = 0; i < numCount; i++){printf("%s\t%d\t%d\t%d\t%.2f\t%10d\n", pArr[i].name, pArr[i].age, pArr[i].num,pArr[i].c,pArr[i].date, pArr[i].num1);}PrintfStudentFunction();
}

删除系统

运行结果:
在这里插入图片描述
✅代码来啦~

//删除信息
void Delete(struct Student *PArr)
{char name[25];int num;printf("请输入你要删除数据的名字\n");scanf("%s", name);for (int i = 0; i < numCount; i++){if (strcmp(PArr[i].name, name) == 0){num = i;break;}}//num = 1;for (int i = num; i < numCount - 1; i++){PArr[i] = PArr[i + 1];}numCount--;Output(PArr);
}

修改系统

运行结果:
在这里插入图片描述
✅代码来咯~

//修改学生信息
void Change(struct Student *PArr)
{char name[25];printf("请输入你要修改学生的名字:\n");scanf("%s", name);int num = 0;int i = 0;for (i = 0; i < numCount; i++){if (strcmp(PArr[i].name, name) == 0){num = i;break;}}if (num == i){printf("请输入学生的名字:\n");scanf("%s", PArr[num].name);printf("请输入学生的年龄:\n");scanf("%d", &PArr[num].age);printf("请输入学生的学号:\n");scanf("%d", &PArr[num].num);printf("请输入学生的班级\n");scanf("%f", &PArr[num].c);printf("请输入学生的打卡时间\n");scanf("%f", &PArr[num].date);printf("请输入学生的打卡次数\n");scanf("%f", &PArr[num].num1);}else{printf("对不起没有要修改的学生信息");}PrintfStudentFunction();
}

查询系统

运行结果:
在这里插入图片描述
✅代码来嘞!

//查找信息
void Search(struct Student *pArr)
{printf("请输入要查找学生的名字\n");char name[25];scanf("%s", name);int num;int i;for (i = 0; i < numCount; i++){if (strcmp(pArr[i].name, name) == 0){printf("%s\t%d\t%d\t%d\t%f\t%d\n",pArr[i].name, pArr[i].age, pArr[i].num,pArr[i].c,pArr[i].date, pArr[i].num1);break;}}if (i == numCount){printf("对不起没有你要查找的数据\n");}PrintfStudentFunction();
}

添加系统

运行结果如下:
在这里插入图片描述
✅代码来啦:

//添加学生信息
struct Student *Add(struct Student *PArr)
{printf("请输入要添加的人数\n");int num;scanf("%d", &num);if (numCount + num > count){struct Student *p = NULL;p = PArr;PArr = (struct Student *)malloc(sizeof(struct Student) * (numCount + num));count = numCount + num;for (int i = 0; i < numCount; i++){PArr[i] = p[i];}}for (int i = 0; i < num; i++){printf("请输入第%d个添加学生的名字:\n", i + 1);scanf("%s", PArr[numCount].name);printf("请输入第%d个添加学生的年龄:\n", i + 1);scanf("%d", &PArr[numCount].age);printf("请输入第%d个添加学生的学号:\n", i + 1);scanf("%d", &PArr[numCount].num);printf("请输入第%d个添加学生的班级:\n", i + 1);scanf("%f", &PArr[numCount].c);printf("请输入第%d个添加学生的打卡时间:\n", i + 1);scanf("%f", &PArr[numCount].date);printf("请输入第%d个添加学生的打卡次数:\n", i + 1);scanf("%f", &PArr[numCount].num1);numCount++;}printf("数据添加成功");PrintfStudentFunction();return PArr;
}

排序系统

在这里插入图片描述

运行结果:
请添加图片描述
✅代码来咯~

void Order(struct Student *PArr)
{
int op;
struct Student temp;
printf("<1>学号升序  <2>姓名升序  <3>打卡次数降序\n");
scanf("%d",&op);
if(op==1)
{
//将学生信息按学号排序for(int i=0;i<numCount-1;i++){for(int j=0;j<numCount-i-1;j++){if(PArr[j].num>PArr[j+1].num){temp=PArr[j];PArr[j]=PArr[j+1];PArr[j+1]=temp;}}}
}
//将学生信息按姓名排序
elseif(op==2){
void StudentNameAsc(struct Student *PArr);
{struct Student temp;for(int i=0;i<numCount-1;i++){for(int j=0;j<numCount-i-1;j++){if(PArr[j].name[0]>PArr[j+1].name[0]){temp=PArr[j];PArr[j]=PArr[j+1];PArr[j+1]=temp;}}}}}
//将学生信息按打卡次数排序else
{struct Student temp;for(int i=0;i<numCount-1;i++){for(int j=0;j<numCount-i-1;j++){if(PArr[j].num1<PArr[j+1].num1){temp=PArr[j];PArr[j]=PArr[j+1];PArr[j+1]=temp;}}}
}
Output(PArr);
}

数据统计

在这里插入图片描述
✅代码来啦~

//数据统计
void studentsta(struct Student *PArr)
{printf("请输入应打卡次数:\n");int num2;scanf("%d", &num2);for(int i=0;i<numCount;i++){if (num2>PArr[i].num1)printf("%s没有打卡%d次\n", PArr[i].name,num2-PArr[i].num1);}Output(PArr);
}

4 系统全部代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义一个学生类型的结构体
struct Student
{char name[25];  //名字int age;        //年龄int num;        //学号int c;         //班级float date;      //日期 int num1;       //打卡次数
};
void PrintfStudentFunction();
//学生的人数
int numCount = 0;
//申请空间的容量
int count = 0;
//得到学生人数
int Num();
//定义一个输入函数 用来输入学生的信息
struct Student *Input(struct Student *pArr, int len);
//输出信息方法
void Output(struct Student *pArr);
//删除信息
void Delete(struct Student *PArr);
//查找信息
void Search(struct Student *PArr);
//修改学生信息
void Change(struct Student *PArr);
//添加学生信息
struct Student *Add(struct Student *PArr);
//排序
void Order(struct Student * PArr);
//统计学生数据
void studentsta(struct Student *PArr);
int main()
{struct Student *pArr = NULL;struct Student *P = NULL;printf("============================================\n");printf("============================================\n");printf("============================================\n");printf("**************欢迎来到考勤系统**************\n");printf("============================================\n"); printf("============================================\n");printf("============================================\n");printf("....请按任意键进入考勤系统  <( ̄︶ ̄)↗[GO!]\n");getchar();system("cls");PrintfStudentFunction();while (1){printf("请选择操作的命令:\n");int item, num;scanf("%d", &item);switch (item){case 1://录入信息{system("cls");num = Num();P = Input(pArr, num);}break;case 2://输出学生信息{system("cls");Output(P);}break;case 3://删除学生信息{system("cls");Delete(P);}break;case 4://修改学生信息{system("cls");Change(P);}break;case 5://查询学生信息{system("cls");Search(P);}break;case 6://添加学生信息{system("cls");P = Add(P);}break;case 7://排序{system("cls");Order(P);}break;//数据统计case 8:{system("cls");studentsta(P);}break;case 9://退出系统{//程序结束system("cls");exit(0);}break;default:printf("用户输入错误,请重新输入\n");break;}}return 1;
}void PrintfStudentFunction()
{printf("-------------------------------------------------\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("-----------------9.退出系统------o( ̄ヘ ̄o#)----\n");
}
//得到学生人数
int Num()
{int num;printf("请输入要录入学生的人数\n");scanf("%d", &num);return num;
}struct Student *Input(struct Student *pArr, int len)
{//录入学生信息count = len;//开辟存储空间pArr = (struct Student *)malloc(sizeof(struct Student) * len);for (int i = 0; i < len; i++){//当前学生人数+1numCount++;printf("请输入第%d个学生的名字:\n", i + 1);scanf("%s", pArr[i].name);printf("请输入第%d个学生的年龄\n", i + 1);scanf("%d", &pArr[i].age);printf("请输入第%d个学生的学号\n", i + 1);scanf("%d", &pArr[i].num);printf("请输入第%d个学生的班级\n",i+1);scanf("%d",&pArr[i].c);printf("请输入第%d个学生的打卡时间\n", i + 1);scanf("%f", &pArr[i].date);printf("请输入第%d个同学的打卡次数\n",i+1);scanf("%d",&pArr[i].num1);}printf("学生信息录入完毕!!!!!!!\n");system("cls");PrintfStudentFunction();return pArr;
}
//输出学生信息
void Output(struct Student *pArr)
{printf("姓名\t年龄\t学号\t班级\t打卡时间\t打卡次数\n");for (int i = 0; i < numCount; i++){printf("%s\t%d\t%d\t%d\t%.2f\t%10d\n", pArr[i].name, pArr[i].age, pArr[i].num,pArr[i].c,pArr[i].date, pArr[i].num1);}PrintfStudentFunction();
}//删除信息
void Delete(struct Student *PArr)
{char name[25];int num;printf("请输入你要删除数据的名字\n");scanf("%s", name);for (int i = 0; i < numCount; i++){if (strcmp(PArr[i].name, name) == 0){num = i;break;}}//num = 1;for (int i = num; i < numCount - 1; i++){PArr[i] = PArr[i + 1];}numCount--;Output(PArr);
}//查找信息
void Search(struct Student *pArr)
{printf("请输入要查找学生的名字\n");char name[25];scanf("%s", name);int num;int i;for (i = 0; i < numCount; i++){if (strcmp(pArr[i].name, name) == 0){printf("%s\t%d\t%d\t%d\t%f\t%d\n",pArr[i].name, pArr[i].age, pArr[i].num,pArr[i].c,pArr[i].date, pArr[i].num1);break;}}if (i == numCount){printf("对不起没有你要查找的数据\n");}PrintfStudentFunction();
}//修改学生信息
void Change(struct Student *PArr)
{char name[25];printf("请输入你要修改学生的名字:\n");scanf("%s", name);int num = 0;int i = 0;for (i = 0; i < numCount; i++){if (strcmp(PArr[i].name, name) == 0){num = i;break;}}if (num == i){printf("请输入学生的名字:\n");scanf("%s", PArr[num].name);printf("请输入学生的年龄:\n");scanf("%d", &PArr[num].age);printf("请输入学生的学号:\n");scanf("%d", &PArr[num].num);printf("请输入学生的班级\n");scanf("%f", &PArr[num].c);printf("请输入学生的打卡时间\n");scanf("%f", &PArr[num].date);printf("请输入学生的打卡次数\n");scanf("%f", &PArr[num].num1);}else{printf("对不起没有要修改的学生信息");}PrintfStudentFunction();
}//添加学生信息
struct Student *Add(struct Student *PArr)
{printf("请输入要添加的人数\n");int num;scanf("%d", &num);if (numCount + num > count){struct Student *p = NULL;p = PArr;PArr = (struct Student *)malloc(sizeof(struct Student) * (numCount + num));count = numCount + num;for (int i = 0; i < numCount; i++){PArr[i] = p[i];}}for (int i = 0; i < num; i++){printf("请输入第%d个添加学生的名字:\n", i + 1);scanf("%s", PArr[numCount].name);printf("请输入第%d个添加学生的年龄:\n", i + 1);scanf("%d", &PArr[numCount].age);printf("请输入第%d个添加学生的学号:\n", i + 1);scanf("%d", &PArr[numCount].num);printf("请输入第%d个添加学生的班级:\n", i + 1);scanf("%f", &PArr[numCount].c);printf("请输入第%d个添加学生的打卡时间:\n", i + 1);scanf("%f", &PArr[numCount].date);printf("请输入第%d个添加学生的打卡次数:\n", i + 1);scanf("%f", &PArr[numCount].num1);numCount++;}printf("数据添加成功");PrintfStudentFunction();return PArr;
}
void Order(struct Student *PArr)
{
int op;
struct Student temp;
printf("<1>学号升序  <2>姓名升序  <3>打卡次数降序\n");
scanf("%d",&op);
if(op==1)
{
//将学生信息按学号排序for(int i=0;i<numCount-1;i++){for(int j=0;j<numCount-i-1;j++){if(PArr[j].num>PArr[j+1].num){temp=PArr[j];PArr[j]=PArr[j+1];PArr[j+1]=temp;}}}
}
//将学生信息按姓名排序
elseif(op==2){
void StudentNameAsc(struct Student *PArr);
{struct Student temp;for(int i=0;i<numCount-1;i++){for(int j=0;j<numCount-i-1;j++){if(PArr[j].name[0]>PArr[j+1].name[0]){temp=PArr[j];PArr[j]=PArr[j+1];PArr[j+1]=temp;}}}}
}
//将学生信息按打卡次数排序else
{struct Student temp;for(int i=0;i<numCount-1;i++){for(int j=0;j<numCount-i-1;j++){if(PArr[j].num1<PArr[j+1].num1){temp=PArr[j];PArr[j]=PArr[j+1];PArr[j+1]=temp;}}}
}
Output(PArr);
}//数据统计
void studentsta(struct Student *PArr)
{printf("请输入应打卡次数:\n");int num2;scanf("%d", &num2);for(int i=0;i<numCount;i++){if (num2>PArr[i].num1)printf("%s没有打卡%d次\n", PArr[i].name,num2-PArr[i].num1);}Output(PArr);
}

结束语🥇

以上就是用C制作学生考勤管理系统
大家的支持就是我创作的动力💖💖💖

在这里插入图片描述

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

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

相关文章

使用Vue和SpringBoot开发实验室耗材智能运维系统

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;浙江某公司软件工程师&#xff0c;负责开发管理公司OA、CRM业务系统&#xff0c;全栈领域优质创作者&#xff0c;CSDN学院、蓝桥云课认证讲师&#xff0c;开发过20余个前后端分离实战项目&#xff0c;主要发展方向为Vue…

(附源码)计算机毕业设计ssm大学生社团管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SPAFA 和Dijkstra的区别

Dijkstra算法和SPFA算法都可以用于求单源最短路,前者可以用小根堆进行优化,后者用就是用队列优化过的Bell-man Ford,下面说一说这两者的区别: Dijkstra算法是基于贪心和DP的思路,一开始先将所有点到原点的距离设置为无穷大,特别的是dis[s]=0,此处的s为原点,它是每次找到…

基于Java的SQL Server数据库加解密系统设计与实现

目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 数据库加解密系统开发背景 3 1.2 国内外现状 3 1.3 本文的主要工作 4 1.4 论文的组织结构 4 第2章 数据库加密的基本理论 6 2.1 数据库加密的三种级别 6 2.2 数据库加密的粒度 8 2.2.1 数据库级的数据库加密 8 2.2.2 表&#xff08;…

(附源码)SSM药品销售平台设计与实现JAVA计算机毕业设计项目

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

python读写操作redis数据库

python读写操作redis数据库 redis有16个逻辑数据库&#xff08;编号db0到db15&#xff09;&#xff0c;每个逻辑数据库数据是隔离的&#xff0c;默认db0。选择第n个逻辑数据库&#xff0c;命令select n &#xff0c;python连接时可指定数据库编号&#xff08;0~15&#xff09;…

【Linux内核】内存管理——内核的内存分区

转载请注明: https://www.cnblogs.com/Ethan-Code/p/16619091.html 内核的内存分区 32位机中的虚拟内存大小为4GB&#xff0c;其中0~3GB用于用户空间&#xff0c;3~4GB用于内核空间。 内核的内存空间只有1G&#xff0c;这一部分内存在进程中共享&#xff0c;与用户空间隔离&…

WSL2和Docker使用GPU

文章目录安装Docker-Desktop简单配置dockerwin10安装支持WSL2的nvidia驱动ubuntu配置 CUDA ToolkitGPU测试及问题处理安装Docker-Desktop 安装Docker-Desktop Docker-Desktop下载地址 :https://www.docker.com/products/docker-desktop/ 接着就一路无脑安装即可。 下载完成之…

PTA - 数据库合集10

目录 10-52 查询姓‘李’的学生记录 10-54 查询所有学生的平均成绩 10-67 sql-insert-sample 10-68 sql-delete-sample 10-72 单表查询&#xff1a;根据运费查询订单信息 10-52 查询姓‘李’的学生记录 分数 5 全屏浏览题目 切换布局 作者 张庆 单位 集美大学 本题目要…

MaxViT实战:使用MaxViT实现图像分类任务(一)

MaxViT实战摘要安装包安装timm数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集摘要 MaxViT&#xff0c;是今年谷歌提出分层Transformer的模型&#xff0c;将注意力模型与卷积有效地融合在一起。在图像分类方面&#xff0c;MaxViT 在各种设置下都达到了最先进的性能&…

数据结构子KMP算法

传统从主串找子串方法 然子串从第一个开始&#xff0c;一个个比对&#xff0c;相同比对第二个字母 不同然子串后移一位重新开始比较 直至找到全部相同的或者主串里面没有让子串比较的字母了 这样的算法太暴力&#xff0c;执行效率太低 KMP算法 来说我们人脑对于字符串匹配的…

Linux第三章——用户与组管理

用户与组账号 一个用户可以隶属于不同的组一个组可以包含若干用户系统通过账户对用户与组进行管理 账号 Linux系统账号分为用户账号和组账号 用户账号&#xff1a;每个系统的操作者拥有一个用户账号&#xff0c;每个用户账号具有唯一的标识UID和自己所属组的标识GID。组账号…

【Android-JetpackCompose】5、三阶段:组合、布局、绘制,架构分层,设计原则、性能最佳实践

文章目录一、帧的3个阶段1.1 第 1 阶段&#xff1a;组合1.2 第 2 阶段&#xff1a;布局1.3 第 3 阶段&#xff1a;绘制二、读取 state2.1 优化读取 state三、重组循环&#xff08;循环阶段依赖项&#xff09;四、架构分层五、设计原则5.1 控制5.2 自定义六、性能最佳实践6.1 使…

c++类和对象

前言 在学习完漫长的C语言&#xff0c;那么这篇文章也算是开始踏上了高级语言之路 。古人云&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。c的道路才开始&#xff0c;那么我们应该为此开始思考了。余甚 愚&#xff0c;余认为c有太多细节了&#xff0c;必定耗时细磨才…

实验一:贝叶斯神经网络及其如何用随机梯度马尔可夫链蒙特卡洛有效训练

0.实验环境搭建&#xff1a; 源代码获取&#xff1a; 来源一&#xff1a;google 来源二&#xff1a;web 来源三&#xff1a;github 环境&#xff1a; conda create --name python36_google_deep python3.6 conda activate python36_google_deep #建议按照顺序安装 pip inst…

基于FPGA的图像边缘检测

基于FPGA的图像边缘检测一、图像处理算法1.灰度转换2.高斯滤波3.二值化4.Sobel二、项目框架1.摄像头配置模块2.图像处理模块3.数据缓存模块4.其它模块三、部分代码1.数据采集模块2.读写控制模块四、参考五、源码简介&#xff1a;基于FPGA&#xff0c;摄像头实时采集图像数据&am…

【Algorithm】Karatsuba Multiplications 乘法算法

Karatsuba Multiplications Q1&#xff1a; 请计算&#xff1a;x1234x1234x1234, y5678y5678y5678, x∗y?x*y?x∗y? 这个问题其实我们在三年级的时候就学过&#xff0c;用乘法竖式进行运算。但是有没有其他的方法&#xff0c;或者说&#xff0c;如果 x,yx,yx,y 非常大的时候…

drf 视图类 GenericAPIView 及扩展

drf 视图类 GenericAPIView 及扩展 文章目录drf 视图类 GenericAPIView 及扩展1、2个视图基类1.1、GenericAPIView&#xff1a;属性和方法1.2、基于APIView 写5个接口1.3、基于GenericAPIView写5个接口2、5个视图扩展类2.1 基于GenericAPIView5个视图扩展类写接口3、九个视图子…

【UCB操作系统CS162项目】Pintos Lab2:用户程序 User Programs(下)

在上节中&#xff0c;我们已经完成了 Lab 2 要求的参数传递和系统调用中的 halt, exit 以及向 stdout 输出的 write&#xff0c;最终停在了 wait 的实现之前。本节就先从 wait 和 exec 继续。 Syscall wait exec&#xff1a;实现父子进程 讲义中 wait 的要求是这样的&#x…

这几个文字翻译工具确定不试试看?

想问问大家平常会接触到TXT文件吗&#xff1f;这是微软在操作系统上附带的一种文本格式&#xff0c;主要是保存纯文字信息&#xff0c;像我们电脑上自带的记事本工具&#xff0c;就是使用这种文件格式。有时候我们需要将文本内容翻译成中文。那你知道如何实现TXT翻译成中文吗&a…