在Androidstudio中设计一个简单学生选课系统并给出代码以及XML代码,在这个应用程序中有两个Activity界面,分别是对课程进行操作时的CourseActivity界面,以及对学生操作的PersonActivity界面。在CourseActivity界面可以对课程进行添加,删除以及跳转到PersonActivity功能和通过ListView将所有课程显示在页面上,在PersonActivity中可以对person表数据进行增、删、改等操作和通过ListView将所有学生信息显示在页面上,在这个工程中有两个实体类(Person.java、Course.java)和一个扩展类(Relation.java)但是不用给出这三个类的代码,Person.java类定义了学生的属性信息,Course.java类定义了课程的属性对象,而Relation.java类是学生和课程之间的关系类实现了学生和课程之间的多对多存储关系。三个类的属性定义如下,(1)person类的定义为:id(学生号),myname(学生名),myclass(学生班级),(2)Course类:id(课程号)、name(课程名)、obj(上课对象)、phone(班长电话),(3)Relation类:studentId(学生id)、courseId(课程Id)。定义三个数据表,表结构分别为:student表、course表、relations表,通过定义DBOpenHelper类继承SQLiteOpenHelper类来创建数据库,使用SQLite存储数据
时间: 2024-02-01 19:16:45 浏览: 61
抱歉,由于篇幅限制,无法给出完整的代码实现。以下是主要的代码实现思路和XML布局设计。
1. 创建数据库
在Android中使用SQLite数据库需要创建一个继承自SQLiteOpenHelper类的DBOpenHelper类,该类用于创建数据库和表格,以及实现数据库的升级和降级等操作。具体实现如下:
```java
public class DBOpenHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "course_selection.db"; // 数据库名
private static final int DB_VERSION = 1; // 数据库版本号
// 学生表
private static final String STUDENT_TABLE_CREATE = "CREATE TABLE student (id INTEGER PRIMARY KEY AUTOINCREMENT, myname TEXT, myclass TEXT);";
// 课程表
private static final String COURSE_TABLE_CREATE = "CREATE TABLE course (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, obj TEXT, phone TEXT);";
// 学生课程关系表
private static final String RELATION_TABLE_CREATE = "CREATE TABLE relations (studentId INTEGER, courseId INTEGER, PRIMARY KEY (studentId, courseId), FOREIGN KEY (studentId) REFERENCES student(id), FOREIGN KEY (courseId) REFERENCES course(id));";
public DBOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(STUDENT_TABLE_CREATE);
db.execSQL(COURSE_TABLE_CREATE);
db.execSQL(RELATION_TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库升级操作,可根据实际需求进行实现
}
}
```
2. CourseActivity界面
在CourseActivity界面中,使用ListView来显示所有课程,并通过点击添加和删除按钮来实现对课程的增删操作。同时,点击ListView中的某一项课程可以跳转到PersonActivity界面进行学生选课操作。具体实现如下:
```java
public class CourseActivity extends AppCompatActivity {
private ListView courseListView;
private Button addBtn, deleteBtn;
private List<Course> courseList;
private CourseAdapter courseAdapter;
private DBOpenHelper dbOpenHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course);
courseListView = findViewById(R.id.course_list_view);
addBtn = findViewById(R.id.add_course_btn);
deleteBtn = findViewById(R.id.delete_course_btn);
dbOpenHelper = new DBOpenHelper(this);
db = dbOpenHelper.getWritableDatabase();
courseList = new ArrayList<>();
courseAdapter = new CourseAdapter(this, courseList);
courseListView.setAdapter(courseAdapter);
// 从数据库中读取所有课程信息并显示在ListView上
readCoursesFromDB();
// 添加课程按钮点击事件
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 弹出对话框,添加课程信息
}
});
// 删除课程按钮点击事件
deleteBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 删除选中的课程信息
}
});
// ListView点击事件
courseListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 跳转到PersonActivity界面
}
});
}
// 从数据库中读取所有课程信息
private void readCoursesFromDB() {
Cursor cursor = db.query("course", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
int courseId = cursor.getInt(cursor.getColumnIndex("id"));
String courseName = cursor.getString(cursor.getColumnIndex("name"));
String courseObj = cursor.getString(cursor.getColumnIndex("obj"));
String coursePhone = cursor.getString(cursor.getColumnIndex("phone"));
Course course = new Course(courseId, courseName, courseObj, coursePhone);
courseList.add(course);
} while (cursor.moveToNext());
}
cursor.close();
courseAdapter.notifyDataSetChanged();
}
}
```
在XML布局中,使用ListView来显示课程列表,并通过添加和删除按钮来实现对课程的增删操作。具体实现如下:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/course_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout
android:id="@+id/btn_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:padding="8dp">
<Button
android:id="@+id/add_course_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="添加"/>
<Button
android:id="@+id/delete_course_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="删除"/>
</LinearLayout>
</RelativeLayout>
```
3. PersonActivity界面
在PersonActivity界面中,同样使用ListView来显示所有学生,并通过点击添加、删除和修改按钮来实现对学生信息的增删改操作。同时,点击ListView中的某一项学生可以跳转到选课界面进行学生选课操作。具体实现如下:
```java
public class PersonActivity extends AppCompatActivity {
private ListView personListView;
private Button addBtn, deleteBtn, updateBtn;
private List<Person> personList;
private PersonAdapter personAdapter;
private DBOpenHelper dbOpenHelper;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_person);
personListView = findViewById(R.id.person_list_view);
addBtn = findViewById(R.id.add_person_btn);
deleteBtn = findViewById(R.id.delete_person_btn);
updateBtn = findViewById(R.id.update_person_btn);
dbOpenHelper = new DBOpenHelper(this);
db = dbOpenHelper.getWritableDatabase();
personList = new ArrayList<>();
personAdapter = new PersonAdapter(this, personList);
personListView.setAdapter(personAdapter);
// 从数据库中读取所有学生信息并显示在ListView上
readPersonsFromDB();
// 添加学生按钮点击事件
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 弹出对话框,添加学生信息
}
});
// 删除学生按钮点击事件
deleteBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 删除选中的学生信息
}
});
// 修改学生按钮点击事件
updateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 修改选中的学生信息
}
});
// ListView点击事件
personListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 跳转到选课界面
}
});
}
// 从数据库中读取所有学生信息
private void readPersonsFromDB() {
Cursor cursor = db.query("person", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
int personId = cursor.getInt(cursor.getColumnIndex("id"));
String personName = cursor.getString(cursor.getColumnIndex("myname"));
String personClass = cursor.getString(cursor.getColumnIndex("myclass"));
Person person = new Person(personId, personName, personClass);
personList.add(person);
} while (cursor.moveToNext());
}
cursor.close();
personAdapter.notifyDataSetChanged();
}
}
```
在XML布局中,同样使用ListView来显示学生列表,并通过添加、删除和修改按钮来实现对学生信息的增删改操作。具体实现如下:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/person_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout
android:id="@+id/btn_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:padding="8dp">
<Button
android:id="@+id/add_person_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="添加"/>
<Button
android:id="@+id/delete_person_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="删除"/>
<Button
android:id="@+id/update_person_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="修改"/>
</LinearLayout>
</RelativeLayout>
```
以上就是一个简单的学生选课系统的实现思路和主要代码实现。
阅读全文