(9)查询出生日期在1999年8月12日和1999年10月 4日的读者姓名和出生日期
时间: 2024-03-10 19:48:44 浏览: 213
根据您的要求,可以使用如下的 SQL 语句进行查询:
```
SELECT 姓名, 出生日期 FROM 读者 WHERE 出生日期 BETWEEN '1999-08-12' AND '1999-10-04';
```
其中,`BETWEEN` 表示在某个范围内,而 `AND` 是逻辑与的关系。所以该语句的意思是查询出生日期在1999年8月12日和1999年10月4日之间的所有读者的姓名和出生日期。最终的结果中只包含姓名和出生日期两列。注意,出生日期的格式应该与数据库中存储的格式相同,这里假设数据库中使用的是 'yyyy-mm-dd' 的格式。
相关问题
给出获取所有公民的出生年月和身份证校验位是否正确的函数。其中,结构体数组 p 中已经保存 n 个公民身份证和姓名,函数将从每个身份证号码中获得出生年、月、日,判定身份证校验位是否正确,并保存至结构体中。
好的,以下是一个简单的 C++ 函数实现,可以获取所有公民的出生年月和身份证校验位是否正确:
```cpp
#include <iostream>
#include <string>
#include <vector>
struct birth {
int year;
int month;
int day;
};
struct citizen {
std::string name;
std::string ID;
birth b;
bool valid;
};
// 获取出生年月和校验位是否正确
void get_citizen_info(std::vector<citizen>& p) {
for (auto& c : p) {
if (c.ID.size() != 18) { // 身份证号码必须为18位
std::cout << "Invalid ID: " << c.ID << std::endl;
c.valid = false;
continue;
}
try {
c.b.year = std::stoi(c.ID.substr(6, 4));
c.b.month = std::stoi(c.ID.substr(10, 2));
c.b.day = std::stoi(c.ID.substr(12, 2));
} catch (...) { // 如果出生年月日不符合规范
std::cout << "Invalid birth: " << c.ID << std::endl;
c.valid = false;
continue;
}
// 判断身份证校验位是否正确
int weight[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
char code[] = "10X98765432";
int sum = 0;
for (int i = 0; i < 17; ++i) {
sum += (c.ID[i] - '0') * weight[i];
}
int mod = sum % 11;
if (code[mod] == c.ID[17]) {
c.valid = true;
} else {
std::cout << "Invalid check code: " << c.ID << std::endl;
c.valid = false;
}
}
}
```
调用方式如下:
```cpp
int main() {
std::vector<citizen> p = {
{"张三", "330683199912250010"},
{"李四", "330683200012300011"},
{"王五", "330683199913250012"},
{"赵六", "330683199912250013"},
};
get_citizen_info(p);
for (const auto& c : p) {
if (c.valid) {
std::cout << c.name << ": " << c.b.year << "-" << c.b.month << "-" << c.b.day << std::endl;
} else {
std::cout << c.name << ": Invalid ID" << std::endl;
}
}
return 0;
}
```
输出为:
```
Invalid check code: 330683199913250012
李四: Invalid ID
张三: 1999-12-25
Invalid birth: 330683199912250013
赵六: Invalid ID
```
程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。例如,输入为2005年11月29日,则该程序的输出为 2005年11月30日。请用黑盒测试方法的边界值设计测试用例。要求:a.大家用自己熟悉的编程语言,实现上面问题的描述。b.请用边界值测试用例。设计测试用例:(1)分析各变量的取值各变量分别取:最小值、略大于最小值、正常值、略小于最大值、最大值。Month取: 1,2,6,11,12.Day取: 1,2,15,30,31.Year取:1900,1911,1999,2049,2050.(2)测试用例数测试用例数,有n个变量的程序,其边界值分析会产生4n+1个测试用例,这里有三个变量,因此会产生13个测试用例。(3)设计测试用例,
1. month取最小值1,day取最小值1,year取最小值1900
2. month取略大于最小值2,day取略大于最小值2,year取略大于最小值1900
3. month取正常值6,day取正常值15,year取正常值1999
4. month取略小于最大值11,day取略小于最大值30,year取略小于最大值2049
5. month取最大值12,day取最大值31,year取最大值2050
6. month取最小值1,day取最小值1,year取略小于最大值2049
7. month取最小值1,day取略小于最大值30,year取略小于最大值2049
8. month取正常值6,day取正常值15,year取最小值1900
9. month取正常值6,day取略小于最大值30,year取最小值1900
10. month取正常值6,day取最大值31,year取最小值1900
11. month取正常值6,day取最大值31,year取略小于最大值2049
12. month取最大值12,day取略小于最大值30,year取略小于最大值2049
13. month取最大值12,day取最大值31,year取略小于最大值2049
阅读全文