engilsh: top

下载前必看:https://pan.quark.cn/s/a4b39357ea24 在当前快节奏的社会背景下,快递代拿服务已演变为日常生活中不可或缺的组成部分。 基于SSM(Spring、SpringMVC、MyBatis)框架的Java快递代拿系统,正是为了迎合这一需求而进行设计和构建的。 接下来将系统性地阐述系统的功能特性、架构布局以及具体的实现步骤。 1. **系统功能**: - **用户模块**:用户具备注册账户、登录验证、提交订单、挑选快递代取服务以及完成线上支付的各项操作。 - **订单模块**:当客户提交订单后,系统将自动生成包含快递种类、取件地点、送件地点等详细信息的订单记录,用户能够实时追踪订单进展,如待接单、处理中、已完成等不同阶段。 - **管理员模块**:管理员享有高级操作权限,能够接收并处理订单,执行订单的添加、删除、查询和修改等操作,同时负责处理用户的疑问和投诉。 - **支付模块**:系统整合了在线支付接口,支持用户通过第三方支付渠道完成支付,以此保障交易过程的安全性和便利性。 2. **技术选型**: - **SSM框架**:Spring主要用于依赖注入和事务控制,SpringMVC负责处理客户端请求与服务器响应,MyBatis作为数据持久化层,执行数据库交互,三者协同工作构建了一个高效且灵活的开发环境。 - **MySQL数据库**:系统内所有数据,包括用户资料、订单详情、支付历史等,均存储于MySQL数据库中,其卓越的查询性能和稳定性为系统提供了可靠的数据基础。 3. **系统架构**: - **前端**:运用HTML、CSS和JavaScript进行界面设计,可能还会引入Vue.js或jQuery等库以增强用户体验。 - **后端*...
package com.example.jidanci import android.content.ContentValues import android.content.DialogInterface import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.CheckBox import android.widget.EditText import android.widget.ListView import androidx.appcompat.app.AlertDialog class myupdate : AppCompatActivity() { lateinit var update_english: EditText lateinit var update_chinese: EditText lateinit var update_ok: Button lateinit var main_istag: CheckBox var flag: Int=0; override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_myupdate) update_chinese=findViewById(R.id.chinese_update) update_english=findViewById(R.id.engilsh_update) update_ok=findViewById(R.id.ok_update) main_istag=findViewById(R.id.istag) //接收来自单词列表的数据 var myreceive=this.intent var updateid=myreceive.getStringExtra("update_id") update_english.setText(myreceive.getStringExtra("update_english")) update_chinese.setText(myreceive.getStringExtra("update_chinese")) main_istag.setOnCheckedChangeListener { buttonView, isChecked -> if(main_istag.isChecked) { flag=1 } else flag=0 } println("updatereceive:${updateid}") update_ok.setOnClickListener{ var updateRecordDialog: AlertDialog.Builder = AlertDialog.Builder(this) updateRecordDialog.setTitle("更新单词") .setMessage("确定更新?") .setPositiveButton("更新", DialogInterface.OnClickListener{ dialog, which -> var main_mysql = DBHelper(this,"words.db",null,1) var db=main_mysql.openDB() var myvalue=ContentValues() myvalue.put("yw",update_english.text.toString()) myvalue.put("zw",update_chinese.text.toString()) myvalue.put("flag",flag) db.update("mywords",myvalue,"id=?", arrayOf(updateid.toString())) db.close() var myback = Intent(this,MainActivity::class.java) startActivity(myback) }) .setNegativeButton("取消", DialogInterface.OnClickListener{ dialog, which -> }) .create() .show() } } } package com.example.jidanci import android.content.ContentValues import android.content.Intent import android.database.sqlite.SQLiteDatabase import android.os.Bundle import android.widget.Button import android.widget.CheckBox import android.widget.EditText import android.widget.Toast import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { val TABLE_NAME = "words" val dbHelper = DBHelper(this, TABLE_NAME) lateinit var db: SQLiteDatabase private lateinit var btnInsert: Button private lateinit var btnFind: Button private lateinit var edtEnglish: EditText private lateinit var edtChinese: EditText private lateinit var cbFlag: CheckBox override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btnInsert = findViewById(R.id.btn_insert) btnFind = findViewById(R.id.btn_find) edtEnglish = findViewById(R.id.edt_english) edtChinese = findViewById(R.id.edt_chinese) cbFlag = findViewById(R.id.cd_flag) btnInsert.setOnClickListener { val yw = edtEnglish.text.toString().trim() val zw = edtChinese.text.toString().trim() if (yw.isEmpty() || zw.isEmpty()) { Toast.makeText(this, "请输入英文单词和中文含义", Toast.LENGTH_SHORT).show() return@setOnClickListener } db = dbHelper.openDB() val flag = if (cbFlag.isChecked) 1 else 0 val values = ContentValues().apply { put("yw", yw) put("zw", zw) put("flag", flag) } try { val rowId = db.insert(TABLE_NAME, null, values) if (rowId != -1L) { Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show() edtEnglish.text.clear() edtChinese.text.clear() cbFlag.isChecked = false } else { Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show() } } finally { db.close() } } btnFind.setOnClickListener { val intent = Intent(this, ListWordsActivity::class.java) .apply { putExtra("yw", edtEnglish.text.toString()) putExtra("zw", edtChinese.text.toString()) putExtra("flag", if (cbFlag.isChecked) 1 else 0) } startActivity(intent) } }}package com.example.jidanci import android.annotation.SuppressLint import android.content.Context import android.content.DialogInterface import android.database.Cursor import android.database.sqlite.SQLiteDatabase import android.os.Bundle import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.ListView import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity class ListWordsActivity : AppCompatActivity() { private val TABLE_NAME = "words" private val dbHelper = DBHelper(this, TABLE_NAME) private lateinit var lv_words: ListView private var wordsList = ArrayList<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_list_words) lv_words = findViewById(R.id.lv_words) try { val words = getWords(TABLE_NAME) if (words.isEmpty()) { Toast.makeText(this, "没有找到单词", Toast.LENGTH_SHORT).show() finish() // 如果没有数据,直接返回 return } val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, words) lv_words.adapter = adapter lv_words.setOnItemLongClickListener(ItemLongListener(this)) } catch (e: Exception) { Toast.makeText(this, "查询出错: ${e.message}", Toast.LENGTH_SHORT).show() e.printStackTrace() finish() } } @SuppressLint("Range") private fun getWords(tableName: String): ArrayList<String> { wordsList.clear() val db: SQLiteDatabase = dbHelper.openDB() val yw = intent.getStringExtra("yw")?.trim() val zw = intent.getStringExtra("zw")?.trim() val flag = intent.getIntExtra("flag", -1) val cursor: Cursor = when { !yw.isNullOrEmpty() -> { db.query(tableName, null, "yw = ?", arrayOf(yw), null, null, "id desc") } !zw.isNullOrEmpty() -> { db.query(tableName, null, "zw = ?", arrayOf(zw), null, null, "id desc") } flag == 1 -> { db.query(tableName, null, "flag = ?", arrayOf("1"), null, null, "id desc") } else -> { db.query(tableName, null, null, null, null, null, "id desc") } } try { var index = 0 while (cursor.moveToNext()) { index++ val currentYw = cursor.getString(cursor.getColumnIndex("yw")) val currentZw = cursor.getString(cursor.getColumnIndex("zw")) wordsList.add("$index. $currentYw - $currentZw") } } finally { cursor.close() db.close() } return wordsList } private fun delRecord(tableName: String, yw: String, zw: String) { val db: SQLiteDatabase = dbHelper.openDB() try { val rowsDeleted = db.delete(tableName, "yw=? and zw=?", arrayOf(yw, zw)) if (rowsDeleted > 0) { Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show() refreshList() } else { Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show() } } finally { db.close() } } private fun refreshList() { val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, getWords(TABLE_NAME)) lv_words.adapter = adapter } inner class ItemLongListener(context: Context) : AdapterView.OnItemLongClickListener { private val context = context override fun onItemLongClick( parent: AdapterView<*>?, view: View?, position: Int, id: Long ): Boolean { parent?.getItemAtPosition(position)?.toString()?.let { info -> // 修改解析逻辑以匹配新的格式 val parts = info.split(" - ") if (parts.size == 2) { val ywPart = parts[0].substringAfter(". ").trim() val zw = parts[1].trim() AlertDialog.Builder(context) .setTitle("删除单词") .setMessage("确定要删除 '$ywPart - $zw' 吗?") .setPositiveButton("删除") { _, _ -> delRecord(TABLE_NAME, ywPart, zw) } .setNegativeButton("取消", null) .show() } } return true } } }package com.example.jidanci import android.content.Context import android.database.sqlite.SQLiteDatabase import android.os.Bundle import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat /** * 数据库帮助类,用于创建和管理单词数据库 * @param context Android上下文对象 * @param tableName 要操作的数据表名称 */ class DBHelper(context: Context, tableName: String) { // 保存上下文对象 var context = context // 保存数据表名称 var tableName = tableName /** * 打开或创建数据库 * @return SQLiteDatabase 数据库实例 */ fun openDB(): SQLiteDatabase { // 获取应用数据库目录路径(/data/data/包名/databases) var path: String = context.getDatabasePath("database").parent // 打开或创建数据库文件(words.db) var db: SQLiteDatabase = SQLiteDatabase.openOrCreateDatabase(path + "/words.db", null) // 构建创建表的SQL语句: // CREATE TABLE IF NOT EXISTS 表名 ( // id INTEGER PRIMARY KEY AUTOINCREMENT, // yw TEXT, // zw TEXT, // flag NUMERIC // ) val create_table_sql = "create table if not exists " + tableName + "(id integer primary key autoincrement," + "yw text,zw text,flag numeric)" // 执行SQL语句创建表 db.execSQL(create_table_sql) // 返回数据库实例 return db } }<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.05" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.95" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.05" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.95" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.15" /> <EditText android:hint="请输入单词的中文含义" android:id="@+id/edt_english" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="text" app:layout_constraintBottom_toTopOf="@+id/guideline5" app:layout_constraintEnd_toStartOf="@+id/guideline4" app:layout_constraintStart_toStartOf="@+id/guideline3" app:layout_constraintTop_toTopOf="@+id/guideline5" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.3" /> <EditText android:hint="请输入英文单词" android:id="@+id/edt_chinese" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:inputType="text" app:layout_constraintBottom_toTopOf="@+id/guideline6" app:layout_constraintEnd_toStartOf="@+id/guideline4" app:layout_constraintStart_toStartOf="@+id/guideline3" app:layout_constraintTop_toTopOf="@id/guideline6" app:layout_constraintVertical_bias="0.276" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.45" /> <CheckBox android:id="@+id/cd_flag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="是否标记" app:layout_constraintBottom_toTopOf="@+id/guideline7" app:layout_constraintEnd_toStartOf="@+id/guideline4" app:layout_constraintHorizontal_bias="0.496" app:layout_constraintStart_toStartOf="@+id/guideline3" app:layout_constraintTop_toTopOf="@+id/guideline7" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.6" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.5" /> <Button android:id="@+id/btn_insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="记单词" app:layout_constraintBottom_toTopOf="@+id/guideline8" app:layout_constraintEnd_toStartOf="@+id/guideline9" app:layout_constraintStart_toStartOf="@+id/guideline3" app:layout_constraintTop_toTopOf="@+id/guideline8" /> <Button android:id="@+id/btn_find" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查单词" app:layout_constraintBottom_toTopOf="@+id/guideline8" app:layout_constraintEnd_toStartOf="@+id/guideline4" app:layout_constraintStart_toStartOf="@+id/guideline9" app:layout_constraintTop_toTopOf="@+id/guideline8" /> </androidx.constraintlayout.widget.ConstraintLayout>单击更新某个单词(中文,英文,标记),通过对话框确认是否更新
05-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值