//javafx用jdk8版本
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.PasswordField;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Slider;
import javafx.scene.control.TextArea;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.paint.Color;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.control.Button;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import java.io.*;
import java.util.Scanner;
import javafx.scene.control.MenuItem;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
public class Java extends Application
{private Label lab1=new Label("欢迎进入通讯录系统");private Label lab2=new Label("用户:");private Label lab3=new Label("密码:");private Label lab4=new Label("忘记密码?");private Button lab5=new Button("注册账号");private TextField tf=new TextField();private PasswordField pf=new PasswordField();private Button buttonlogin=new Button("登录");private CheckBox chk1=new CheckBox("自动登录");private CheckBox chk2=new CheckBox("记住密码");public Stage stage;@Overridepublic void start(Stage stage){StackPane spane=new StackPane();spane.getChildren().add(lab1);spane.setStyle("-fx-background-color:#05FBEF");spane.setAlignment(lab1,Pos.CENTER);spane.setPadding(new Insets(50));lab1.setTextFill(Color.RED);GridPane gpane=new GridPane();gpane.setVgap(5);gpane.setHgap(5);chk2.setTooltip(new Tooltip("忘记密码"));lab5.setTooltip(new Tooltip("注册账号"));lab1.setStyle("-fx-font-weight:20");lab5.setStyle("-fx-border:none");tf.setPromptText("电话/邮箱/证件号码");pf.setPromptText("输入密码");gpane.setPadding(new Insets(50));gpane.add(lab2, 0, 0);gpane.add(tf, 1, 0);gpane.add(lab3, 0, 2);gpane.add(pf, 1, 2);gpane.add(chk1, 0, 4);gpane.add(chk2, 1, 4);gpane.add(lab4, 2, 4);buttonlogin.setPrefWidth(200);buttonlogin.setPrefHeight(35);buttonlogin.setTextFill(Color.WHITE);buttonlogin.setStyle("-fx-background-color:red");gpane.add(buttonlogin, 1, 6);BorderPane bpane=new BorderPane();bpane.setTop(spane);lab5.setStyle("-fx-margin-left:30");bpane.setCenter(gpane);lab5.setTranslateX(40);lab4.setTranslateX(-80);chk2.setTranslateX(10);bpane.setBottom(lab5);Button relogin=new Button("返回登录");lab5.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){Button bu=new Button("注册");bu.setPrefWidth(200);bu.setPrefHeight(35);bu.setTextFill(Color.WHITE);bu.setStyle("-fx-background-color:red");GridPane Lgpane=new GridPane();Lgpane.setPadding(new Insets(50));Lgpane.setVgap(10);Lgpane.setHgap(5);;Lgpane.add(lab2, 0, 0);Lgpane.add(tf, 1, 0);Lgpane.add(lab3, 0, 1);Lgpane.add(pf, 1, 1);Lgpane.add(bu, 1, 2);Lgpane.add(relogin, 2, 2);BorderPane bp=new BorderPane();bp.setTop(spane);bp.setCenter(Lgpane);bu.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){if(tf.getText()!=null){Tip t=new Tip();t.start(stage);try {FileWriter fw=new FileWriter("C:\\Java文件流\\users.txt",true);String str1="用户:",str2="密码:";str1+=tf.getText();str2+=pf.getText();fw.write(str1+"\n");fw.write(str2+"\n");fw.close();} catch (IOException e1) {e1.printStackTrace();}}else{Error err=new Error();err.start(stage);}}});Scene scene=new Scene(bp,500,400);stage.setTitle("注册账号");stage.setScene(scene);stage.show();}});relogin.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){Scene scene=new Scene(bpane,500,400);stage.setScene(scene);stage.show();}});buttonlogin.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){char[]c=new char[500];try(FileReader fr=new FileReader("C:/Java文件流/users.txt");){int num=fr.read(c);int tstart = 0,tend=0,pstart=0,pend=0;String strtf,strpf;String str=new String(c,0,num);tstart=str.indexOf(tf.getText());tend=tf.getText().length();pstart=str.indexOf(pf.getText());pend=pf.getText().length();strtf=str.substring(tstart,tend);strpf=str.substring(pstart,pend);if(tf.getText().equals(strtf)&&pf.getText().equals(strpf)){AdressBook ab=new AdressBook();ab.start(stage);}else {Error error=new Error();error.start(stage);}} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});Scene scene=new Scene(bpane,500,400);stage.setTitle("登录");stage.setScene(scene);stage.show();}
}
class Tip extends Application
{@Overridepublic void start(Stage stage){BorderPane bp=new BorderPane();Button button=new Button("确定");bp.setCenter(button);bp.setPadding(new Insets(50));Scene scene=new Scene(bp,300,100);stage.setTitle("注册成功");stage.setScene(scene);stage.show();button.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){stage.close();}});}
}
class Error extends Application
{@Overridepublic void start(Stage stage){BorderPane bp=new BorderPane();Button button=new Button("确定");Label lab=new Label("用户或密码错误");bp.setCenter(button);bp.setTop(lab);bp.setPadding(new Insets(50));Scene scene=new Scene(bp,300,100);stage.setTitle("错误");stage.setScene(scene);stage.show();button.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){stage.close();}});}
}
class AdressBook extends Application
{private EventHandler<ActionEvent> operationHandler;@Overridepublic void start(Stage stage){MenuBar menub=new MenuBar();StackPane spane=new StackPane();TextArea ta=new TextArea();BorderPane rootbp=new BorderPane();Menu file=new Menu("文件");MenuItem open=new MenuItem("打开");MenuItem save=new MenuItem("保存");MenuItem newm=new MenuItem("新建");MenuItem exit=new MenuItem("退出");EventHandler<ActionEvent > MEHandler=new EventHandler<ActionEvent>(){public void handle(ActionEvent ae){String name=((MenuItem)ae.getTarget()).getText();if(name.equals("退出"))Platform.exit();if(name.equals("打开")) {FileChooser fc=new FileChooser();fc.setTitle("文件选择对话框");fc.setInitialDirectory(new File("C:/Java文件流"));//设置将当前目录作为初始显示目录FileChooser.ExtensionFilter filter=new FileChooser.ExtensionFilter("所有.txt文件件","*.txt");fc.getExtensionFilters().add(filter);File file=fc.showOpenDialog(stage);//创建文件打开选择对话框if(file!=null){try {Scanner reader=new Scanner(file);String info="";while(reader.hasNext()) {String str=reader.nextLine();info+=str+"\r\n";}ta.setText(info);}catch(FileNotFoundException ioe) {};}else {ta.setText("没有选择文件");}}else if(name.equals("保存")){FileChooser fc=new FileChooser();fc.setTitle("文件保存对话框");fc.setInitialDirectory(new File("C:/Java文件流"));FileChooser.ExtensionFilter filter=new FileChooser.ExtensionFilter(".txt", "*.txt");fc.getExtensionFilters().add(filter);//设置文件过滤器File file=fc.showSaveDialog(stage);if(file!=null) {try {FileOutputStream f=new FileOutputStream(file);BufferedOutputStream out=new BufferedOutputStream(f);byte[]b=(ta.getText()).getBytes();//将ta内容转换成字节存入数组b中out.write(b,0,b.length);//将数组b内容写入流out对应的文件中out.close();}catch(IOException ioe) {};}}else if(name.equals("新建")){ta.setText("");}}};exit.setOnAction(MEHandler);newm.setOnAction(MEHandler);open.setOnAction(MEHandler);save.setOnAction(MEHandler);file.getItems().addAll(newm,open,save,exit);Menu operation=new Menu("操作");MenuItem add=new MenuItem("添加好友");MenuItem del=new MenuItem("删除好友");MenuItem alter=new MenuItem("修改信息");MenuItem find=new MenuItem("查找好友");operation.getItems().addAll(add,del,alter,find);menub.getMenus().addAll(file,operation);ta.setPrefHeight(400);ta.setPrefWidth(500);spane.setPrefHeight(100);spane.setPadding(new Insets(30));GridPane gpane=new GridPane();Label lab1=new Label("姓名:");Button bt=new Button("确定");TextField tf=new TextField();tf.setPromptText("姓名");bt.setOnAction(e->{ta.setText("姓名:"+tf.getText());});ToggleGroup tg=new ToggleGroup();HBox hb=new HBox(10);VBox vb1=new VBox(10);VBox vb2=new VBox(10);VBox vb3=new VBox(10);vb2.setTranslateX(-70);vb3.setTranslateX(-20);Label lab2=new Label("性别:");RadioButton boy=new RadioButton("男");boy.setOnAction(e->{ta.setText(ta.getText()+'\n'+"性别:"+boy.getText());});RadioButton girl=new RadioButton("女");girl.setOnAction(e->{ta.setText(ta.getText()+'\n'+"性别:"+girl.getText());});hb.getChildren().addAll(boy,girl);boy.setToggleGroup(tg);girl.setToggleGroup(tg);Label lab3=new Label("爱好:");CheckBox cb1=new CheckBox("球类运动");CheckBox cb2=new CheckBox("文学阅读");CheckBox cb3=new CheckBox("文学创造");CheckBox cb4=new CheckBox("听音乐");CheckBox cb5=new CheckBox("看电影");CheckBox cb6=new CheckBox("绘画");CheckBox cb7=new CheckBox("舞蹈");CheckBox cb8=new CheckBox("冒险");CheckBox cb9=new CheckBox("收藏");CheckBox cb10=new CheckBox("网络游戏");CheckBox cb11=new CheckBox("喝茶");CheckBox cb12=new CheckBox("探索");cb1.setOnAction(e->{ta.setText(ta.getText()+'\n'+"兴趣爱好:"+cb1.getText()+"、");});cb2.setOnAction(e->{ta.setText(ta.getText()+cb2.getText()+"、");});cb3.setOnAction(e->{ta.setText(ta.getText()+cb3.getText()+"、");});cb4.setOnAction(e->{ta.setText(ta.getText()+cb4.getText()+"、");});cb5.setOnAction(e->{ta.setText(ta.getText()+cb5.getText()+"、");});cb6.setOnAction(e->{ta.setText(ta.getText()+cb6.getText()+"、");});cb7.setOnAction(e->{ta.setText(ta.getText()+cb7.getText()+"、");});cb8.setOnAction(e->{ta.setText(ta.getText()+cb8.getText()+"、");});cb9.setOnAction(e->{ta.setText(ta.getText()+cb9.getText()+"、");});cb10.setOnAction(e->{ta.setText(ta.getText()+cb10.getText()+"、");});cb11.setOnAction(e->{ta.setText(ta.getText()+cb11.getText()+"、");});cb12.setOnAction(e->{ta.setText(ta.getText()+cb12.getText()+"、");});vb1.getChildren().addAll(cb1,cb2,cb3,cb4);vb2.getChildren().addAll(cb5,cb6,cb7,cb8);vb3.getChildren().addAll(cb9,cb10,cb11,cb12);Label lab4=new Label("现居住城市:");ComboBox<String>cbo=new ComboBox<String>();String[] city= {"北京市","上海市","广州市   ","深圳市","天津市","成都市","杭州市","苏州市","重庆市","武汉市","南京市","大连市","沈阳市","长沙市","郑州市","西安市","青岛市","无锡市","无锡市","宁波市","佛山市","南通市","哈尔滨市","东莞市","福州市","长春市","石家庄市","烟台市","合肥市","唐山市","常州市","太原市","昆明市","潍坊市","南昌市","泉州市","温州市","绍兴市","嘉兴市","厦门市","贵阳市","淄博市","徐州市","扬州市","呼和浩特市","鄂尔多斯市","乌鲁木齐市","金华市","   台州市","镇江市","威海市","珠海市","东营市","大庆市","中山市","盐城市","包头市","    保定市","济宁市","兰州市"};ObservableList<String>items=FXCollections.observableArrayList(city);cbo.getItems().addAll(items);cbo.setPrefWidth(100);cbo.setValue("北京市");cbo.setOnAction(e->{ta.setText(ta.getText()+'\n'+"现居住城市:"+cbo.getValue());});Slider slider=new Slider();slider.setMin(1);slider.setMax(50);slider.setShowTickLabels(true);slider.setShowTickMarks(true);Label lab5=new Label("年龄:");Text t=new Text("0");slider.valueProperty().addListener(ov->{double value=slider.getValue();int valu=(int)value;String strs=String.valueOf(valu);t.setText(strs);});Button butt=new Button("确定");butt.setTranslateX(-50);butt.setOnAction(e->{ta.setText(ta.getText()+'\n'+"年龄:"+t.getText());});slider.setPrefWidth(100);HBox hb1=new HBox(10);hb1.getChildren().addAll(slider,t);GridPane gp=new GridPane();gp.setVgap(10);gp.add(lab1, 0, 0);gp.add(tf, 1, 0);gp.add(bt, 2, 0);gp.add(lab2, 0, 1);gp.add(hb, 1, 1);gp.add(lab5, 0, 2);gp.add(hb1, 1, 2);gp.add(butt, 2, 2);gp.add(lab4, 0, 3);gp.add(cbo, 1, 3);gp.add(lab3, 0, 4);gp.add(vb1, 1, 5);gp.add(vb2, 2, 5);gp.add(vb3, 3, 5);rootbp.setTop(menub);spane.getChildren().add(gp);rootbp.setCenter(spane);rootbp.setBottom(ta);add.setOnAction(e->{spane.getChildren().add(gp);rootbp.setCenter(spane);rootbp.setBottom(ta);Scene scene=new Scene(rootbp,500,700);stage.setScene(scene);stage.show();});del.setOnAction(e->{StackPane sp=new StackPane();Label labname=new Label("姓名:");TextField textf=new TextField();textf.setPromptText("请输入您要删除的好友的姓名");Button but=new Button("搜索");Button bdel=new Button("删除");bdel.setTranslateX(-40);bdel.setPrefWidth(200);HBox hbdel=new HBox(10);hbdel.getChildren().addAll(labname,textf,but);BorderPane b=new BorderPane();b.setPadding(new Insets(50));b.setTop(hbdel);b.setCenter(bdel);sp.getChildren().add(b);rootbp.setCenter(sp);but.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){char[]c=new char[500];try(FileReader fr=new FileReader("C:/Java文件流/friends.txt");){int num=fr.read(c),i,end=0;char[] cha=new char[num];String str=new String(c,0,num);String s=textf.getText();for(i=0;i<num;i++)cha[i]=str.charAt(i);int intIndex = str.indexOf(s);for(i=intIndex;i<num;i++) {if(cha[i]=='姓') {end=i;break;}}String St=str.substring(intIndex-3,end-1);ta.setText(St);try {String str3=str.substring(0,intIndex-3);String str4=str.substring(end-1,num);str=str3+str4;FileWriter fw=new FileWriter("C:\\Java文件流\\users.txt",true);fw.write(str);fw.close();} catch (IOException e1) {e1.printStackTrace();}} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});bdel.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){ta.setText("");}});Scene scene1=new Scene(rootbp,500,700);stage.setScene(scene1);stage.show();});find.setOnAction(e->{StackPane sp=new StackPane();Label labname=new Label("姓名:");TextField textf=new TextField();textf.setPromptText("请输入您要查询的好友的姓名");Button bdel=new Button("查询");bdel.setTranslateX(-40);bdel.setPrefWidth(200);HBox hbdel=new HBox(10);hbdel.getChildren().addAll(labname,textf);BorderPane b=new BorderPane();b.setPadding(new Insets(50));b.setTop(hbdel);b.setCenter(bdel);sp.getChildren().add(b);rootbp.setCenter(sp);bdel.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){char[]c=new char[500];try(FileReader fr=new FileReader("C:/Java文件流/friends.txt");){int num=fr.read(c),i,end=0;char[] cha=new char[num];String str=new String(c,0,num);String s=textf.getText();for(i=0;i<num;i++)cha[i]=str.charAt(i);int intIndex = str.indexOf(s);for(i=intIndex;i<num;i++) {if(cha[i]=='姓') {end=i;break;}}String St=str.substring(intIndex-3,end-1);ta.setText(St);} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});Scene scene1=new Scene(rootbp,500,700);stage.setScene(scene1);stage.show();});alter.setOnAction(e->{StackPane sp=new StackPane();Label labname=new Label("姓名:");TextField textf=new TextField();textf.setPromptText("请输入您要修改的好友的姓名");Button but=new Button("搜索");Button bdel=new Button("保存");bdel.setTranslateX(-40);bdel.setPrefWidth(200);HBox hbdel=new HBox(10);hbdel.getChildren().addAll(labname,textf,but);BorderPane b=new BorderPane();b.setPadding(new Insets(50));b.setTop(hbdel);b.setCenter(bdel);sp.getChildren().add(b);rootbp.setCenter(sp);but.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e){char[]c=new char[500];try(FileReader fr=new FileReader("C:/Java文件流/friends.txt");){int num=fr.read(c),i,end=0;char[] cha=new char[num];String str=new String(c,0,num);String s=textf.getText();for(i=0;i<num;i++)cha[i]=str.charAt(i);int intIndex = str.indexOf(s);for(i=intIndex;i<num;i++) {if(cha[i]=='姓') {end=i;break;}}String St=str.substring(intIndex-3,end-1);ta.setText(St);try {String str3=str.substring(0,intIndex-3);String str4=str.substring(end-1,num);String str5=ta.getText();str=str3+str5+str4;FileWriter fw=new FileWriter("C:\\Java文件流\\users.txt",true);fw.write(str);fw.close();} catch (IOException e1) {e1.printStackTrace();}} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});Scene scene1=new Scene(rootbp,500,700);stage.setScene(scene1);stage.show();});Scene scene=new Scene(rootbp,500,700);stage.setTitle("通讯录");stage.setScene(scene);stage.show();}
}

使用前需先登录,登录成功后方可使用,登录用户名和密码保存在一个文本文件中,可添加好友,好友信息包括:姓名、性别。输入姓名,点击查询,将给好友信息进行显年龄、爱好、现居住城市,点击保存将信息保存到文件相关推荐

  1. 请问android直接post请求登录地址成功后,webview还是现实登录界面

    ============问题描述============ 之前登录是这样做的: webview.loadUrl(调js登录的方法),  这个js方法其实也就是post请求一个登录地址 现在我直接做一个 ...

  2. FTP登录服务器成功后,如果切换为被动模式,提示:227 Entering Passive Mode

    FTP登录服务器成功后,如果切换为被动模式,返回的提示语含义? 227 Entering Passive Mode (10,199,75,133,214,27) 那么后面的,214,27它是如何计算的 ...

  3. 单击“登录”后,用户名和密码显示在地址栏中,不安全

    单击"登录"后,用户名和密码显示在地址栏中,不安全 问题现象 单击登录按钮,浏览器地址栏中显示了登录名和密码,存在密码泄漏的风险. 原因分析 Html表单提交采用的是get方法,g ...

  4. 获取已经登录的docker镜像仓库地址、用户名、密码

    获取已经登录的docker镜像仓库地址.用户名.密码 1.查看存储凭证: cat /root/.docker/config.json 返回信息: {"auths": {" ...

  5. c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...

    题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...

  6. java项目(注册和登录(成功后查看商品的信息))

    文章目录 声明 第一步: 第二步: 第三步: 第四步: 第五步 第六步: 第七步: 声明 题目:实现登录和注册功能 登录成功后可以查看所有商品的信息(商品名称,价格,销量) 第一步: package ...

  7. 支付宝支付成功后要重新登录问题解决小记

    问题: 项目A使用项目B的支付宝配置信息,支付成功后,进入到了回调地址中,回调地址中的业务处理代码页执行成功,但是在跳转到商户页面时,跳转到非指定页面(如登录页面)或跳转到指定页面但是要求登录. 原因 ...

  8. Vue中登录验证成功后保存token,并每次请求携带并验证token操作

    在vue中,可以用sessionStorage或localStorage来存储token,也可以用vuex来存储(但要考虑页面刷新数据消失问题,可以在vuex用Storage),下面介绍用localS ...

  9. 用php写登录成功后的界面,登录成功后跳转_php如何实现登录成功后跳转页面

    摘要 腾兴网为您分享:php如何实现登录成功后跳转页面,指南针,优软商城,优美图,天天美剧等软件知识,以及蓝光mp3剪切器,微信6,scandallpro,新页生产管理软件,asmr音频,lc标签打印 ...

最新文章

  1. 父亲和女儿同为互联网大佬, 但不幸都得癌症
  2. SqlServer中存储过程中将Exec的执行结果赋值给变量输出
  3. JCO与bapi的联合使用
  4. Linux监控平台搭建( zabbix监控)
  5. POJ 3974 Palindrome (算竞进阶习题)
  6. c语言编程 验证用户名和密码是否正确(函数定义),《C语言程序设计教程》习题参考答案[精品资料].doc...
  7. 一、express 路由 todos案例
  8. Trade Stages - The Trade Path
  9. 阿里云推出业内首个云原生企业级数据湖解决方案:将在今年双11大规模应用
  10. MySQL 数据库误删除后的数据恢复操作说明
  11. PHP 生成csv的遇到的分隔符问题
  12. 二十六. Python基础(26)--类的内置特殊属性和方法
  13. html中treegrid不显示根节点,treegrid如何让子节点默认不展开
  14. 2021年压力焊工作业考试题库
  15. 三星 9810 android 9,【极光ROM】-【三星NOTE9 N960X-9810】-【V19.0 Android-Q-TF5-OneUI2.1】...
  16. 在计算机检索中常用的中文数据库,国内三种常用中文数据库检索功能比较研究.doc...
  17. 机械臂模糊PID控制matlab仿真
  18. 长江下游水位退至23年来最低点
  19. 数据结构-二分查找(含全部代码)
  20. 软件测试周刊(第69期):说出观点需要勇气,说好笑则需求智慧。

热门文章

  1. Android APP完整基础教程(13)应用资源-动画
  2. 立体影像对观察量测平台(一)
  3. Python Enclosing作用域、闭包、装饰器话聊(转)
  4. 股票入门——K线理论之二
  5. 一台显示器分成双屏_2020年双屏环境打造攻略
  6. ShowWebGL 强大的3D模型查看器
  7. [展览人周刊]华展云20170724期
  8. 牛客 NC15108 道路建设
  9. 计算机科学杂志 刊号,jcst(计算机科学期刊)
  10. 魔兽世界宏命令完全指南