3月10日总结
今天Web学习了JavaSrcipt的输出、数据类型、函数、json等知识并在VS上练习了,并且我把上次课的CSS知识又总结练习了一下。
假期把课堂测试补上了。
学习进度表
| 第6天 | 第7天 | 第8天 | 第9天 | 第10天 | |
|---|---|---|---|---|---|
| 所花时间(包括上课) | 3 | ||||
| 代码量(行) | 300+ | ||||
| 博客量(篇) | 1 | ||||
| 了解到的知识点 | CSS以及JavaSrcipt的知识 |
个人作业03
源程序代码:
package com.example.myapplication;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText courseNameEditText, teacherEditText, locationEditText;
private Button saveButton;
private MyDatabaseHelper dbHelper;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
courseNameEditText = findViewById(R.id.courseNameEditText);
teacherEditText = findViewById(R.id.teacherEditText);
locationEditText = findViewById(R.id.locationEditText);
saveButton = findViewById(R.id.saveButton);
dbHelper = new MyDatabaseHelper(this);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String courseName = courseNameEditText.getText().toString();
String teacher = teacherEditText.getText().toString();
String location = locationEditText.getText().toString();
if (isCourseNameUnique(courseName)) {
if (isValidTeacher(teacher)) {
if (isValidLocation(location)) {
saveCourse(courseName, teacher, location);
} else {
Toast.makeText(MainActivity.this, "上课地点无效", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(MainActivity.this, "无效的任课教师", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(MainActivity.this, "课程名称重复,请重新输入", Toast.LENGTH_SHORT).show();
}
}
});
}
private boolean isCourseNameUnique(String courseName) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("courses", new String[]{"name"}, "name=?", new String[]{courseName}, null, null, null);
boolean isUnique = !cursor.moveToFirst();
cursor.close();
return isUnique;
}
private boolean isValidTeacher(String teacher) {
String[] validTeachers = {"王建民", "刘立嘉", "刘丹", "杨子光", "张云霞", "武永亮", "高飞", "孙静", "黄荣峰"};
for (String validTeacher : validTeachers) {
if (validTeacher.equals(teacher)) {
return true;
}
}
return false;
}
private boolean isValidLocation(String location) {
return location.startsWith("一教") || location.startsWith("二教") || location.startsWith("三教") || location.startsWith("基教");
}
private void saveCourse(String courseName, String teacher, String location) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", courseName);
values.put("teacher", teacher);
values.put("location", location);
db.insert("courses", null, values);
db.close();
Toast.makeText(this, "课程添加成功", Toast.LENGTH_SHORT).show();
}
}
package com.example.myapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "courses.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_COURSES_TABLE = "CREATE TABLE courses (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name TEXT," +
"teacher TEXT," +
"location TEXT" +
")";
db.execSQL(CREATE_COURSES_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS courses");
onCreate(db);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/courseNameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入课程名称" />
<EditText
android:id="@+id/teacherEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入任课教师" />
<EditText
android:id="@+id/locationEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入上课地点" />
<Button
android:id="@+id/saveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存" />
</LinearLayout>
运行结果:



设计思想
用户界面设计:创建一个简单的用户界面,包括课程名称、任课教师和上课地点的输入框,提供一个“保存”按钮,用于提交新课程信息。
数据验证:验证课程名称是否唯一,如果重复则提示用户重新输入;验证任课教师是否在指定的教师列表中;验证上课地点是否以指定的前缀开头。
数据存储:将新课程信息添加到本地数据库。
错误处理:提供错误提示,指导用户正确输入数据。
编程总结分析
代码结构:代码结构清晰,分为用户界面处理、数据验证、数据库操作三个主要部分。
可维护性:通过将数据库操作封装为MyDatabaseHelper类,提高了代码的可维护性。
扩展性:可以轻松添加新的功能,如编辑或删除课程。
时间记录日志:
| 开始时间 | 结束时间 | 活动描述 |
|---|---|---|
| 09:00 | 09:30 | 需求分析 |
| 09:30 | 10:00 | 设计和编写代码 |
| 10:00 | 10:20 | 测试和调试 |
| 10:20 | 10:50 | 文档编写和总结 |
浙公网安备 33010602011771号