在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-03 18:11:19 浏览: 24
首先,我们需要创建三个实体类Person、Course和Relation。 Person.java: ``` public class Person { private int id; private String myname; private String myclass; public Person() {} public Person(int id, String myname, String myclass) { this.id = id; this.myname = myname; this.myclass = myclass; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getMyname() { return myname; } public void setMyname(String myname) { this.myname = myname; } public String getMyclass() { return myclass; } public void setMyclass(String myclass) { this.myclass = myclass; } } ``` Course.java: ``` public class Course { private int id; private String name; private String obj; private String phone; public Course() {} public Course(int id, String name, String obj, String phone) { this.id = id; this.name = name; this.obj = obj; this.phone = phone; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getObj() { return obj; } public void setObj(String obj) { this.obj = obj; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } } ``` Relation.java: ``` public class Relation { private int studentId; private int courseId; public Relation() {} public Relation(int studentId, int courseId) { this.studentId = studentId; this.courseId = courseId; } public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public int getCourseId() { return courseId; } public void setCourseId(int courseId) { this.courseId = courseId; } } ``` 接下来,我们需要创建数据库DBOpenHelper: ``` public class DBOpenHelper extends SQLiteOpenHelper { private final static String DATABASE_NAME = "myDatabase.db"; private final static int DATABASE_VERSION = 1; public DBOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String createStudentTable = "CREATE TABLE IF NOT EXISTS student (id INTEGER PRIMARY KEY AUTOINCREMENT, myname TEXT, myclass TEXT)"; String createCourseTable = "CREATE TABLE IF NOT EXISTS course (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, obj TEXT, phone TEXT)"; String createRelationTable = "CREATE TABLE IF NOT EXISTS relations (studentId INTEGER, courseId INTEGER, PRIMARY KEY (studentId, courseId), FOREIGN KEY (studentId) REFERENCES student(id), FOREIGN KEY (courseId) REFERENCES course(id))"; db.execSQL(createStudentTable); db.execSQL(createCourseTable); db.execSQL(createRelationTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS student"); db.execSQL("DROP TABLE IF EXISTS course"); db.execSQL("DROP TABLE IF EXISTS relations"); onCreate(db); } } ``` 接下来,我们需要创建两个Activity类:CourseActivity和PersonActivity。 CourseActivity.java: ``` public class CourseActivity extends AppCompatActivity { private ListView listView; private ArrayList<Course> courseList = new ArrayList<>(); private ArrayAdapter<Course> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_course); listView = findViewById(R.id.listView); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, courseList); listView.setAdapter(adapter); Button addButton = findViewById(R.id.addButton); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(CourseActivity.this, AddCourseActivity.class); startActivity(intent); } }); Button personButton = findViewById(R.id.personButton); personButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(CourseActivity.this, PersonActivity.class); startActivity(intent); } }); updateListView(); } private void updateListView() { courseList.clear(); DBOpenHelper dbHelper = new DBOpenHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("course", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String obj = cursor.getString(cursor.getColumnIndex("obj")); String phone = cursor.getString(cursor.getColumnIndex("phone")); Course course = new Course(id, name, obj, phone); courseList.add(course); } adapter.notifyDataSetChanged(); cursor.close(); db.close(); } } ``` PersonActivity.java: ``` public class PersonActivity extends AppCompatActivity { private ListView listView; private ArrayList<Person> personList = new ArrayList<>(); private ArrayAdapter<Person> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_person); listView = findViewById(R.id.listView); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, personList); listView.setAdapter(adapter); Button addButton = findViewById(R.id.addButton); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(PersonActivity.this, AddPersonActivity.class); startActivity(intent); } }); updateListView(); } private void updateListView() { personList.clear(); DBOpenHelper dbHelper = new DBOpenHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("student", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String myname = cursor.getString(cursor.getColumnIndex("myname")); String myclass = cursor.getString(cursor.getColumnIndex("myclass")); Person person = new Person(id, myname, myclass); personList.add(person); } adapter.notifyDataSetChanged(); cursor.close(); db.close(); } } ``` 在上面的代码中,我们使用了ListView来显示数据库中的数据。我们使用了DBOpenHelper类来获取可写的SQLiteDatabase对象,然后使用Cursor对象来遍历查询结果。 接下来,我们需要创建添加课程和添加学生的Activity类:AddCourseActivity和AddPersonActivity。 AddCourseActivity.java: ``` public class AddCourseActivity extends AppCompatActivity { private EditText nameEditText; private EditText objEditText; private EditText phoneEditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_course); nameEditText = findViewById(R.id.nameEditText); objEditText = findViewById(R.id.objEditText); phoneEditText = findViewById(R.id.phoneEditText); Button addButton = findViewById(R.id.addButton); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = nameEditText.getText().toString(); String obj = objEditText.getText().toString(); String phone = phoneEditText.getText().toString(); DBOpenHelper dbHelper = new DBOpenHelper(AddCourseActivity.this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("obj", obj); values.put("phone", phone); db.insert("course", null, values); db.close(); finish(); } }); } } ``` AddPersonActivity.java: ``` public class AddPersonActivity extends AppCompatActivity { private EditText mynameEditText; private EditText myclassEditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_person); mynameEditText = findViewById(R.id.mynameEditText); myclassEditText = findViewById(R.id.myclassEditText); Button addButton = findViewById(R.id.addButton); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String myname = mynameEditText.getText().toString(); String myclass = myclassEditText.getText().toString(); DBOpenHelper dbHelper = new DBOpenHelper(AddPersonActivity.this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("myname", myname); values.put("myclass", myclass); db.insert("student", null, values); db.close(); finish(); } }); } } ``` 最后,我们需要在AndroidManifest.xml中声明这两个Activity: ``` <activity android:name=".CourseActivity" /> <activity android:name=".PersonActivity" /> <activity android:name=".AddCourseActivity" /> <activity android:name=".AddPersonActivity" /> ``` 现在,我们已经完成了一个简单的学生选课系统的开发。

相关推荐

最新推荐

recommend-type

android studio实现简单考试应用程序实例代码详解

主要介绍了android studio实现简单考试应用程序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Android中使用Kotlin实现一个简单的登录界面

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。接下来本文通过实例代码给大家讲解Android中使用Kotlin实现一个简单的登录界面,一起看看吧
recommend-type

详解Android Studio实现用户登陆界面demo(xml实现)

主要介绍了详解Android Studio实现用户登陆界面demo,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Android编程实现两个Activity相互切换而不使用onCreate()的方法

主要介绍了Android编程实现两个Activity相互切换而不使用onCreate()的方法,结合实例形式分析了多个Activity切换而不重新创建的操作技巧,需要的朋友可以参考下
recommend-type

在Android系统源码中预置APK的方法

今天小编就为大家分享一篇关于在Android系统源码中预置APK的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。