Day17

一、笔记:

学习IO先明白方向,IO指的是输入、输出流
IO流:用来操作硬盘中的文件的内容

按操作的文件分:字符流 、 字节流

Java提供了两个字节流的根类:InputStream  OutputStream
Java提供了两个字符流的根类:Reader   Writer  专门用来操作文本文件

文件流:FileInputStream   FileOuputStream
        FileReader    FileWriter


缓冲流:BufferedOutputStream   BufferedInputStream
    BufferedReader   BufferedWriter

Set:1.存储的数据无序  2.数据具有唯一性
HashSet:
TreeSet:
实现对象之间的比较:实现Comparable接口中的compareTo方法:
逻辑关系:正数  负数  零

Map集合:单对(键值对)
HashMap

常用类库:

Object    包装类    BigDecimal   BigInteger   String  StringBuffer StringBuilder   Math (数学

Arrays(数组排序).sort(数组)

如果我想获取当前系统时间?

Date java提供的日期类,用来获取当前系统时间

SimpleDateFormat     完成字符串和时间对象的转化

Calendar日历类

人们是:某对时间的认识某年某月某日,这样的日期概念。计算机是long类型的数字。通过Canledar在二者之间搭起桥梁!

2018915

||||||||||||||

456465456423132

GregorianCalendar公历(GCalendar)

GregorianCalendar Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

注意:

    月份:一月是0,二月是1,以此类推,12月是11

    星期:周日是1,周一是2....周六是7

Monday 星期一 Tuesday 星期二 Wednesday 星期三 Thursday 星期四 Friday 星期五 Saturday 星期六 Sunday 星期

一月:January 二月:February 三月:March 四月:April 五月:May 六月:June 七月:July 八月:August 九月:September 十月:October十一月:November 十二月:December

File

java.io.File:文件和目录路径名的抽象表现形式

通过File对象可以访问文件的属性(读文件属性)

   public boolean canRead()  public boolean canWrite()

    public boolean exists()    public boolean isDircetory()

    public boolean  isFile()     public boolean isHidden()

    public long lastModified()   public long length()

    public String getName()    public String getPath()

通过File对象创建空文件或目录(在该对象所指的文件或者目录不存在的情况下)

public boolean createNewFile()throws IOException

public boolean  delete()

public boolean mkdir()mkdirs()

二、巩固

写个通讯录,并对该通讯录进行增删改查操作

package com.qfedu.zhuguangyi.homework;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class AdressBook {
	public static void main(String []args) throws Exception{
		while(true){
			System.out.println(" 欢迎来到四火的通讯录");
			System.out.println("请选择你要执行的功能");
			System.out.println("添加(1)");
			System.out.println("删除(2)");
			System.out.println("按照姓名查询(3)");
			System.out.println("按照手机号查询(4)");
			System.out.println("修改(5)");
			System.out.println("按照字母顺序全部显示(6)");
			System.out.println("退出(7)");
			Scanner sc=new Scanner(System.in);
			int x=sc.nextInt();
			switch(x){
			case 1:add();break;
			case 2:delete();break;
			case 3:demandName();break;
			case 4:demandNumber();break;
			case 5:modification();break;
			case 6:display();break;
			case 7:exit();break;
			}
		}
	
	}
	
	//将文件中的东西写入集合中
	 public static void readData( ArrayList<Person> array)throws IOException {
	        // 创建输入缓冲流对象
	        BufferedReader br = new BufferedReader(new FileReader("person.txt"));
	        String line;
	        while ((line = br.readLine()) != null) {
	            String[] datas = line.split(",");
	            Person p = new Person();
	            p.setName(datas[0]);
	            p.setTp(datas[1]);
	            p.setAdress(datas[2]);
	            array.add(p);
	        }
	        br.close();
	    }

	    // 把集合中的数据写入文件
	    public static void writeData( ArrayList<Person> array)
throws IOException {
	        // 创建输出缓冲流对象
	        BufferedWriter bw = new BufferedWriter(new FileWriter("person.txt"));

	        for (int x = 0; x < array.size(); x++) {
	            Person p = array.get(x);
	            StringBuilder sb = new StringBuilder();
	            sb.append(p.getName()).append(",").append(p.getTp()).append(",").append(p.getAdress());
	            bw.write(sb.toString());
	            bw.newLine();
	            bw.flush();
	        }

	        bw.close();
	    }
	    //添加
	    public static void add() throws IOException{
	    	//创建集合对象
	        ArrayList<Person> array = new ArrayList<Person>();
	        //从文件中把数据读取到集合中
	        readData(array);
	                
	        //创建键盘录入对象
	        Scanner sc = new Scanner(System.in);
	        String name;
	       
	        	while(true){
		            System.out.println("请输入姓名:");
		            name = sc.nextLine();
		            int x=-1;
		           
		            for(int i=0; i<array.size(); i++) {
		                Person p = array.get(i);
		                
		                if(p.getName().equals(name)) {
		                   x= -2; //说明这个人名已经存有手机号了
		                    break;
		                }
		            }
		            
		            if(x==-2) {
		                System.out.println("你输入的姓名已经有人用了,请重新输入");
		            }else {
		            	break;  
		            }

	        	}
	            System.out.println("请输入手机号:");
    	        String tp = sc.nextLine();
    	        Person p = new Person();
    	        System.out.println("请输入地址");
    	        String adress=sc.nextLine();
    	        p.setName(name);
    	        p.setTp(tp);
    	        p.setAdress(adress);
    	       System.out.println(tp);
    	        array.add(p);
    	        //把集合中的数据重新写回到文件
    	        writeData(array);
    	        System.out.println("添加成功");

	    }
	    
	    //删除
	    public static void delete() throws IOException{
	    	ArrayList<Person> array = new ArrayList<Person>();
	        //从文件中把数据读取到集合中
	        readData(array);        
	        //创建键盘录入对象
	        Scanner sc = new Scanner(System.in);
	        System.out.println("请输入你要删除的人的姓名");
	        String name=sc.nextLine();
	        int x=-1;
	        for(int i=0;i<array.size();i++){
	        	Person p=array.get(i);
	        	if(p.getName().equals(name)){
	        		x=1;
	        		System.out.println(x);
	        		array.remove(i);
	        		writeData(array);
	        		System.out.println("删除成功");
	        		break;
	        	} 	
	        }
	        if(x==-1){
	        	
	        	System.out.println("输入的姓名不存在");
	        }
	        
	    }
	    //按照姓名查询
	    public static void demandName() throws IOException{
	    	ArrayList<Person> array=new ArrayList<Person>();
	    	readData(array);
	    	Scanner sc= new Scanner(System.in);
	    	System.out.println("请输入你要查看的的人的姓名:");
	    	String name=sc.nextLine();
	    	int x=-1;
	    	for(int i=0;i<array.size();i++){
	    		Person p=array.get(i);
	    		if(p.getName().equals(name)){
	    			x=1;
	    			System.out.println("您要查看的人的姓名是:"+name+"手机号是:"+p.getTp()+"地址是:"+p.getAdress());
	    		}
	    	}
	    	if(x==-1){
	    		System.out.println("你要查看的人不存在");
	    	}
	    	
	    }
	    //按照手机号查询
	    public static void demandNumber() throws IOException{
	    	ArrayList<Person> array=new ArrayList<Person>();
	    	readData(array);
	    	Scanner sc= new Scanner(System.in);
	    	System.out.println("请输入你要查看的的人的手机号:");
	    	String tp=sc.nextLine();
	    	int x=-1;
	    	for(int i=0;i<array.size();i++){
	    		Person p=array.get(i);
	    		if(tp.equals(p.getTp())){
	    			x=1;
	    			System.out.println("您要查看的人的姓名是:"+p.getName()+"手机号是:"+p.getTp()+"地址是:"+p.getAdress());
	    		}
	    	}
	    	if(x==-1){
	    		System.out.println("你要查看的人不存在");
	    	}
	    }
	    //修改
	    public static void modification()throws IOException{
	    	ArrayList <Person> array=new ArrayList<Person>();
	    	readData(array);
	    	Scanner sc=new Scanner(System.in);
	    	System.out.println("请输入你要修改的人的名字");
	    	String name=sc.nextLine();
	    	String tp = null;
	    	String adress=null;
	    	int x=-1;
	    	for(int i=0;i<array.size();i++){
	    		Person p=array.get(i);
	    		if(p.getName().equals(name)){
	    			tp=p.getTp();
	    			adress=p.getAdress();
	    			x=i;
	    			break;
	    		}
	    	}
	    	if(x==-1){
	    		System.out.println("你输入的名字不存在");
	    	}else{
	    		Person p=new Person();
	    		System.out.println("请问您是要修改名字(1)还是修改手机号(2)还是修改地址(3)或者全部修改(4)");
   			int y=sc.nextInt();
   			if(y==1){
   				Scanner sc1=new Scanner(System.in);
	    			System.out.println("请输入名字:");
	    			String name1=sc1.nextLine();
	    			int h=-1;
	    			for(int i=0;i<array.size();i++){
	    				Person p2=array.get(i);
	    				if(p2.getName().equals(name1)){
	    					h=-2;
	    					break;
	    				}
	    			}
	    			if(h==-2){
	    				System.out.println("这个名字已经存在");
	    			}else{
		    			p.setName(name1);
		    			p.setTp(tp);
		    			p.setAdress(adress);
		    			array.set(x, p);
		    			writeData(array);
		    			System.out.println("修改成功");
	    			}

   			}    			
   			if(y==2){
   				Scanner sc1=new Scanner(System.in);
	    			System.out.println("请输入手机号");
	    			String tp1=sc1.nextLine();
	    			p.setName(name);
	    			p.setAdress(adress);
	    			p.setTp(tp1);
	    			array.set(x, p);
	    			writeData(array);
	    			System.out.println("修改成功");
   			}
   			if(y==3){
   				Scanner sc1=new Scanner(System.in);
   				System.out.println("请输入地址");
	    			String address1=sc1.nextLine();
	    			p.setName(name);
	    			p.setAdress(address1);
	    			p.setTp(tp);
	    			array.set(x, p);
	    			writeData(array);
	    			System.out.println("修改成功");
   			}
   			if(y==4){
   				//全部都改
   				Scanner sc1=new Scanner(System.in);

	    			System.out.println("请输入名字");
	    			String name1=sc1.nextLine();
	    			int h=-1;
	    			for(int i=0;i<array.size();i++){
	    				Person p2=array.get(i);
	    				if(p2.getName().equals(name1)){
	    					h=-2;
	    					break;
	    				}
	    			}
	    			if(h==-2){
	    				System.out.println("这个名字已经存在");
	    			}else{
		    			System.out.println("请输入手机号");
		    			String tp1=sc1.nextLine();
	    				System.out.println("请输入地址");
		    			String address1=sc1.nextLine();
		    			p.setName(name1);
		    			p.setTp(tp1);
		    			p.setAdress(address1);
		    			array.set(x, p);
		    			writeData(array);
		    			System.out.println("修改成功");
	    			}
	    			
   			}

	    	}
	    	
	    		    	
	    }
	    //按照字母顺序全部显示
	    public static void display()throws IOException{
	    	ArrayList<Person> array=new ArrayList<Person>();
	    	readData(array);
	    	System.out.println("姓名     手机号     地址");
	    	for(int x=0;x<array.size();x++){
	    		for(int j=0;j<(array.size()-x-1);j++){
		    		Person p1=array.get(j);
		    		Person p2=array.get(j+1);
		    		String name1=p1.getName();
		    		String name2=p2.getName();
	    			if(name1.compareTo(name2)>0){
	    				p1.setName(name2);
	    				p2.setName(name1);
	    			}
	    		}
	    	}
	    	writeData(array);
	    	ArrayList<Person> array1=new ArrayList<Person>();
	    	readData(array1);
	    	for(int i=0;i<array1.size();i++){
	    		Person p=array1.get(i); 
	    		System.out.println(p.getName()+" "+" "+" "+" "+" "+" "+" "+p.getTp()+" "+" "+" "+" "+" "+" "+p.getAdress());
	    		
	    	}
	    	
	    	
	    }
	    public static void exit()throws IOException{
	    	System.out.println("谢谢使用");
	    	System.exit(0);
	    }

}
package com.qfedu.zhuguangyi.homework;

public class Person {
	//手机号
	private String tp;
	private String name;
	private String adress;
	public Person(){
		
	}
	
	public Person(String name,String tp,String adress){
		this.tp=tp;
		this.name=name;
		this.adress=adress;
		
	}
 
    public String getTp() {
        return tp;
    }
 
    public void setTp(String tp) {
        this.tp = tp;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    public void setAdress(String adress){
    	this.adress=adress;
    }
    public String getAdress(){
    	return adress;
    }
}

最值得欣赏的风景,是自己奋斗的足迹。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Day17 中,我们可以通过 Flask 框架快速搭建一个 BBS 论坛。具体步骤如下: 1. 创建 Flask 应用 ```python from flask import Flask app = Flask(__name__) ``` 2. 创建数据库 ```python from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///bbs.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) ``` 3. 创建数据库模型 ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) password = db.Column(db.String(20), nullable=False) class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) ``` 4. 创建路由和视图函数 ```python @app.route('/') def index(): posts = Post.query.all() return render_template('index.html', posts=posts) @app.route('/post/<int:post_id>') def post(post_id): post = Post.query.get(post_id) return render_template('post.html', post=post) @app.route('/new_post', methods=['GET', 'POST']) def new_post(): if request.method == 'POST': title = request.form['title'] content = request.form['content'] user_id = 1 # 假设当前用户为 id 为 1 的用户 post = Post(title=title, content=content, user_id=user_id) db.session.add(post) db.session.commit() return redirect('/') return render_template('new_post.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username, password=password).first() if user: session['user_id'] = user.id return redirect('/') else: flash('用户名或密码错误') return render_template('login.html') @app.route('/logout') def logout(): session.pop('user_id', None) return redirect('/') ``` 5. 创建 HTML 模板 创建 index.html、post.html、new_post.html、login.html 四个模板文件,并且使用 jinja2 模板引擎渲染数据。 6. 运行应用 ```python if __name__ == '__main__': app.run() ``` 以上就是快速搭建 BBS 论坛的主要步骤,当然在实际应用中还需要考虑更多细节问题,比如用户认证、数据校验、页面美化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值