1.

两个Bean文件:CostBean(用户)school(学校)
CostBean
package com.example.kaoyanpai;
public class school {
private String name;
private String fenshu;
private String bili;
private String jingyan;
private String taolunzu;
public school(String name, String fenshu, String bili, String jingyan, String taolunzu) {
this.name = name;
this.fenshu = fenshu;
this.bili = bili;
this.jingyan = jingyan;
this.taolunzu = taolunzu;
}
public school() {
}
public String getName() {
return name;
}
public String getFenshu() {
return fenshu;
}
public String getBili() {
return bili;
}
public String getJingyan() {
return jingyan;
}
public String getTaolunzu() {
return taolunzu;
}
public void setName(String name) {
this.name = name;
}
public void setFenshu(String fenshu) {
this.fenshu = fenshu;
}
public void setBili(String bili) {
this.bili = bili;
}
public void setJingyan(String jingyan) {
this.jingyan = jingyan;
}
public void setTaolunzu(String taolunzu) {
this.taolunzu = taolunzu;
}
}
school
package com.example.kaoyanpai;
public class CostBean {
private String name;
private String password;
public String getName() {
return name;
}
public String getPassword() {
return password;
}
public void setName(){
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public CostBean(){
}
public CostBean(String name, String password) {
this.name = name;
this.password = password;
}
}
db:连接数据库
package com.example.kaoyanpai;
import android.util.Log;
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class db {
private static String driver = "com.mysql.jdbc.Driver";//MySQL 驱动
private static String url = "jdbc:mysql://192.168.1.5:3306/yanhu?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull";
private static String user = "root";//用户名
private static String password = "zhangziyi1670";//密码
//192.168.1.5
/**
* 连接数据库
* */
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driver);//获取MYSQL驱动
conn = (Connection) DriverManager.getConnection(url, user, password);//获取连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库
* */
public static void closeAll(Connection conn, PreparedStatement ps){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 关闭数据库
* */
public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
if(getConn()!=null){
Log.i("message","ok");
}
else {
Log.i("m","no");
}
}
}
DBService:
package com.example.kaoyanpai;
import android.util.Log;
import com.mysql.jdbc.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DBService {
private Connection conn = null; //打开数据库对象
private PreparedStatement ps = null;//操作整合sql语句的对象
private ResultSet rs = null;//查询结果的集合
/**
* 获取要发送短信的患者信息 查
*/
public boolean getUserData(String name){
//结果存放集合
List<CostBean> list=new ArrayList<CostBean>();
boolean flag=false;
//MySQL 语句
String sql="select * from yanhu where name = '"+name+"'";
//获取链接数据库对象
conn= db.getConn();
try {
if(conn!=null&&(!conn.isClosed())){
ps= (PreparedStatement) conn.prepareStatement(sql);
if(ps!=null){
rs= ps.executeQuery();
if(rs!=null){
flag=true;
}
else flag=false;
}
}
} catch (SQLException e) {
e.printStackTrace();
}
db.closeAll(conn,ps,rs);//关闭相关操作
return flag;
}
//查学校
public List<school> searchschool(String name){
//结果存放集合
List<school> list=new ArrayList<school>();
//MySQL 语句
String sql="select * from school where name = '"+name+"'";
//获取链接数据库对象
conn= db.getConn();
try {
if(conn!=null&&(!conn.isClosed())){
ps= (PreparedStatement) conn.prepareStatement(sql);
if(ps!=null){
rs= ps.executeQuery();
if(rs.next()){
school school=new school();
school.setName(name);
school.setFenshu(rs.getString("fenshu"));
school.setBili(rs.getString("bili"));
school.setJingyan(rs.getString("jingyan"));
school.setTaolunzu(rs.getString("taolun"));
list.add(school);
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
db.closeAll(conn,ps,rs);//关闭相关操作
return list;
}
/**
* 修改数据库中某个对象的状态 改
* */
/*public int updateUserData(String phone){
int result=-1;
if(!StringUtils.isEmpty(phone)){
//获取链接数据库对象
conn= DBOpenHelper.getConn();
//MySQL 语句
String sql="update user set state=? where phone=?";
try {
boolean closed=conn.isClosed();
if(conn!=null&&(!closed)){
ps= (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1,"1");//第一个参数state 一定要和上面SQL语句字段顺序一致
ps.setString(2,phone);//第二个参数 phone 一定要和上面SQL语句字段顺序一致
result=ps.executeUpdate();//返回1 执行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn,ps);//关闭相关操作
return result;
}
/**
* 批量向数据库插入数据 增
* */
public int insertUserData(List<CostBean> list) {
int result = -1;
if ((list != null) && (list.size() > 0)) {
//获取链接数据库对象
conn = db.getConn();
if(conn==null){
Log.i("list","connnull");
}
//MySQL 语句
String sql = "INSERT INTO yanhu (name,password) VALUES (?,?)";
try {
boolean closed = conn.isClosed();
if ((conn != null) && (!closed)) {
for (CostBean user : list) {
ps = (PreparedStatement) conn.prepareStatement(sql);
String name = user.getName();
String password = user.getPassword();
ps.setString(1, name);//第一个参数 name 规则同上
ps.setString(2, password);//第二个参数 phone 规则同上
result = ps.executeUpdate();//返回1 执行成功
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
db.closeAll(conn, ps);//关闭相关操作
return result;
}
/**
* 删除数据 删
* */
/*public int delUserData(String phone) {
int result = -1;
if ((!StringUtils.isEmpty(phone)) && (PhoneNumberUtils.isMobileNumber(phone))) {
//获取链接数据库对象
conn = DBOpenHelper.getConn();
//MySQL 语句
String sql = "delete from user where phone=?";
try {
boolean closed = conn.isClosed();
if ((conn != null) && (!closed)) {
ps = (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, phone);
result = ps.executeUpdate();//返回1 执行成功
}
} catch (SQLException e) {
e.printStackTrace();
}
}
DBOpenHelper.closeAll(conn, ps);//关闭相关操作
return result;
}*/
public static void main(String[] args){
List<CostBean>list=new ArrayList<CostBean>();
CostBean costBean=new CostBean();
costBean.setName("zhangziyi");
costBean.setPassword("zhangziyi");
list.add(costBean);
//insertUserData(list);
}
}
ScoViewParger:新建class
package com.example.kaoyanpai;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
public class ScoViewParger extends ViewPager {
private Handler handler;
public ScoViewParger(@NonNull Context context) {
this(context,null);
}
public ScoViewParger(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
handler=new Handler(Looper.getMainLooper());
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
startLooper();
}
private void startLooper(){
handler.postDelayed(mTask,4000);
}
private Runnable mTask=new Runnable() {
@Override
public void run() {
int currentItem=getCurrentItem();
currentItem++;
setCurrentItem(currentItem);
postDelayed(this,4000);
}
};
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
stopLooper();
}
private void stopLooper(){
handler.removeCallbacks(mTask);
}
}
startActivity:空白Activity
package com.example.kaoyanpai;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class startActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<Integer> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
//10秒后向登录界面跳转
initViews();
initData();
Timer timer=new Timer();
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
startActivity(new Intent(startActivity.this,zhuce.class));
}
};
timer.schedule(timerTask,10000);
Log.i("message","chenggong");
}
private void initViews() { //加载布局
viewPager = (ViewPager) findViewById(R.id.im1);
viewPager.setAdapter(my);
}
private PagerAdapter my=new PagerAdapter(){
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
//Alt+Insert
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
View item= LayoutInflater.from(container.getContext()).inflate(R.layout.item,container,false);
ImageView iv=item.findViewById(R.id.im2);
//设置数据
iv.setImageResource(list.get(position));
if(iv.getParent() instanceof ViewGroup){
((ViewGroup)iv.getParent()).removeView(iv);
}
container.addView(iv);
return iv;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View)object);
}
};
private void initData() { //加载数据
list.add(R.mipmap.yan1);
list.add(R.mipmap.yan2);
list.add(R.mipmap.yan3);
my.notifyDataSetChanged();
}
}
zhuce:空白Activity
package com.example.kaoyanpai;
//import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class zhuce extends AppCompatActivity implements Button.OnClickListener {
private EditText name;
private EditText password;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zhuce);
name=(EditText)findViewById(R.id.dengluname);
password=(EditText)findViewById(R.id.denglupassword);
button=(Button)findViewById(R.id.button2);
button.setOnClickListener(this);
}
public void onClick(View view) {
//登录或者注册
String name1 = name.getText().toString();
String password1 = password.getText().toString();
List<CostBean> list = new ArrayList<CostBean>();
DBService service = new DBService();
//已有这个用户,提示
if (service.getUserData(name1) == true) {
showCoverDialog("登录成功");
} else {//没有这个用户 添加
CostBean costBean = new CostBean();
costBean.setPassword(password1);
costBean.setName(name1);
list.add(costBean);
if (list != null) {
Log.i("list", name1);
//添加成功,提示
service.insertUserData(list);
showCoverDialog("注册成功");
} else {
//添加失败 提示
Log.i("list", "空值");
showCoverDialog1("注册失败,请重新填写信息");
}
}
showCoverDialog("成功");
}
//测试
private void showCoverDialog(String message){
final AlertDialog.Builder builder = new AlertDialog.Builder(zhuce.this);
builder.setTitle("提示");
builder.setMessage(message);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
startActivity(new Intent(zhuce.this,MainActivity.class));
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
}
private void showCoverDialog1(String message){
final AlertDialog.Builder builder = new AlertDialog.Builder(zhuce.this);
builder.setTitle("提示");
builder.setMessage(message);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
}
}
MianActivity:BottomNa。。。(带有底部导航栏)
package com.example.kaoyanpai;
import android.os.Bundle;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications,R.id.shequ,R.id.wode)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
}
}
HomeFragment:包下的UI文件夹
package com.example.kaoyanpai.ui.home;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.example.kaoyanpai.DBService;
import com.example.kaoyanpai.R;
import com.example.kaoyanpai.school;
import java.util.List;
public class HomeFragment extends Fragment {
private HomeViewModel homeViewModel;
private Button button;
private EditText editText;
private TextView textView;
@SuppressLint("HandlerLeak")
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
Log.i("789","789");
switch (msg.what){
case 0x11:
String s = (String) msg.obj;
textView.setText(s);
Log.i("message","123");
break;
case 0x12:
String ss = (String) msg.obj;
textView.setText(ss);
break;
}
}
};
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);
final TextView textView = root.findViewById(R.id.text_home);
homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(@NonNull String s) {
textView.setText(s);
}
});
onStart(root);
return root;
}
protected void onStart(View v){
button=(Button)v.findViewById(R.id.button3);
editText=(EditText)v.findViewById(R.id.schoolname);
textView=(TextView)v.findViewById(R.id.show);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//创建一个线程,点击查询按钮,查询高校信息
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
//Handler handler=new Handler();
Message message=handler.obtainMessage();
/*message.what=0x11;
message.obj="chenggong";
Log.i("message","111");
handler.sendMessage(message);
Log.i("456","456");
*/
String name=editText.getText().toString();
DBService service=new DBService();
List<school> list=service.searchschool(name);
if (list != null) {
String s = "";
for (int i = 0; i < list.size(); i++) {
s += "分数线:" + list.get(i).getFenshu() + "
";
s += "报录比:" + list.get(i).getBili() + "
";
s += "经验: " + list.get(i).getJingyan() + "
";
s += "加入讨论组 " + list.get(i).getTaolunzu()+ "
";
}
//0x11、0x12消息的定位标志
message.what = 0x12;
message.obj = s;
} else {
message.what = 0x11;
message.obj = "查询结果为空";
}
handler.sendMessage(message);
}
}).start();
}
});
}
}
Layout部分:

shequ.xml 以及wode.xml我都没写,fragment开头的是自动生成的
activity_start.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/pink"
tools:context=".startActivity">
<com.example.kaoyanpai.ScoViewParger
android:id="@+id/im1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"/>
</RelativeLayout>
item.xml
<?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">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/im2"/>
</LinearLayout>
activity_mian.xml
<?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"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu" />
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@id/nav_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_zhuce.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".zhuce">
<!--app图标区域-->
<ImageView
android:layout_marginLeft="150dp"
android:id="@+id/tubiao"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="38dp"
android:background="@color/colorAccent"
android:src="@mipmap/touxiang"
android:scaleType="fitXY"/>
<TextView
android:id="@+id/jvzi"
android:layout_width="450px"
android:layout_height="100px"
android:layout_below="@+id/tubiao"
android:layout_marginTop="38dp"
android:gravity="center"
android:text="让考研不再孤单" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/denglu_name"
android:text="姓名"
android:layout_below="@+id/jvzi"
android:layout_marginTop="50dp"
android:layout_marginLeft="42dp"/>
<EditText
android:layout_width="500px"
android:layout_height="100px"
android:id="@+id/dengluname"
android:layout_below="@+id/jvzi"
android:layout_toRightOf="@+id/denglu_name"
android:layout_marginTop="50dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/denglu_password"
android:text="密码"
android:layout_below="@+id/denglu_name"
android:layout_marginTop="37dp"
android:layout_marginLeft="42dp"/>
<EditText
android:layout_width="500px"
android:layout_height="100px"
android:id="@+id/denglupassword"
android:layout_below="@+id/dengluname"
android:layout_toRightOf="@+id/denglu_password"
android:layout_marginTop="37dp"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/denglupassword"
android:id="@+id/button1"
android:layout_marginTop="37dp"
android:layout_marginLeft="42dp"
android:text="同意研乎《用户注册协议》《隐私协议》" />
<TextView
android:layout_width="500px"
android:layout_height="100px"
android:id="@+id/jvzi2"
android:layout_below="@+id/button1"
android:layout_marginLeft="42dp"
android:layout_marginTop="30dp"
android:text="新用户登录后自动注册"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/jvzi2"
android:id="@+id/button2"
android:layout_marginLeft="42dp"
android:layout_marginTop="25dp"
android:text="登录/注册"
android:onClick="onClick"/>
</RelativeLayout>
fragment_home.xml
<?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:layout_width="match_parent"
android:layout_height="match_parent"
tools:actionBarNavMode="tabs">
<TextView
android:id="@+id/text_home"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="8dp"
android:textAlignment="center"
android:textSize="50sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/school_name"
android:layout_width="100dp"
android:layout_height="45dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginBottom="500dp"
android:text="@string/school_name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/text_home"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.93" />
<EditText
android:id="@+id/schoolname"
android:layout_width="300dp"
android:layout_height="45dp"
android:layout_marginStart="12dp"
android:layout_marginLeft="12dp"
android:layout_marginTop="156dp"
android:hint="请输入您想要查询的学校信息"
app:layout_constraintStart_toEndOf="@+id/school_name"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginBottom="440dp"
android:text="查询"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginBottom="172dp"
android:text="123"
app:layout_constraintBottom_toBottomOf="parent"
tools:layout_editor_absoluteX="-31dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
values:string.xml
<resources>
<string name="app_name">kaoyanpai</string>
<string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string>
<string name="title_notifications">Notifications</string>
<string name="school_name">院校名称</string>
</resources>
values:color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="pink">#FFC0CB</color>
</resources>
轮播图的照片复制到mipmap下
数据库表
用户表:
院校表:

python爬取数据代码:
import bs4
import pymysql
import requests
from bs4 import BeautifulSoup
import pandas as pd
def download_all_htmls():
htmls=[];
for idx in range(2):
url=f"https://yz.chsi.com.cn/sch/?start={idx*20}"
print("craw html",url)
r=requests.get(url)
if r.status_code!=200:
raise Exception("error")
htmls.append(r.text)
return htmls
htmls=download_all_htmls()
def parse_single_html(html):
name1=[];
soup=BeautifulSoup(html,'html.parser')
tbody=soup.find('tbody')
print("1")
if isinstance(tbody, bs4.element.Tag):
for tr in tbody.find_all("tr"):
a=tr.find("td").find("a")
name1.append(a.getText().replace(' ', ''))
print(name1)
return name1
'''
for idex in range(2):
name2 = parse_single_html(htmls[idex])
name=tbody.find('tr').find('td').find('a')
'''
conn = pymysql.connect(
host='localhost', # 我的IP地址
port=3306, # 不是字符串不需要加引号。
user='root',
password='zhangziyi1670',
db='yanhu',
charset='utf8'
)
cursor = conn.cursor() # 获取一个光标
for idex in range(2):
name = parse_single_html(htmls[idex])
for a in range(20):
sql = 'insert into school (name,fenshu,bili) values (%s,%s,%s);'
name3=name[a]
print(name3)
fenshu=420
bili=0.2
cursor.execute(sql, [name3,fenshu,bili])
print()
conn.commit()
cursor.close()
conn.close()
# name2=parse_single_html(htmls[0])
# def pa(html):
# soup=BeautifulSoup(html,"html.parser")
# articles=soup.find_all("artical")
# datas=[]
# for article in articles:
# title_node=(
# article.find("h2",class_="entry_title")
# .find("a")
# )
# title=title_node.get_text()
# # 得到title的内容
# link=title_node["href"]
# # 得到title的链接
# datas.append({"title":title,"link":link});
# return datas