"The SAS Little Bookl" reading note (Part I)

本文介绍了SAS的基础知识,包括数据集的组织形式,SAS的数据类型,如字符型和数字型,以及缺失值的表示。此外,还讨论了SAS数据集的大小限制和命名规则。文章提到了SAS程序的两大步,即数据步和程序步,并详细解释了数据步的执行顺序。最后,文章阐述了如何设置和查看SAS系统选项,包括四种设定方式及其优先级。
 
SAS 数据集
1.SAS的数据组织形式——数据集
行——记录
列——变量
2.SAS数据类型:字符型和数字型
3.SAS缺失值表示方式
字符型——空格
数字型——小数点
4.SAS数据集的大小
行数——取决于系统的磁盘空间
列数——SAS 9.1 之前,最多32767列;SAS9.1之后,取决于系统的磁盘空间
5.SAS命名规则
SAS名的长度不得超过32个字符;
SAS名以字母或下划线开始;
SAS名中可以字母、数字和下划线;
SAS名不区分字母的大小写。
 
两类SAS程序
1. 数据步 DATA Step
——以DATA 字符开头;
——读入、修改数据集
——创建一个数据集
2. 程序步 PROC Step
——以PROC字符开头
——分析数据集、执行其他高级数据处理功能或打印报表
——产生一定结果或报表
DATA 步的执行顺序
DATA steps execute line by line and observation by observation. In this way, SAS sees only one observation at a time.
 
使用系统选项
用Proc Options 程序步查看适用于本机的系统选项。
四种方式可设定系统选项值
1. 系统管理员创建系统配置文件,SAS每次启动时自动运行一遍此程序。
2. SAS启动时根据系统提示修改配置
3. 在系统选项窗口中修改;
4. 在SAS程序中使用Options 选项。
上述四种方式中,优先级依次提高。但在窗口环境下,3,4两种方法的优先级相同,最新设置的选项有效。
Options 语句
Options语句作为SAS程序的一部分,影响着后面的所有操作。Options 语句比较特殊,既不属于程序步,也不属于数据步,是一个全局语句,可出现在程序的任何地方,但通常是放在程序的开头。如果Options出现在程序步或数据步中,它只对Options后面的其他语句有效。
系统Options 窗口(工具——>选项——>窗口 ,或在快捷命令行键入options+ 回车)
常见的系统选项
名称
含义
默认值
Center| NoCenter
控制数据是居中对齐还是左对齐
Center
Date| NoDate
控制是否在输出页面的最上方打印当天日期
Date
Linesize=n
控制输出行的最大长度
64-256
Number| NoNumber
控制是否输出每页的页码
Number
Orientation=portrait| Landscape
制定打印的方向
 
PageNo=n
设定输出页面的页码起始值
1
PageSize=n
控制输出页面的最大行数
15-32767
RightMargin=n
LeftMargin=n
TopMargin=n
BottomMargin=n
设定页边距
0.00 in
YearCutOff=yyyy
设定起始年份
1920
package book; public class Book { private String name; private String author; private int price; private boolean IsBorrowed; public Book(String name, String author, int price) { this.name = name; this.author = author; this.price = price; } public String getName() { return name; } public boolean isBorrowed() { return IsBorrowed; } public void setBorrowed(boolean borrowed) { this.IsBorrowed = borrowed; } @Override public String toString() { return "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + (IsBorrowed?", 已借出":", 未借出"); } } package book; public class BookList { private Book[] books=new Book[20]; private int userSize; public BookList() { books[0]=new Book("海贼王","尾田荣一郎",17); books[1]=new Book("火影忍者","尾田荣一郎",19); books[2]=new Book("红楼梦","曹雪芹",45); books[3]=new Book("西游记","吴承恩",40); books[4]=new Book("三国演义","罗贯中",37); this.userSize=5; } public int getUserSize() { return userSize; } public void setUserSize(int userSize) { this.userSize = userSize; } public boolean isFull(){ if(this.userSize==books.length){ return true; }else{ return false; } } public Book getBook(int pos){ return books[pos]; } public void setBook(int pos,Book book){ books[pos]=book; } } public interface IOperation { void work(BookList bookList); } public class FindOperatino implements IOperation{ @Override public void work(BookList bookList) { System.out.println("查找图书………………"); System.out.println("请输入你要查找的书名:"); Scanner in =new Scanner(System.in); String bookname=in.nextLine(); int Size= bookList.getUserSize(); for(int i=0;i<Size;i++){ Book book=bookList.getBook(i); if(book.getName().equals(bookname)){ System.out.println("找到了这本书:"); System.out.println(book); return; } } System.out.println("没有你要找的书!"); } } public class BorrowedOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println("借阅图书………………"); System.out.println("请输入你要借阅的书名:"); Scanner in =new Scanner(System.in); String bookname=in.nextLine(); int Size= bookList.getUserSize(); for(int i=0;i<Size;i++){ Book book=bookList.getBook(i); if(book.getName().equals(bookname)){ System.out.println("借阅成功!"); book.setBorrowed(true); //System.out.println(book); return; } } System.out.println("没有你要借阅的书!"); } } public class ReturnOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println("归还图书………………"); System.out.println("请输入你要归还的图书:"); Scanner in =new Scanner(System.in); String bookname=in.nextLine(); int Size= bookList.getUserSize(); for(int i=0;i<Size;i++){ Book book=bookList.getBook(i); if(book.getName().equals(bookname)&&book.isBorrowed()){ System.out.println("归还成功!"); book.setBorrowed(false); //System.out.println(book); return; } } System.out.println("没有你要归还的书!"); } } public class AddOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println("新增图书………………"); Scanner in=new Scanner(System.in); if(bookList.isFull()){ System.out.println("书架满了,无法新增图书了!"); return; } System.out.println("请输入图书的名称:"); String name=in.nextLine(); System.out.println("请输入图书的作者:"); String author=in.nextLine(); System.out.println("请输入图书的价格:"); int price=in.nextInt(); Book book=new Book(name,author,price); int pos= bookList.getUserSize(); bookList.setBook(pos,book); bookList.setUserSize(pos+1); } } public class DeleteOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println("删除图书………………"); System.out.println("请输入你要删除的图书:"); Scanner in =new Scanner(System.in); String bookname=in.nextLine(); int Size= bookList.getUserSize(); for(int i=0;i<Size;i++){ Book book=bookList.getBook(i); if(book.getName().equals(bookname)){ for(int j=i;j<Size;j++){ Book bookl=bookList.getBook(j+1); bookList.setBook(j,bookl); } bookList.setUserSize(Size-1); System.out.println("删除成功!"); //System.out.println(book); return; } } System.out.println("没有你要删除的书!"); } } public class ShowOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println("显示图书………………"); int Size= bookList.getUserSize(); for(int i=0;i<Size;i++){ Book book=bookList.getBook(i); System.out.println(book); } } } public class ExitOperation implements IOperation { @Override public void work(BookList bookList) { System.out.println("退出图书..."); // 遍历置为 null for (int i = 0; i <20 ; i++) { bookList.setBook(i,null); } System.out.println("图书系统正在退出中..."); // 系统退出 System.exit(-1); } } super(name); this.iOperations=new IOperation[]{ new ExitOperation(), new FindOperatino(), new AddOperation(), new DeleteOperation(), new ShowOperation() }; abstract public class User { protected String name; protected IOperation[] iOperations; public User(String name) { this.name = name; } public void doIoperation(int choice, BookList bookList){ this.iOperations[choice].work(bookList); } public abstract int menu(); } public class AdminUser extends User { public AdminUser(String name) { super(name); this.iOperations=new IOperation[]{ new ExitOperation(), new FindOperatino(), new AddOperation(), new DeleteOperation(), new ShowOperation() }; } public int menu(){ System.out.println("*********管理员菜单*********"); System.out.println("1.查找图书"); System.out.println("2.新增图书"); System.out.println("3.删除图书"); System.out.println("4.显示图书"); System.out.println("0.退出系统"); System.out.println("**************************"); System.out.println("请输入你的操作:"); Scanner in=new Scanner(System.in); int choice=in.nextInt(); return choice; } } public class NormalUser extends User{ public NormalUser(String name) { super(name); this.iOperations=new IOperation[]{ new ExitOperation(), new FindOperatino(), new BorrowedOperation(), new ReturnOperation() }; } public int menu(){ System.out.println("*********普通用户菜单*******"); System.out.println("1.查找图书"); System.out.println("2.借阅图书"); System.out.println("3.归还图书"); System.out.println("0.退出系统"); System.out.println("**************************"); System.out.println("请输入你的操作:"); Scanner in=new Scanner(System.in); int choice=in.nextInt(); return choice; } } public class Main { public static User login(){ Scanner in =new Scanner(System.in); System.out.println("欢迎来到图书管理系统"); System.out.println("请输入你的名字:"); String name=in.nextLine(); System.out.println("请输入你的身份:"); String identity=in.nextLine(); if(identity.equals("管理员")){ AdminUser adminUser=new AdminUser(name); return adminUser; }else{ NormalUser normalUser=new NormalUser(name); return normalUser; } } public static void main(String[] args) { BookList bookList=new BookList(); User user=login(); while(true){ int choice=user.menu(); user.doIoperation(choice,bookList); } } }
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值