第一次结队作业psp0级报告2

1.1需求描述:

 

 

1.2估计开发时间

三天

1.3填写项目数据

用户添加地铁时,储存到数据库中

1.4填写时间记录日志

 

学生:贾湛秋,郭子锴     日期:2023.3.25

教师:王建民             课程:软件工程

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

3.23

18:00

21:00

 

3小时

手机端的页面开发以及封装类

设计数据库的结构

 

 

3.24

18:00

22:00

 

4小时

调试程序

编写相关功能的实现

 

 

3.25

18:00

23:00

 

5小时

调试程序

完善功能,优化界面

 

 

 

  1. 开发

2.1设计程序

通过算法实现对路径的查询,并传值到app端页面中,弹出相关线路信息,用户如选择添加,则跳转至添加页面

 

2.2设计实现

 

源代码(只展示重要部分):

 index.activity

package com.example.subway;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;

public class index extends AppCompatActivity implements View.OnClickListener{


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);
findViewById(R.id.selectsub).setOnClickListener(this);
findViewById(R.id.addsub).setOnClickListener(this);
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.selectsub:
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
break;
case R.id.addsub:
Intent intent1=new Intent(this,addsub.class);
startActivity(intent1);
break;
}

}
}

addsub

package com.example.subway;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.Serializable;
import java.util.ArrayList;

import bean.base;
import dao.Dao;

public class addsub extends AppCompatActivity implements View.OnClickListener {

EditText a,b,c,d,e;
Handler handler=new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addsub);
a=findViewById(R.id.line_name);
b=findViewById(R.id.station_name);
c=findViewById(R.id.next_station);
d=findViewById(R.id.line_direction);
e=findViewById(R.id.line_city);
findViewById(R.id.tianjia).setOnClickListener(this);
ActionBar bar=getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case android.R.id.home:
onPause();
finish();
break;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.tianjia:
String line=a.getText().toString();
String station=b.getText().toString();
String next=c.getText().toString();
String dir=d.getText().toString();
String city=e.getText().toString();
if(line.equals("")||station.equals("")||next.equals("")||dir.equals("")||city.equals("")){
handler.post(nullmess);
break;
}
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
Dao dao=new Dao();
if(dao.insertline(line,station,next,dir,city)){
handler.post(succmess);
return;
}
else{
handler.post(samestation);
return;
}
}
});
thread.start();
break;
}
}
public Runnable samestation=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"该线路已存在!",Toast.LENGTH_SHORT).show();
}
};
public Runnable nullmess=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"有信息未录入!",Toast.LENGTH_SHORT).show();
}
};
public Runnable succmess=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"录入成功!",Toast.LENGTH_SHORT).show();
}
};
}

main

package com.example.subway;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.concurrent.Callable;

import bean.base;
import bean.changesub;
import dao.Dao;
import util.DButil;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private static final String TAG = "1qaz";
String data;
EditText editText;
EditText station;
EditText start,end,city1,city2,city3;
Handler handler=new Handler();

@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=findViewById(R.id.linedata);
station=findViewById(R.id.stationdata);
start=findViewById(R.id.startst);
end=findViewById(R.id.endst);
city1=findViewById(R.id.city1);
city2=findViewById(R.id.city2);
city3=findViewById(R.id.city3);
findViewById(R.id.line).setOnClickListener(this);
findViewById(R.id.station).setOnClickListener(this);
findViewById(R.id.diffcult).setOnClickListener(this);
findViewById(R.id.allline).setOnClickListener(this);
ActionBar bar=getSupportActionBar();
bar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case android.R.id.home:
onPause();
finish();
break;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onClick(View view) {
Dao dao=new Dao();
Thread thread;
switch (view.getId()){
case R.id.line:
data=editText.getText().toString();
String city11=city1.getText().toString();
thread=new Thread(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(MainActivity.this,listend.class);
Bundle bundle=new Bundle();
if(!dao.confirmcity(city11)){
handler.post(cityerror);
return;
}
if(!dao.confirmline(data,city11)) {
handler.post(lineerror);
return;
}
ArrayList<base> bases=dao.getline1(data,city11);
bundle.putSerializable("bases",(Serializable) bases);
intent.putExtras(bundle);
startActivity(intent);
}
});
thread.start();
break;
case R.id.station:
String data2=station.getText().toString();
String city22=city2.getText().toString();
thread=new Thread(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(MainActivity.this,listend.class);
Bundle bundle=new Bundle();
if(!dao.confirmcity(city22)){
handler.post(cityerror);
return;
}
if(!dao.confirmstation(data2,city22)) {
handler.post(stationerror);
return;
}
ArrayList<base> bases=dao.getline2(data2,city22);
bundle.putSerializable("bases",(Serializable) bases);
intent.putExtras(bundle);
startActivity(intent);
}
});
thread.start();
break;
case R.id.diffcult:
String start1=start.getText().toString();
String end1=end.getText().toString();
if (start1.equals(end1)) {
handler.post(samestation);
break;
}
String city33=city3.getText().toString();
thread=new Thread(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(MainActivity.this,minline.class);
Bundle bundle=new Bundle();
if(!dao.confirmcity(city33)){
handler.post(cityerror);
return;
}
if(!dao.confirmstation(start1,city33)||!dao.confirmstation(end1,city33)) {
handler.post(stationerror);
return;
}
ArrayList<changesub> bases=dao.getline4(start1,end1,city33);
bundle.putSerializable("bases",(Serializable) bases);
intent.putExtras(bundle);
startActivity(intent);
}
});
thread.start();
break;
case R.id.allline:
String s=start.getText().toString();
String k=end.getText().toString();
if (s.equals(k)) {
handler.post(samestation);
break;
}
String city44=city3.getText().toString();
thread=new Thread(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(MainActivity.this,listchange.class);
Bundle bundle=new Bundle();
if(!dao.confirmcity(city44)){
handler.post(cityerror);
return;
}
if(!dao.confirmstation(s,city44)||!dao.confirmstation(k,city44)) {
handler.post(stationerror);
return;
}
ArrayList<changesub> bases=dao.getline3(s,k,city44);
bundle.putSerializable("bases",(Serializable) bases);
intent.putExtras(bundle);
startActivity(intent);
}
});
thread.start();
break;
}
}
public Runnable stationerror=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"输入站点不存在",Toast.LENGTH_SHORT).show();
}
};
public Runnable lineerror=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"输入线路不存在",Toast.LENGTH_SHORT).show();
}
};
public Runnable cityerror=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"该城市还未开通地铁",Toast.LENGTH_SHORT).show();
}
};
public Runnable samestation=new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"输入起点和终点相同!",Toast.LENGTH_SHORT).show();
}
};
}

 

 

 

 

2.3编译程序,修复并记录所发现的bug,并填写缺陷记录日志

学生:贾湛秋

日期:2023.3.25

老师:王建民

程序号:1

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3.23

1

20

编码

编译

1h

 

连接mysql数据库不成功,通过查找资料,修改root权限和设置ip,启用多线程解决

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

3.25

2

20

编码

编译

2h

 

当起点和终点相同时,不显示线路,通过进入新页面并显示信息解决

 

  1. 总结

本程序大约在花了四天的时间完成,在开发过程中,遇到的bug有查询线路出错,对android的了解还不够,不知道如何可视化页面,其他需求已基本完成

 

posted @ 2023-03-25 21:37  小趴菜且能喝66  阅读(8)  评论(0编辑  收藏  举报