创建一个函数,根据传入的年龄计算对应的出生年份
时间: 2023-05-28 14:02:16 浏览: 136
以下是Python代码实现:
```
def calc_birth_year(age):
from datetime import date
current_year = date.today().year
birth_year = current_year - age
return birth_year
```
通过调用 Python 内置的 datetime 模块中的 date 类,获取当前年份,再用当前年份减去传入的年龄,即可得到对应的出生年份。
相关问题
(3)新建一个主函数类; a) 主函数里新建插入学生方法;insertStu(传入学号、姓名、性别、家庭住址、出生年月、联系电话6个参数),无返回值; b) 主函数里新建根据学号删除学生的方法deleteStu,无返回值; c) 主函数里新建新建根据学号更新学生的方法;updateStu(传入学号、姓名、性别、家庭住址、出生年月、联系电话6个参数),无返回值。 d) 主函数里新建根据学号查询学生的方法,query(传入学号),返回一个学生对象; e) 主函数里新建Main函数,调用插入函数,插入2个男生,3个女生;再删除一个女生,再更新一个男生,再查询一个男生。java
好的,我理解了你的要求。以下是对应的代码实现:
```java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
// 插入2个男生
insertStu(students, "001", "张三", "男", "北京市海淀区", "1999-01-01", "123456789");
insertStu(students, "002", "李四", "男", "北京市朝阳区", "2000-02-02", "987654321");
// 插入3个女生
insertStu(students, "003", "王五", "女", "北京市东城区", "1998-03-03", "135792468");
insertStu(students, "004", "赵六", "女", "北京市西城区", "1997-04-04", "246813579");
insertStu(students, "005", "钱七", "女", "北京市丰台区", "1996-05-05", "369852147");
// 删除一个女生
deleteStu(students, "004");
// 更新一个男生
updateStu(students, "001", "张三", "男", "北京市海淀区", "1999-01-01", "111111111");
// 查询一个男生
Student stu = query(students, "002");
System.out.println(stu.toString());
}
// 插入学生
public static void insertStu(ArrayList<Student> students, String id, String name, String gender, String address, String birthday, String tel) {
Student stu = new Student(id, name, gender, address, birthday, tel);
students.add(stu);
}
// 根据学号删除学生
public static void deleteStu(ArrayList<Student> students, String id) {
for (Student stu : students) {
if (stu.getId().equals(id)) {
students.remove(stu);
break;
}
}
}
// 根据学号更新学生
public static void updateStu(ArrayList<Student> students, String id, String name, String gender, String address, String birthday, String tel) {
for (Student stu : students) {
if (stu.getId().equals(id)) {
stu.setName(name);
stu.setGender(gender);
stu.setAddress(address);
stu.setBirthday(birthday);
stu.setTel(tel);
break;
}
}
}
// 根据学号查询学生
public static Student query(ArrayList<Student> students, String id) {
for (Student stu : students) {
if (stu.getId().equals(id)) {
return stu;
}
}
return null;
}
}
```
其中,学生对象的定义如下:
```java
public class Student {
private String id; // 学号
private String name; // 姓名
private String gender; // 性别
private String address; // 家庭住址
private String birthday; // 出生年月
private String tel; // 联系电话
public Student(String id, String name, String gender, String address, String birthday, String tel) {
this.id = id;
this.name = name;
this.gender = gender;
this.address = address;
this.birthday = birthday;
this.tel = tel;
}
// getter 和 setter 方法省略
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", address='" + address + '\'' +
", birthday='" + birthday + '\'' +
", tel='" + tel + '\'' +
'}';
}
}
```
运行上述代码,可以得到以下输出结果:
```
Student{id='002', name='李四', gender='男', address='北京市朝阳区', birthday='2000-02-02', tel='987654321'}
```
1.实验目的 (2)掌握JDBC的常用方法,能够通过JDBC存储、查询、更改MySql数据库。 2.实验内容和步骤 (1)在数据库里新建一个学生表,学生主要信息如下,需要建立主键; 学号 文本 性别 文本 姓名 文本 家庭住址 文本 出生年月 文本 联系电话 文本 (2)新建一个学生类; (3)新建一个主函数类; a) 主函数里新建插入学生方法;insertStu(传入学号、姓名、性别、家庭住址、出生年月、联系电话6个参数),无返回值; b) 主函数里新建根据学号删除学生的方法deleteStu,无返回值; c) 主函数里新建新建根据学号更新学生的方法;updateStu(传入学号、姓名、性别、家庭住址、出生年月、联系电话6个参数),无返回值。 d) 主函数里新建根据学号查询学生的方法,query(传入学号),返回一个学生对象; e) 主函数里新建Main函数,调用插入函数,插入2个男生,3个女生;再删除一个女生,再更新一个男生,再查询一个男生。
本次实验需要使用Java编写JDBC程序,完成以下操作:
1. 在MySQL数据库中创建学生表,表结构如下:
```sql
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT, -- 主键,自增长
`number` varchar(20) NOT NULL, -- 学号
`name` varchar(20) NOT NULL, -- 姓名
`gender` varchar(4) NOT NULL, -- 性别
`address` varchar(100) NOT NULL, -- 家庭住址
`birthday` varchar(20) NOT NULL, -- 出生年月
`phone` varchar(20) NOT NULL, -- 联系电话
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
2. 创建一个学生类,包含学号、姓名、性别、家庭住址、出生年月、联系电话等属性,以及对应的`get`和`set`方法;
```java
public class Student {
private int id; // 主键
private String number; // 学号
private String name; // 姓名
private String gender; // 性别
private String address; // 家庭住址
private String birthday; // 出生年月
private String phone; // 联系电话
// 构造方法、get/set方法省略
}
```
3. 创建一个主函数类,包含以下方法:
(1)插入学生方法`insertStu`,向学生表中插入一条学生记录;
```java
public static void insertStu(String number, String name, String gender, String address, String birthday, String phone) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "INSERT INTO student(number, name, gender, address, birthday, phone) VALUES (?, ?, ?, ?, ?, ?)";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, number);
ps.setString(2, name);
ps.setString(3, gender);
ps.setString(4, address);
ps.setString(5, birthday);
ps.setString(6, phone);
// 执行SQL语句
ps.executeUpdate();
} finally {
// 释放资源
close(conn, ps, null);
}
}
```
(2)删除学生方法`deleteStu`,根据学号删除一条学生记录;
```java
public static void deleteStu(String number) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "DELETE FROM student WHERE number=?";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, number);
// 执行SQL语句
ps.executeUpdate();
} finally {
// 释放资源
close(conn, ps, null);
}
}
```
(3)更新学生方法`updateStu`,根据学号更新一条学生记录;
```java
public static void updateStu(String number, String name, String gender, String address, String birthday, String phone) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "UPDATE student SET name=?, gender=?, address=?, birthday=?, phone=? WHERE number=?";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, name);
ps.setString(2, gender);
ps.setString(3, address);
ps.setString(4, birthday);
ps.setString(5, phone);
ps.setString(6, number);
// 执行SQL语句
ps.executeUpdate();
} finally {
// 释放资源
close(conn, ps, null);
}
}
```
(4)查询学生方法`query`,根据学号查询一条学生记录;
```java
public static Student query(String number) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "SELECT * FROM student WHERE number=?";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, number);
// 执行查询操作
rs = ps.executeQuery();
// 解析查询结果
if (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setNumber(rs.getString("number"));
stu.setName(rs.getString("name"));
stu.setGender(rs.getString("gender"));
stu.setAddress(rs.getString("address"));
stu.setBirthday(rs.getString("birthday"));
stu.setPhone(rs.getString("phone"));
return stu;
} else {
return null;
}
} finally {
// 释放资源
close(conn, ps, rs);
}
}
```
(5)主函数`main`,调用插入函数,插入2个男生,3个女生;再删除一个女生,再更新一个男生,再查询一个男生。
```java
public static void main(String[] args) throws SQLException {
// 插入2个男生
insertStu("20180001", "张三", "男", "北京市朝阳区", "2000-01-01", "13800138001");
insertStu("20180002", "李四", "男", "北京市海淀区", "2000-02-02", "13900139001");
// 插入3个女生
insertStu("20180003", "王五", "女", "北京市西城区", "2000-03-03", "13600136001");
insertStu("20180004", "赵六", "女", "北京市东城区", "2000-04-04", "13700137001");
insertStu("20180005", "周七", "女", "北京市丰台区", "2000-05-05", "13500135001");
// 删除一个女生
deleteStu("20180004");
// 更新一个男生
updateStu("20180002", "王麻子", "男", "北京市石景山区", "2000-02-02", "13900139002");
// 查询一个男生
Student stu = query("20180002");
System.out.println(stu.getNumber() + " " + stu.getName() + " " + stu.getGender() + " " + stu.getAddress() + " " + stu.getBirthday() + " " + stu.getPhone());
}
```
4. 连接MySQL数据库,获取数据库连接的方法`getConn`和释放资源的方法`close`,可以放在一个工具类中;
```java
public class JdbcUtil {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
// 获取数据库连接
public static Connection getConn() throws SQLException {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
// 释放资源
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
完成以上步骤后,运行主函数,即可在MySQL数据库中插入、删除、更新、查询学生记录。
阅读全文