北大青鸟:源代码清单
源代码清单

本资料由-大学生创业|创业|创业网/提供资料
<项目名称>
源代码清单
版本:<1.0>
文档编号:密级:秘密
编写:编写日期:
审核:审核日期:
批准:批准日期:年月日
Copyright @, All right reserved
修订记录
目录
0.介绍 (1)
0.1 目的 (1)
0.2 范围 (1)
0.3 读者对象 (1)
0.4 参考文献 (1)
0.5 术语与缩写解释 (1)
1、系统目录结构 (1)
2、代码清单 (1)
本资料由-大学生创业|创业|创业网/提供资料0.介绍
0.1 目的
0.2 范围
0.3 读者对象
0.4 参考文献
0.5 术语与缩写解释
1、系统目录结构
提示:说明系统目录结构与功能模块间的关系
2、代码清单
提示:按功能模块划分,列出源代码文件名称:。
北大青鸟第一单元超市收银管理系统

包结构四个包,九个类,一个资源文件客户端类package com.supermarket.Client;/*** 客户端界面*/import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Scanner;import com.supermarket.Tools.Datas;import com.supermarket.Tools.SysConstans;import com.supermarket.entity.Goods;public class Client {//定义扫描器,用于键盘输入public static Scanner input=new Scanner(System.in);//创建客户端业务类对象,调用方法public static ClientB cb=new ClientB();public static void main(String[] args) {do{System.out.println("***********欢迎使用青鸟超市系统*************");System.out.println("1.登录"+"\n2.退出");System.out.println("***********请选择1/2*************");String choice=input.next();if(choice.equals("1")){//登录视图createLoginView();break;}else if(choice.equals("2")){//退出System.exit(0);}else{//输入有误,报错System.out.println("无此选项!");}}while(true);System.out.println("***********谢谢使用青鸟超市系统*************");}/*** 登录视图* 通过输入的用户名与密码验证用户身份,管理员则进入管理界面,收银员则进入收银界面,都不是则提示错误,并重新进行输入*/public static void createLoginView(){do {//提示登录信息System.out.println("请输入用户名:");String name = input.next();System.out.println("请输入密码:");String password = input.next();//调用客户端登录方法,接收返回值,判断登录者的身份Datas datas = cb.doLogin(name, password);//判断是管理员还是收银员if (datas.getFlag().equals(SysConstans.SYS_ADMIN)) {createAdminView();break;} else if(datas.getFlag().equals(SysConstans.SYS_CASHIER)) {createCashierView();break;} else {System.out.println("用户名或密码有误,请重新输入");}} while (true);}/*** 管理员菜单* 实现管理员功能:* 1.商品入库2.商品出库3.新增商品4.查询全部商品 5.按编号查询商品6.退出*/private static void createAdminView() {//循环操作// 管理员菜单System.out.println("管理员登录成功,进入管理员界面");do{System.out.println("***********欢迎进入青鸟超市库存管理系统*************");System.out.println("1.商品入库\t2.商品出库\t3.新增商品\t4.查询全部商品\t5.按序号查询商品\t6.退出");//提示用户选择System.out.println("请输入您的选择");int choice=input.nextInt();switch(choice){//商品入库,调入库方法case 1://提示输入要入库的编号System.out.println("请输入入库商品编号:");//定义变量接收输入的编号String goodnum=input.next();//调用方法判断库存中是否有要入库的商品if(cb.Find(goodnum).getFlag().equals(SysConstans.SYS_S UCCESS)){System.out.println("请输入入库数量:");int count=input.nextInt();if(count>=0){Datas datas=cb.RuKu(goodnum,count);if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){System.out.println("入库成功!");showList(cb.FindAll());}}else{System.out.println("入库数量必须大于0");}}else{System.out.println("无此商品,请选择3新增");}break;//商品出库,调出库方法case 2:do{ //提示输入出库商品编号System.out.println("请选择出库商品编号:");//定义变量接收编号String goodid=input.next();//先查询是否由此商品if(cb.Find(goodid).getFlag().equals(SysConstans.SYS_SU CCESS)){//提示输入出库数量System.out.println("请输入出库数量:");int count=input.nextInt();if(count>0){Datas datas=cb.ChuKu(goodid,count);if(datas.getFlag().equals(SysConstans.SYS_LACK)){System.out.println("库存不足!");showGood(datas);break;}else{System.out.println("出库成功!");showList(datas);break;}}else{System.out.println("出库数量必须大于0!");}}else{System.out.println("库存中无此商品,请选择3新增");break;}}while(true);break;case 3://新增商品,调新增方法do{ //提示输入新增商品编号System.out.println("请输入新增商品的编号:");String newgoodid=input.next();if(cb.Find(newgoodid).getFlag().equals(SysConstans.SYS _SUCCESS)){System.out.println("商品已存在");break;}else{System.out.println("请输入商品名称:");String name=input.next();System.out.println("请输入商品单价:");double price=input.nextDouble();System.out.println("请输入商品单位:");String unit=input.next();System.out.println("请输入商品数量:");int count=input.nextInt();Goods good=new Goods(newgoodid,(name+"\t"),price,unit,count);//把要新增的商品通过调用方法传给业务类,并接收返回值Datas datas=cb.Add(good);System.out.println("新增商品成功!");//打印商品列表showList(cb.FindAll());break;}}while(true);break;//查询全部商品的方法case 4://查询商品,调用showList方法参数为Datas类型,是FindAll传回来的showList(cb.FindAll());break;//按编号查询商品,调按编号查询方法case 5://提示输入编号System.out.println("请输入要查询的编号:");//定义变量接收输入String id=input.next();//判断库存中是否存在编号为goodid的商品Datas datas=cb.Find(id);//如果存在,调用方法,打印商品if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){showGood(datas);}else{System.out.println("没有此商品");}break;case 6://退出System.out.println("管理员退出成功!");System.exit(0);default ://提示无此选项System.out.println("无此选项,请重新输入:");}}while(true);}/*** 收银员管理界面.* 实现收银员的功能:* 1.扫描商品2.修改购买商品的数量 3.结账 4.退出*///收银员管理界面private static void createCashierView() {//循环操作收银界面while(true){System.out.println("收银员登录成功,进入收银员界面");System.out.println("***********欢迎进入青鸟超市收银管理系统*************");System.out.println("1.扫描商品\t2.修改数量\t3.结账\t4.退出");//提示用户输入操作选项System.out.println("请输入您的选择:");int choice=input.nextInt();switch(choice){case 1://调用扫描方法do{//提示输入扫描编号System.out.println("请输入要扫描的商品编号:");String scannum=input.next();//如果查询到编号,说明商品存在,否则商品不存在if(cb.Find(scannum).getFlag().equals(SysConstans.SYS_S UCCESS)){//如果商品存在,调用扫描的方法Datas datas=cb.scan(scannum);//判断返回的标识if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){System.out.println("扫描成功");showScan(datas);break;}else{System.out.println("扫描失败");// showScan(datas);break;}}else{System.out.println("商品不存在!");break;}}while(true);break;case 2://修改数量的方法//判断购买列表是否为空if(cb.result().getFlag().equals(SysConstans.SYS_ERROR) ){System.out.println("购买列表中还没有购买物品!");continue;}//循环操作数据do{//提示用户输入要修改的编号,并判断购买列表中是否存在此编号System.out.println("请输入要修改的商品编号:");String changeid=input.next();Datas datas=new Datas();//调用方法判断是否存在商品编号if(hasid(changeid)){//存在,提示修改数量System.out.println("请输入修改后的数量");int changenum=input.nextInt();if(changenum>1){datas=cb.ChangeCount(changeid,changenum);if(datas.getFlag().equals(SysConstans.SYS_LACK)){System.out.println("数量不足,请确认!");showGood(cb.Find(changeid));continue;}else{System.out.println("修改成功!");showScan(cb.result());break;}}else{System.out.println("购买数量必须大于0!");break;}}//如果包含,提示修改数量System.out.println("购买列表中无此商品,请核实");continue;}while(true);break;case 3://调用结账方法creatOver();break;case 4://退出System.out.println("收银员退出系统成功!");System.exit(0);default://错误提示System.out.println("输入有问题,请重新输入:");}}}/*** 打印商品列表的方法,参数是Datas类型,无返回值* 通过调用客户端业务类的方法得到返回值,打印商品列表* @param datas*///打印商品列表private static void showList(Datas datas){System.out.println("------------------------------------------------------------------------------------------------");System.out.println("商品编号\t\t商品名称\t\t\t\t商品单价\t\t单位\t\t数量");for(Goods good:datas.getGoodslist()){System.out.println(good.getGoodid()+"\t\t"+good.getGoo dname()+"\t\t"+good.getGoodprice()+"\t\t"+good.getGooduni t()+"\t\t"+good.getGoodcount());}System.out.println("------------------------------------------------------------------------------------------------");}/*** 按编号查询商品的方法.得到返回值,直接打印返回值中的商品* @param datas*///打印单个商品private static void showGood(Datas datas){System.out.println("------------------------------------------------------------------------------------------------");System.out.println("商品编号\t\t商品名称\t\t\t\t商品单价\t\t单位\t\t数量");System.out.println(datas.getGood().getGoodid()+"\t\t"+ datas.getGood().getGoodname()+"\t\t"+datas.getGood().getGoodprice()+"\t\t"+datas.getGood() .getGoodunit()+"\t\t"+datas.getGood().getGoodcount());System.out.println("------------------------------------------------------------------------------------------------");}/*** 收银员菜单中的扫描商品的方法后打印扫描商品列表的方法** @param datas*///打印扫描商品列表private static void showScan(Datas datas){if(datas.getFlag().equals(SysConstans.SYS_SUCCESS)){ //定义列表接收扫描后的购买列表ArrayList<Goods> scanlist=datas.getBuylist();//输出商品列表System.out.println("商品编号\t商品名称\t\t\t\t数量\t\t单价\t\t金额");System.out.println("------------------------------------------------------------------------------------------------");for(Goods good:scanlist){System.out.println(good.getGoodid()+"\t"+good.getGoodn ame()+"\t\t"+good.getGoodcount()+"\t\t"+good.getGoodprice ()+"\t\t"+(good.getGoodprice()*good.getGoodcount()));}System.out.println("------------------------------------------------------------------------------------------------");}}/*** 查询购买列表中是否存在要修改数量的商品* 参数为商品编号,如果存在,返回true.不存在则返回false* @param id* @return*///查询购买列表中是否存在要修改数量商品的编号private static boolean hasid(String id){Datas datas=new Datas();datas.setBuylist(cb.result().getBuylist());for(Goods good:datas.getBuylist()){if(good.getGoodid().equals(id)){return true;}}return false;}/*** 结账方法,分为普通结账和会员结账* 普通结账和会员结账,分别调用普通结账方法和会员结账方法*///结账方法private static void creatOver() {//首先打印购买列表,算出总金额.调用普通结账,或vip结账double money=sum(cb.result());// System.out.println("您的消费金额是:"+money);//提示选择结账方法if(money!=0){System.out.println("请选择结账方法:");System.out.println("1.普通结账\t2.会员结账");int choice=input.nextInt();if(choice==1){//普通会员结账方法System.out.println("您的消费金额是:"+money);do{System.out.println("请输入金额:");int pay=input.nextInt();if(pay<0){System.out.println("请输入正确金额!");}else if(pay<money){System.out.println("金额不足,请确认!");}else if(pay>=money){// System.out.println();//结账成功.调用结账方法,打印小票,并跳出结账.Over(money, pay);break;}else{System.out.println("请输入正确格式:");}}while(true);}else if(choice==2){//vip会员结账方法,会员卡号2011.System.out.println("您的消费金额是:"+money);System.out.print("请输入您的会员卡号:");do{int vip = input.nextInt();if(vip==2013){System.out.print("会员卡号正确,请输入您要支付的金额:");int vippay=input.nextInt();if(vippay>0){if(vippay>money){//金额足够时调用vip结账方法VipOver(money, vippay);break;}else{System.out.println("付款金额不足");}}else{System.out.println("付款金额必须大于0!");}}else{System.out.println("您的会员卡号不正确:");}}while(true);}else{System.out.println("无此结账方法");}}else {System.out.println("您还没有扫描商品");}}/*** 结账时用到的计算购买金额的方法,如果buylist不为空,则返回购买金额.否则返回0.** @param result* @return*///算出购买总金额的方法private static double sum(Datas result){//首先判断购买列表是否为空,不为空则算出购买金额if(cb.result().getFlag().equals(SysConstans.SYS_SUCCES S)){ArrayList <Goods> list=cb.result().getBuylist();double sum=0;//购买总额for(int i=0;i<list.size();i++){sum+=list.get(i).getGoodprice()*list.get(i).getGoodcou nt();}return sum;}elsereturn 0;}//计算购买数量的方法private static int sumBuyListCount(Datas result){if(cb.result().getFlag().equals(SysConstans.SYS_SUCCES S)){ArrayList<Goods> list=cb.result().getBuylist();int goodscount=0;for(int i=0;i<list.size();i++){goodscount+=list.get(i).getGoodcount();}return goodscount;}else{return 0;}}/*** 普通结账方法.返回结账视图,并清空购买菜单* @param money* @param pay*///普通用户结账的方法private static void Over(double money,int pay){ //首先打印,小票的表头System.out.println("********************************** ********************************************************* ********");System.out.println("\t\t\t\t青鸟超市");System.out.println("收银员:1001\t小票号:" + ticket());//显示购买列表//显示购买金额和购买的数量,结账提示System.out.println("总数量:" +sumBuyListCount(cb.result())+ "\t\t\t应收: " + money);System.out.println("实收: " + pay + "\t\t找零: " +(pay-money));System.out.println(Date());System.out.println("此小票是您退换货及核对积分的凭证,请妥善保存!");System.out.println("********************************** ********************************************************* ********");//购买列表清空cb.clear();}/*** Vip会员结账方法.返回结账视图,累计会员积分,并清空购买菜单* @param money* @param pay*///vip用户结账方法private static void VipOver(double money,int vippay){ //首先打印,小票的表头System.out.println("********************************** ********************************************************* ********");System.out.println("\t\t\t\t青鸟超市");System.out.println("收银员:1001\t小票号:" + ticket());//显示购买列表//显示购买金额和购买的数量,结账提示System.out.println("总数量:"+sumBuyListCount(cb.result()) + "\t\t\t应收: " + money);System.out.println("实收: " + vippay + "\t\t找零: " + (vippay-money));//Vip积分提示System.out.println("本次累计积分成功\t\t卡号:2011");System.out.println("消费前积分 + 本次消费积分 = 消费后积分");System.out.println(2000+"+"+(int)money+"="+(2000+(int) money));System.out.println(Date());System.out.println("此小票是您退换货及核对积分的凭证,请妥善保存!");System.out.println("********************************** ********************************************************* ********");//购买列表清空cb.clear();}/*** 打印购买菜单的方法.*///打印购买列表的方法private static void showbuylist(){ArrayList <Goods> buylist=cb.result().getBuylist();System.out.println("序\t\t商品名称(单位)\t\t\t\t数量\t\t单价\t\t金额");System.out.println("------------------------------------------------------------------------------------------------");for(int i=0;i<buylist.size();i++){System.out.println((i+1)+"\t\t("+buylist.get(i).getGoo did()+")"+buylist.get(i).getGoodname()+buylist.get(i).get Goodunit()+"\t\t\t"+buylist.get(i).getGoodcount()+"\t\t"+ buylist.get(i).getGoodprice()+"\t\t"+buylist.get(i).getGo odcount()*buylist.get(i).getGoodprice());}System.out.println("------------------------------------------------------------------------------------------------");}/*** 得到日期的方法,在结账时显示日期用* @return*///显示日期的方法private static String Date(){Date date=new Date();SimpleDateFormat sdf=newSimpleDateFormat("yyyy/MM/dd/ hh:mm:ss");String paydate= sdf.format(date);return paydate;}/*** 得到小票号的方法.日期+(1-1000)的随机数* @return*///打印票据的方法private static String ticket() {Date date = new Date();SimpleDateFormat sdf = newSimpleDateFormat("yyyyMMddhhmm");String ticket = sdf.format(date) + (int) (Math.random() * 1000);return ticket;}}客户端业务类package com.supermarket.Client;/*** 客户端业务类.* 功能:客户端调用业务类的方法,实现和服务器端的数据交互*/import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import .Socket;import .UnknownHostException;import com.supermarket.Tools.Datas;import com.supermarket.Tools.SysConstans;import com.supermarket.Tools.Tools;import com.supermarket.entity.Goods;import er;public class ClientB {//创建Socket实例Socket socket=null;//创建输入输出流ObjectOutputStream oos=null;ObjectInputStream ois=null;/*** 初始化输入输出流的方法,每次调用方法时都要初始化输入输出流*///初始化流的方法public void initSocket(){try {//socket=new Socket(localhost,8888)socket=newSocket(Tools.getVlaue(SysConstans.SYS_HOSTNAME),Integer.p arseInt(Tools.getVlaue(SysConstans.SYS_LISTENERPORT)));//获得输入输出流oos=newObjectOutputStream(socket.getOutputStream());ois=newObjectInputStream(socket.getInputStream());} catch (NumberFormatException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (UnknownHostException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();}}/*** 关闭输入输出流的方法.* 每次调用方法之后都要关闭输入输出流*/public void closeSocket(){//关闭流的方法try {oos.close();ois.close();socket.close();} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();}}/*** 客户端登录方法.* 接收客户端发送参数,发送到服务器端验证,并接收服务器端返回的数据信息* @param name* @param password* @return*///登录方法public Datas doLogin(String name, String password) { initSocket();User user=new User();user.setUsername(name);user.setPassword(password);Datas datas=new Datas();datas.setFlag(SysConstans.SYS_LOGIN);datas.setUser(user);//写入流try {oos.writeObject(datas);//接收服务器返回值datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) {// TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端查询全部商品的方法* @return*///查询全部商品的方法public Datas FindAll(){initSocket();Datas datas=new Datas();datas.setFlag(SysConstans.SYS_FINDALL);try {oos.writeObject(datas);datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端实现按编号查询商品的方法* 功能:接收编号,到服务器查询,接收返回值* @param goodid* @return*///按编号查询商品的方法public Datas Find(String goodid) {initSocket();Goods good=new Goods();good.setGoodid(goodid);Datas datas=new Datas();datas.setFlag(SysConstans.SYS_FIND);datas.setGood(good);try {oos.writeObject(datas);datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端管理员实现入库商品的方法* @param goodid* @param count* @return*///入库方法public Datas RuKu(String goodid,int count){ initSocket();Goods good=new Goods();good.setGoodid(goodid);good.setGoodcount(count);Datas datas=new Datas();datas.setFlag(SysConstans.SYS_RUKU);datas.setGood(good);try {oos.writeObject(datas);datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端管理员实现商品出库的方法* @param goodid* @param count* @return*/public Datas ChuKu(String goodid, int count) { initSocket();// 接收参数Goods good=new Goods();good.setGoodid(goodid);good.setGoodcount(count);Datas datas=new Datas();datas.setFlag(SysConstans.SYS_CHUKU);datas.setGood(good);try {oos.writeObject(datas);datas =(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) {// TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端管理员实现商品新增的方法* @param good* @return*///新增商品方法public Datas Add(Goods good) {initSocket();Datas datas=new Datas();datas.setFlag(SysConstans.SYS_ADD);datas.setGood(good);try {oos.writeObject(datas);datas=(Datas) ois.readObject();} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端收银员实现扫描商品的方法* @param scannum* @return*///扫描方法public Datas scan(String scannum) { // TODO自动生成的方法存根initSocket();Goods good=new Goods();good.setGoodid(scannum);Datas datas=new Datas();datas.setGood(good);datas.setFlag(SysConstans.SYS_SCAN);try {oos.writeObject(datas);datas =(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端收银员实现结账时返回购买列表的方法* @return*///结账方法.返回购买列表public Datas result(){initSocket();Datas datas=new Datas();datas.setFlag(SysConstans.SYS_RESULT);try {oos.writeObject(datas);datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端收银员实现修改数量的方法* @param changeid* @param changenum* @return*///收银员,修改数量的方法public Datas ChangeCount(String changeid, int changenum) {initSocket();Goods good=new Goods();good.setGoodid(changeid);good.setGoodcount(changenum);Datas datas=new Datas();datas.setFlag(SysConstans.SYS_UPDATA);datas.setGood(good);try {oos.writeObject(datas);datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) {// TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}/*** 客户端收银员实现清空购买列表的方法* @return*/public Datas clear() {// TODO自动生成的方法存根initSocket();Datas datas=new Datas();datas.setFlag(SysConstans.SYS_CLEAR);try {oos.writeObject(datas);datas=(Datas) ois.readObject();return datas;} catch (IOException e) {// TODO自动生成的 catch 块e.printStackTrace();} catch (ClassNotFoundException e) { // TODO自动生成的 catch 块e.printStackTrace();}finally{closeSocket();}return null;}}商品类package com.supermarket.entity;/*** 商品类* 实现序列化* 属性:String goodid商品编号* String goodname商品名称* String goodprice商品单价* String goodunit商品单位* String goodcount商品库存(数量)* 商品属性和Set/Get方法* 有参和无参的构造方法*/import java.io.Serializable;public class Goods implements Serializable {private String goodid;//商品编号private String goodname;//商品名称private double goodprice;//商品单价private String goodunit;//商品单位private int goodcount;//商品数量//商品无参数构造方法public Goods(){}//商品有参数构造方法public Goods(String goodid,String goodname,double goodprice,String goodunit,int goodcount){this.goodid=goodid;this.goodname=goodname;this.goodprice=goodprice;this.goodunit=goodunit;this.goodcount=goodcount;}public String getGoodid() {return goodid;}public void setGoodid(String goodid) {this.goodid = goodid;}public String getGoodname() {return goodname;}public void setGoodname(String goodname) {this.goodname = goodname;}public double getGoodprice() {return goodprice;}public void setGoodprice(double goodprice) {if(goodprice>0){this.goodprice = goodprice;}else{System.out.println("价格必须大于0");}}public String getGoodunit() {return goodunit;}public void setGoodunit(String goodunit) {this.goodunit = goodunit;}public int getGoodcount() {return goodcount;}public void setGoodcount(int goodcount) {this.goodcount = goodcount;}}用户类package com.supermarket.entity;/*** 用户类* 实现序列化* 属性:用户名和密码* 方法:Set和Get方法*/import java.io.Serializable;public class User implements Serializable {private String username;//用户名private String password;//密码/* public User(){//无参数构造方法}//有参数构造方法public User(String username,String password){ ername=username;this.password=password;}*///Set和Get方法public String getUsername() {return username;}public void setUsername(String username) { ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}服务器类package com.supermarket.Server;/*** 服务器* 继承线程类,创建ServerService接口,监听客户端请求* 判断客户端传递的标识,通过标识调用服务端业务类操作数据的方法,并给与客户端响应*/import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import .ServerSocket;import .Socket;import com.supermarket.Tools.Datas;import com.supermarket.Tools.SysConstans;import com.supermarket.Tools.Tools;public class ServerListener extends Thread{public static void main(String[] args) {// TODO 自动生成的方法存根new ServerListener().start();}@Overridepublic void run(){//服务器启动System.out.println("服务器启动");//创建ServerSocket,Socket服务器socket初始化ServerSocket serversocket = null;Socket socket =null;ObjectOutputStream oos =null;ObjectInputStream ois= null;try {//实例化ServerSocketsocket 端口号8888serversocket =new ServerSocket(Integer.parseInt(Tools.getVlaue(SysConstans.SYS_LISTENERPORT)));//死循环监听请求while(true){socket=serversocket.accept();oos=new ObjectOutputStream(socket.getOutputStream());ois = new ObjectInputStream(socket.getInputStream());//接受客户请求的对象Datas datas = (Datas) ois.readObject();String flag = datas.getFlag();//创建服务器服务类的对象ServerService ss=new ServerService();//判断客户端传过来的标识是想调用什么方法if(datas.getFlag().equals(SysConstans.SYS_LOGIN)){ datas=ss.doLogin(datas);}else if (flag.equals(SysConstans.SYS_ADD)) {datas = ss.add(datas);// 商品出库} else if (flag.equals(SysConstans.SYS_CHUKU)) { datas = ss.down(datas);// 商品入库} else if (flag.equals(SysConstans.SYS_RUKU)) { datas = ss.up(datas);// 编号查看} else if (flag.equals(SysConstans.SYS_FIND)) {datas = ss.find(datas);// 查看所有} else if (flag.equals(SysConstans.SYS_FINDALL)) { datas = ss.findAll(datas);// 扫描商品} else if (flag.equals(SysConstans.SYS_SCAN)) { datas = ss.scan(datas);// 修改商品} else if (flag.equals(SysConstans.SYS_UPDA TA)) { datas = ss.upData(datas);// 商品结账} else if (flag.equals(SysConstans.SYS_RESULT)) { datas = ss.result(datas);//商品清空} else if (flag.equals(SysConstans.SYS_CLEAR)) { datas = ss.clear();}else{datas.setFlag(SysConstans.SYS_ERROR);}//把datas作为返回值写入客户端oos.writeObject(datas);oos.flush();socket.shutdownOutput();}} catch (NumberFormatException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (IOException e) {// TODO 自动生成的catch 块e.printStackTrace();} catch (ClassNotFoundException e) {// TODO 自动生成的catch 块e.printStackTrace();}finally{//关闭流try {oos.close();ois.close();socket.close();} catch (IOException e) {// TODO 自动生成的catch 块e.printStackTrace();}}System.out.println("服务器终止服务!");}}服务器业务类package com.supermarket.Server;import java.util.ArrayList;import com.supermarket.Tools.Datas;import com.supermarket.Tools.SysConstans;import com.supermarket.entity.Goods;import er;/*** 服务业务类.* 用来初始化商品列表,创建管理员和收银员对象* 存放服务器端调用的方法* @author Administrator**/public class ServerService {/*** 初始化管理员对象和收银员对象。
软件著作权源代码

#include <tybs/commandline.h>令狐采学#include <tybs/dir.h>#include <tybs/entropy.h>#include <tybs/file.h>#include <tybs/hash.h>#include <tybs/os.h>#include <tybs/platform.h>#include <tybs/resource.h>#include <tybs/stdio.h>#include <tybs/string.h>#include <tybs/task.h>#include <tybs/timer.h>#include <tybs/util.h>#include <tybscc/result.h>#include <dns/dispatch.h>#include <dns/name.h>#include <dns/result.h>#include <dns/view.h>#include <dst/result.h>#define NS_MAIN 1#include <named/ns_smf_globals.h> #endif#ifdef DLZ#include <dlz/dlz_drivers.h>#endifstatic tybs_boolean_t want_stats = TYBS_FALSE;static char program_name[TYBS_DIR_NAMEMAX] = "named"; static char absolute_conffile[TYBS_DIR_PATHMAX];static char saved_command_line[512];static char version[512];static unsigned int maxsocks = 0;voidns_main_earlywarning(const char *format, ...) {va_list args;va_start(args, format);if (ns_g_lctx != NULL) {tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_WARNING,format, args);} else {fprintf(stderr, "%s: ", program_name);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}va_end(args);}Voidns_main_earlyfatal(const char *format, ...) {va_list args;va_start(args, format);if (ns_g_lctx != NULL) {tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,format, args);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,"exiting (due to early fatal error)");} else {fprintf(stderr, "%s: ", program_name);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}va_end(args);exit(1);}static voidassertion_failed(const char *file, int line, tybs_assertiontype_t type,const char *cond){if (ns_g_lctx != NULL) {tybs_assertion_setcallback(NULL);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,"%s:%d: %s(%s) failed", file, line,tybs_assertion_typetotext(type), cond);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,"exiting (due to assertion failure)");} else {fprintf(stderr, "%s:%d: %s(%s) failed\n",file, line, tybs_assertion_typetotext(type), cond);fflush(stderr);}if (ns_g_coreok)abort();exit(1);}static voidlibrary_fatal_error(const char *file, int line, const char *format,va_list args) TYBS_FORMAT_PRINTF(3, 0); static voidlibrary_fatal_error(const char *file, int line, const char *format, va_list args){if (ns_g_lctx != NULL) {tybs_error_setfatal(NULL);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,"%s:%d: fatal error:", file, line);tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,format, args);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_CRITICAL,"exiting (due to fatal error in library)");} else {fprintf(stderr, "%s:%d: fatal error: ", file, line);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}if (ns_g_coreok)abort();exit(1);}static voidlibrary_unexpected_error(const char *file, int line, const char *format, va_list args) TYBS_FORMAT_PRINTF(3, 0);static voidlibrary_unexpected_error(const char *file, int line, const char *format, va_list args){if (ns_g_lctx != NULL) {tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_ERROR,"%s:%d: unexpected error:", file, line);tybs_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_MAIN,TYBS_LOG_ERROR,format, args);} else {fprintf(stderr, "%s:%d: fatal error: ", file, line);vfprintf(stderr, format, args);fprintf(stderr, "\n");fflush(stderr);}}static voidlwresd_usage(void) {fprintf(stderr,"usage: lwresd [-4|-6] [-c conffile | -C resolvconffile] ""[-d debuglevel]\n"" [-f|-g] [-n number_of_cpus] [-p port] ""[-P listen-port] [-s]\n"" [-t chrootdir] [-u username] [-i pidfile]\n"" [-m {usage|trace|record|size|mctx}]\n"); }static voidusage(void) {if (ns_g_lwresdonly) {lwresd_usage();return;}fprintf(stderr,"usage: named [-4|-6] [-c conffile] [-d debuglevel] ""[-f|-g] [-n number_of_cpus]\n"" [-p port] [-s] [-t chrootdir] [-u username]\n"" [-m {usage|trace|record|size|mctx}]\n"); }static voidsave_command_line(int argc, char *argv[]) {int i;char *src;char *dst;char *eob;const char truncated[] = "...";tybs_boolean_t quoted = TYBS_FALSE;dst = saved_command_line;eob = saved_command_line + sizeof(saved_command_line);for (i = 1; i < argc && dst < eob; i++) {*dst++ = ' ';src = argv[i];while (*src != '\0' && dst < eob) {if (quoted || isalnum(*src & 0xff) ||*src == '-' || *src == '_' ||*src == '.' || *src == '/') {*dst++ = *src++;quoted = TYBS_FALSE;} else {*dst++ = '\\';quoted = TYBS_TRUE;}}}INSIST(sizeof(saved_command_line) >= sizeof(truncated));if (dst == eob)strcpy(eob - sizeof(truncated), truncated);else*dst = '\0';}static intparse_int(char *arg, const char *desc) {char *endp;int tmp;long int ltmp;ltmp = strtol(arg, &endp, 10);tmp = (int) ltmp;if (*endp != '\0')ns_main_earlyfatal("%s '%s' must be numeric", desc, arg);if (tmp < 0 || tmp != ltmp)ns_main_earlyfatal("%s '%s' out of range", desc, arg);return (tmp);}static struct flag_def {const char *name;unsigned int value;} mem_debug_flags[] = {{ "trace", TYBS_MEM_DEBUGTRACE },{ "record", TYBS_MEM_DEBUGRECORD },{ "usage", TYBS_MEM_DEBUGUSAGE },{ "size", TYBS_MEM_DEBUGSIZE },{ "mctx", TYBS_MEM_DEBUGCTX },{ NULL, 0 }};static voidset_flags(const char *arg, struct flag_def *defs, unsigned int *ret) { for (;;) {const struct flag_def *def;const char *end = strchr(arg, ',');int arglen;if (end == NULL)end = arg + strlen(arg);arglen = end - arg;for (def = defs; def->name != NULL; def++) {if (arglen == (int)strlen(def->name) &&memcmp(arg, def->name, arglen) == 0) {*ret |= def->value;goto found;}}ns_main_earlyfatal("unrecognized flag '%.*s'", arglen, arg);found:if (*end == '\0')break;arg = end + 1;}}static voidparse_command_line(int argc, char *argv[]) {int ch;int port;tybs_boolean_t disable6 = TYBS_FALSE;tybs_boolean_t disable4 = TYBS_FALSE;save_command_line(argc, argv);tybs_commandline_errprint = TYBS_FALSE;while ((ch = tybs_commandline_parse(argc, argv,"46c:C:d:fgi:lm:n:N:p:P:""sS:t:T:u:vVx:")) != -1) {switch (ch) {case '4':if (disable4)ns_main_earlyfatal("cannot specify -4 and -6");if (tybs_net_probeipv4() != TYBS_R_SUCCESS)ns_main_earlyfatal("IPv4 not supported by OS"); tybs_net_disableipv6();disable6 = TYBS_TRUE;break;case '6':if (disable6)ns_main_earlyfatal("cannot specify -4 and -6");if (tybs_net_probeipv6() != TYBS_R_SUCCESS)ns_main_earlyfatal("IPv6 not supported by OS"); tybs_net_disableipv4();disable4 = TYBS_TRUE;break;case 'c':ns_g_conffile = tybs_commandline_argument;lwresd_g_conffile = tybs_commandline_argument;if (lwresd_g_useresolvconf)ns_main_earlyfatal("cannot specify -c and -C");ns_g_conffileset = TYBS_TRUE;break;case 'C':lwresd_g_resolvconffile = tybs_commandline_argument;if (ns_g_conffileset)ns_main_earlyfatal("cannot specify -c and -C");lwresd_g_useresolvconf = TYBS_TRUE;break;case 'd':ns_g_debuglevel = parse_int(tybs_commandline_argument,"debug level");break;case 'f':ns_g_foreground = TYBS_TRUE;break;case 'g':ns_g_foreground = TYBS_TRUE;ns_g_logstderr = TYBS_TRUE;break;/* XXXBEW -i should be removed */case 'i':lwresd_g_defaultpidfile = tybs_commandline_argument;break;case 'l':ns_g_lwresdonly = TYBS_TRUE;break;case 'm':set_flags(tybs_commandline_argument, mem_debug_flags, &tybs_mem_debugging);break;case 'N': /* Deprecated. */ns_g_cpus = parse_int(tybs_commandline_argument,"number of cpus");if (ns_g_cpus == 0)ns_g_cpus = 1;break;case 'p':port = parse_int(tybs_commandline_argument, "port");if (port < 1 || port > 65535)ns_main_earlyfatal("port '%s' out of range",tybs_commandline_argument);ns_g_port = port;break;/* XXXBEW Should -P be removed? */case 'P':port = parse_int(tybs_commandline_argument, "port");if (port < 1 || port > 65535)ns_main_earlyfatal("port '%s' out of range",tybs_commandline_argument);lwresd_g_listenport = port;break;case 's':want_stats = TYBS_TRUE;break;maxsocks = parse_int(tybs_commandline_argument,"max number of sockets");break;case 't':ns_g_chrootdir = tybs_commandline_argument;break;case 'T':if (strcmp(tybs_commandline_argument, "clienttest") == 0) ns_g_clienttest = TYBS_TRUE;elsefprintf(stderr, "unknown -T flag '%s\n",tybs_commandline_argument);break;case 'u':ns_g_username = tybs_commandline_argument;break;case 'v':printf("BIND %s\n", ns_g_version);exit(0);case 'V':printf("BIND %s built with %s\n", ns_g_version,ns_g_configargs);exit(0);usage();if (tybs_commandline_option == '?')exit(0);ns_main_earlyfatal("unknown option '-%c'",tybs_commandline_option);default:ns_main_earlyfatal("parsing options returned %d", ch);}}argc -= tybs_commandline_index;argv += tybs_commandline_index;if (argc > 0) {usage();ns_main_earlyfatal("extra command line arguments");}}static tybs_result_tcreate_managers(void) {tybs_result_t result;unsigned int socks;#ifdef TYBS_PLATFORM_USETHREADSunsigned int cpus_detected;#endif#ifdef TYBS_PLATFORM_USETHREADScpus_detected = tybs_os_ncpus();if (ns_g_cpus == 0)ns_g_cpus = cpus_detected;tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,TYBS_LOG_INFO, "found %u CPU%s, using %u worker thread%s", cpus_detected, cpus_detected == 1 ? "" : "s",ns_g_cpus, ns_g_cpus == 1 ? "" : "s");#elsens_g_cpus = 1;#endifresult = tybs_taskmgr_create(ns_g_mctx, ns_g_cpus, 0, &ns_g_taskmgr);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_taskmgr_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_timermgr_create(ns_g_mctx, &ns_g_timermgr);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_timermgr_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_socketmgr_create2(ns_g_mctx, &ns_g_socketmgr, maxsocks);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_socketmgr_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_socketmgr_getmaxsockets(ns_g_socketmgr, &socks);if (result == TYBS_R_SUCCESS) {tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,NS_LOGMODULE_SERVER,TYBS_LOG_INFO, "using up to %u sockets", socks);}result = tybs_entropy_create(ns_g_mctx, &ns_g_entropy);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_entropy_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}result = tybs_hash_create(ns_g_mctx, ns_g_entropy, DNS_NAME_MAXWIRE);if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_hash_create() failed: %s",tybs_result_totext(result));return (TYBS_R_UNEXPECTED);}return (TYBS_R_SUCCESS);}static voiddestroy_managers(void) {ns_lwresd_shutdown();tybs_entropy_detach(&ns_g_entropy);if (ns_g_fallbackentropy != NULL)tybs_entropy_detach(&ns_g_fallbackentropy);tybs_taskmgr_destroy(&ns_g_taskmgr);tybs_timermgr_destroy(&ns_g_timermgr);tybs_socketmgr_destroy(&ns_g_socketmgr);tybs_hash_destroy();}static voidsetup(void) {tybs_result_t result;#ifdef HAVE_LIBSCFchar *instance = NULL;#endifns_os_inituserinfo(ns_g_username);ns_os_tzset();ns_os_opendevnull();#ifdef HAVE_LIBSCFresult = ns_smf_get_instance(&instance, 0, ns_g_mctx);if (result == TYBS_R_SUCCESS)ns_smf_got_instance = 1;elsens_smf_got_instance = 0;if (instance != NULL)tybs_mem_free(ns_g_mctx, instance);#endif /* HAVE_LIBSCF */#ifdef PATH_RANDOMDEVif (ns_g_chrootdir != NULL) {result = tybs_entropy_create(ns_g_mctx, &ns_g_fallbackentropy);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_entropy_create() failed: %s",tybs_result_totext(result));result = tybs_entropy_createfilesource(ns_g_fallbackentropy,PATH_RANDOMDEV);if (result != TYBS_R_SUCCESS) {ns_main_earlywarning("could not open pre-chroot ""entropy source %s: %s",PATH_RANDOMDEV,tybs_result_totext(result));tybs_entropy_detach(&ns_g_fallbackentropy);}}#endifns_os_chroot(ns_g_chrootdir);ns_os_minprivs();result = ns_log_init(TYBS_TF(ns_g_username != NULL));if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("ns_log_init() failed: %s",tybs_result_totext(result));if (!ns_g_foreground)ns_os_daemonize();result = tybs_app_start();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_app_start() failed: %s",tybs_result_totext(result));tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, "starting BIND %s%s", ns_g_version,saved_command_line);tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, "built with %s", ns_g_configargs);(void)tybs_resource_getlimit(tybs_resource_stacksize,&ns_g_initstacksize);(void)tybs_resource_getlimit(tybs_resource_datasize,&ns_g_initdatasize);(void)tybs_resource_getlimit(tybs_resource_coresize,&ns_g_initcoresize);(void)tybs_resource_getlimit(tybs_resource_openfiles,&ns_g_initopenfiles);if (! tybs_file_isabsolute(ns_g_conffile)) {result = tybs_file_absolutepath(ns_g_conffile,absolute_conffile,sizeof(absolute_conffile));if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("could not construct absolute path of ""configuration file: %s",tybs_result_totext(result));ns_g_conffile = absolute_conffile;}result = tybs_time_now(&ns_g_boottime);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_time_now() failed: %s", tybs_result_totext(result));result = create_managers();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("create_managers() failed: %s", tybs_result_totext(result));ns_builtin_init();#ifdef DLZresult = dlz_drivers_init();if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("dlz_drivers_init() failed: %s", tybs_result_totext(result));#endifns_server_create(ns_g_mctx, &ns_g_server);}static voidcleanup(void) {destroy_managers();ns_server_destroy(&ns_g_server);ns_builtin_deinit();#ifdef DLZdlz_drivers_clear();#endifdns_name_destroy();tybs_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN,TYBS_LOG_NOTICE, "exiting");ns_log_shutdown();}static char *memstats = NULL;voidns_main_setmemstats(const char *filename) {if (memstats != NULL) {free(memstats);memstats = NULL;}if (filename == NULL)return;memstats = malloc(strlen(filename) + 1);if (memstats)strcpy(memstats, filename);}#ifdef HAVE_LIBSCFtybs_result_tns_smf_get_instance(char **ins_name, int debug, tybs_mem_t *mctx) {scf_handle_t *h = NULL;int namelen;char *instance;REQUIRE(ins_name != NULL && *ins_name == NULL); if ((h = scf_handle_create(SCF_VERSION)) == NULL) { if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_handle_create() failed: %s",scf_strerror(scf_error()));return (TYBS_R_FAILURE);}if (scf_handle_bind(h) == -1) {if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_handle_bind() failed: %s",scf_strerror(scf_error()));scf_handle_destroy(h);return (TYBS_R_FAILURE);}if ((namelen = scf_myname(h, NULL, 0)) == -1) { if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_myname() failed: %s",scf_strerror(scf_error()));scf_handle_destroy(h);return (TYBS_R_FAILURE);if ((instance = tybs_mem_allocate(mctx, namelen + 1)) == NULL) {UNEXPECTED_ERROR(__FILE__, __LINE__,"ns_smf_get_instance memory ""allocation failed: %s",tybs_result_totext(TYBS_R_NOMEMORY));scf_handle_destroy(h);return (TYBS_R_FAILURE);}if (scf_myname(h, instance, namelen + 1) == -1) {if (debug)UNEXPECTED_ERROR(__FILE__, __LINE__,"scf_myname() failed: %s",scf_strerror(scf_error()));scf_handle_destroy(h);tybs_mem_free(mctx, instance);return (TYBS_R_FAILURE);}scf_handle_destroy(h);*ins_name = instance;return (TYBS_R_SUCCESS);}#endifmain(int argc, char *argv[]) {tybs_result_t result;#ifdef HAVE_LIBSCFchar *instance = NULL;#endifstrlcat(version,#ifdef __DATE__"named version: BIND " VERSION " (" __DATE__ ")",#else"named version: BIND " VERSION,#endifsizeof(version));result = tybs_file_progname(*argv, program_name, sizeof(program_name));if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("program name too long");if (strcmp(program_name, "lwresd") == 0)ns_g_lwresdonly = TYBS_TRUE;tybs_assertion_setcallback(assertion_failed);tybs_error_setfatal(library_fatal_error);tybs_error_setunexpected(library_unexpected_error);ns_os_init(program_name);dns_result_register();tybscc_result_register();parse_command_line(argc, argv);if (ns_g_chrootdir != NULL) {int len = strlen(ns_g_chrootdir);if (strncmp(ns_g_chrootdir, ns_g_conffile, len) == 0 &&(ns_g_conffile[len] == '/' || ns_g_conffile[len] == '\\'))ns_main_earlywarning("config filename (-c %s) contains ""chroot path (-t %s)",ns_g_conffile, ns_g_chrootdir);}result = tybs_mem_create(0, 0, &ns_g_mctx);if (result != TYBS_R_SUCCESS)ns_main_earlyfatal("tybs_mem_create() failed: %s",tybs_result_totext(result));tybs_mem_setname(ns_g_mctx, "main", NULL);setup();do {result = tybs_app_run();if (result == TYBS_R_RELOAD) {ns_server_reloadwanted(ns_g_server);} else if (result != TYBS_R_SUCCESS) {UNEXPECTED_ERROR(__FILE__, __LINE__,"tybs_app_run(): %s",result = TYBS_R_SUCCESS;}} while (result != TYBS_R_SUCCESS);#ifdef HAVE_LIBSCFif (ns_smf_want_disable == 1) {result = ns_smf_get_instance(&instance, 1, ns_g_mctx);if (result == TYBS_R_SUCCESS && instance != NULL) { if (smf_disable_instance(instance, 0) != 0)UNEXPECTED_ERROR(__FILE__, __LINE__,"smf_disable_instance() ""failed for %s : %s",instance,scf_strerror(scf_error()));}if (instance != NULL)tybs_mem_free(ns_g_mctx, instance);}#endif /* HAVE_LIBSCF */cleanup();if (want_stats) {tybs_mem_stats(ns_g_mctx, stdout);tybs_mutex_stats(stdout);}if (ns_g_memstatistics && memstats != NULL) {FILE *fp = NULL;result = tybs_stdio_open(memstats, "w", &fp);if (result == TYBS_R_SUCCESS) {tybs_mem_stats(ns_g_mctx, fp);tybs_mutex_stats(fp);tybs_stdio_close(fp);}}tybs_mem_destroy(&ns_g_mctx);tybs_mem_checkdestroyed(stderr);ns_main_setmemstats(NULL);tybs_app_finish();ns_os_closedevnull();ns_os_shutdown();return (0);}#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS #include "php.h"#include <stdio.h>#include <fcntl.h>#ifdef PHP_WIN32#include "win32/time.h"#include "win32/signal.h"#include "win32/php_win32_globals.h" #include <process.h>#elif defined(NETWARE)#include <sys/timeval.h>#ifdef USE_WINSOCK#include <novsock2.h>#endif#endif#if HAVE_SYS_TIME_H#include <sys/time.h>#endif#if HAVE_UNISTD_H#include <unistd.h>#endif#if HAVE_SIGNAL_H#include <signal.h>#endif#if HAVE_SETLOCALE#include <locale.h>#endif#include "zend.h"#include "zend_extensions.h"#include "php_ini.h"#include "php_globals.h"#include "fopen_wrappers.h"#include "ext/standard/php_standard.h" #include "php_variables.h"#include "ext/standard/credits.h"#ifdef PHP_WIN32#include <io.h>#include "win32/php_registry.h"#include "ext/standard/flock_compat.h" #endif#include "php_syslog.h"#include "Zend/zend_exceptions.h"#if PHP_SIGCHILD#include <sys/types.h>#include <sys/wait.h>#endif#include "zend_compile.h"#include "zend_execute.h"#include "zend_highlight.h"#include "zend_indent.h"#include "zend_extensions.h"#include "zend_ini.h"#include "php_content_types.h"#include "php_ticks.h"#include "php_streams.h"#include "php_open_temporary_file.h" #include "SAPI.h"#include "rfc1867.h"/* }}} */#ifndef ZTSphp_core_globals core_globals;#elsePHPAPI int core_globals_id;#endif#define SAFE_FILENAME(f) ((f)?(f):"-") /* {{{ PHP_INI_MH*/static PHP_INI_MH(OnSetPrecision){int i = atoi(new_value);if (i >= 0) {EG(precision) = i;return SUCCESS;} else {return FAILURE;}}static PHP_INI_MH(OnChangeMemoryLimit){if (new_value) {PG(memory_limit) = zend_atoi(new_value, new_value_length);} else {PG(memory_limit) = 1<<30; /* effectively, no limit */ }return zend_set_memory_limit(PG(memory_limit));}static void php_disable_functions(TSRMLS_D){char *s = NULL, *e;if (!*(INI_STR("disable_functions"))) {return;}e = PG(disable_functions) = strdup(INI_STR("disable_functions"));while (*e) {switch (*e) {case ' ':case ',':if (s) {*e = '\0';zend_disable_function(s, e-s TSRMLS_CC);s = NULL;}break;default:if (!s) {s = e;}break;}e++;}if (s) {zend_disable_function(s, e-s TSRMLS_CC);}}static void php_disable_classes(TSRMLS_D){char *s = NULL, *e;if (!*(INI_STR("disable_classes"))) {return;}e = PG(disable_classes) = strdup(INI_STR("disable_classes"));while (*e) {switch (*e) {case ' ':case ',':if (s) {*e = '\0';zend_disable_class(s, e-s TSRMLS_CC);s = NULL;}break;default:if (!s) {s = e;}break;}e++;}if (s) {zend_disable_class(s, e-s TSRMLS_CC);}}static PHP_INI_MH(OnUpdateTimeout){EG(timeout_seconds) = atoi(new_value);if (stage==PHP_INI_STAGE_STARTUP) {/* Don't set a timeout on startup, only per-request */return SUCCESS;}zend_unset_timeout(TSRMLS_C);zend_set_timeout(EG(timeout_seconds));return SUCCESS;}static int php_get_display_errors_mode(char *value, int value_length) {int mode;if (!value) {return PHP_DISPLAY_ERRORS_STDOUT;}if (value_length == 2 && !strcasecmp("on", value)) {mode = PHP_DISPLAY_ERRORS_STDOUT;} else if (value_length == 3 && !strcasecmp("yes", value)) { mode = PHP_DISPLAY_ERRORS_STDOUT;} else if (value_length == 4 && !strcasecmp("true", value)) { mode = PHP_DISPLAY_ERRORS_STDOUT;} else if (value_length == 6 && !strcasecmp(value, "stderr")) { mode = PHP_DISPLAY_ERRORS_STDERR;} else if (value_length == 6 && !strcasecmp(value, "stdout")) { mode = PHP_DISPLAY_ERRORS_STDOUT;} else {mode = atoi(value);if (mode && mode != PHP_DISPLAY_ERRORS_STDOUT && mode != PHP_DISPLAY_ERRORS_STDERR) {mode = PHP_DISPLAY_ERRORS_STDOUT;}}return mode;}static PHP_INI_MH(OnUpdateDisplayErrors){PG(display_errors) = (zend_bool) php_get_display_errors_mode(new_value, new_value_length);return SUCCESS;}static PHP_INI_DISP(display_errors_mode){int mode, tmp_value_length, cgi_or_cli;char *tmp_value;TSRMLS_FETCH();if (type == ZEND_INI_DISPLAY_ORIG && ini_entry->modified) {tmp_value = (ini_entry->orig_value ? ini_entry->orig_value : NULL );tmp_value_length = ini_entry->orig_value_length;} else if (ini_entry->value) {tmp_value = ini_entry->value;tmp_value_length = ini_entry->value_length;} else {tmp_value = NULL;tmp_value_length = 0;}mode = php_get_display_errors_mode(tmp_value, tmp_value_length);cgi_or_cli = (!strcmp(sapi_, "cli") || !strcmp(sapi_, "cgi"));switch (mode) {case PHP_DISPLAY_ERRORS_STDERR:if (cgi_or_cli ) {PUTS("STDERR");} else {PUTS("On");}break;case PHP_DISPLAY_ERRORS_STDOUT:if (cgi_or_cli ) {PUTS("STDOUT");} else {PUTS("On");}break;default:PUTS("Off");break;}}static PHP_INI_MH(OnUpdateErrorLog){/* Only do the safemode/open_basedir check at runtime */if ((stage == PHP_INI_STAGE_RUNTIME || stage == PHP_INI_STAGE_HTACCESS) &&strcmp(new_value, "syslog")) {if (PG(safe_mode) && (!php_checkuid(new_value, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {return FAILURE;}if (PG(open_basedir) && php_check_open_basedir(new_value TSRMLS_CC)) {return FAILURE;}}OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);。
北大青鸟java全套课程TP2

ACCP V4.0
目标
理解数据类型 掌握运算符 掌握数组 运用控制流语句
3
ACCP V4.0
Java 语言的基础知识
Java 块
数据类型
变量
运算符
控制流语句
数据类型确定要存储在内存中的数据的类型。 数据类型 变量是存储数据的基本单元 。 运算符是一个符号,用于操作一个或多个参数以得出结果。 运算符 程序是按顺序执行的。控制流语句 控制流语句允许改变此顺序。 控制流语句
18
ACCP V4.0
switch-case 语句
switch-case 语句可用于替换 if-else-if 语句 在表达式可以得出多个值的情况下,使用此语句 使用 switch-case 语句会带来更好的效果 switch-case 语句的语法为:
switch (表达式) { case 1: 操作 1 的语句; break; case 2: 操作 2 的语句; break; …. case n : 操作 n 的语句; break; default: 默认语句;
15
ACCP V4.0
控制流语句
所有应用程序开发环境都提供一个判定过程,称为控制流 语句,它用于引导应用程序的执行 流控制使程序员可以创建一个应用程序,该应用程序能够 检查现有的条件并决定适当的操作过程 循环或迭代是重要的编程结构,可用于重复执行一组操作 跳转语句允许以非线性的方式执行程序
16
ACCP V4.0
6
ACCP V4.0
示例
class VariableTest { public static void main(String [] args) {
double a = 1.0; int b = 3;
北大青鸟:源代码清单

Dim DBasecon As ADODB.Connection
Dim TaskRecset As Recordset
Set DBasecon = New Connection
DBasecon.ConnectionString = "PROVIDER=MSDASQL;dsn=VBDatabase;uid=sa;pwd=passwd;database=VBDatabase;"
Adodc1.RecordSource = "SELECT * FROM Task"
Adodc1.Refresh
Adodc2.ConnectionString = "PROVIDER=MSDASQL;dsn=VBDatabase;uid=sa;pwd=passwd;database=VBDatabase;"
DBasecon.Open
Set TaskRecset = New Recordset
TaskRecset.Open "Task", DBasecon, adOpenDynamic, adLockOptimistic
Do While Not TaskRecset.EOF
With TaskRecset
Exit Do
Else
TaskRecset.MoveNext
End If
End With
Loop
DBasecon.Close
Unload frmReminder
End Sub
Private Sub CancelClick()Me.txtTime.Clear
Me.cboMonth.Clear
C语言(学员管理系统)

C语言(学员管理系统)/************************************************************** ************北大青鸟学员管理系统。
此程序可实现以管理员方式操作学员的学号,姓名,三门成绩,以及平均成绩的录入,读取,删除,排序,查找,保存功能。
并提供普通帐户对学员信息的浏览。
*************************************************************** ************/#include<stdio.h>#include<string.h>#include<windows.h>int count=0,flag; //定义两个全局变量,count为总录入人数。
flag为一个标记char ch; //定义一个全局字符变量,为程序经常执行“是否继续”输入struct student //声明一个结构体,并作为全局变量。
{char num[5]; //学号char name[30]; //姓名float score[3]; //三门课程成绩float pinjun; //平均成绩}stu[50]; //声明结构数组可存放50名学生void denglu(); //选择登录函数void administrator(); //管理员界面void guess(); //普通帐户界面void input(); //录入函数void charu(); //插入函数void xiugai(); //修改函数void del(); //删除函数void output(); //显示函数void jiang(); //降序排列函数void sheng(); //升序排列函数void find(); //查找函数void exit1(); //退出函数void jilu(); //读取上次记录void read_count(); //读取总人数值void save_count(); //保存总人数值void read(); //读取学员信息void save(); //保存学员信息void main() //主函数{denglu(); //主函数中调用登录函数}void denglu() //登录函数{char admin[30],pass[20]; //字符数组分别用于存放用户名,密码char pass1[20]="123456"; //字符串用于存放默认密码int i,j; //统计数组下标/***********************************登录前界面***********************************************/printf("\n\n\n\n\t\t\t★★★★★★★★★★★★★★★");printf("\n\n\t\t\t★学员管理系统★\n\n\t\t\t★★★★★★★★★★★★★★★\t\t\t\t\n\n\n");printf("\t﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉﹊﹉\n");getch();do{printf("\n\n\t\t\t1:管理员帐户\n\t\t\t2:普通帐户\n\t\t\t0:退出程序\n\n\t\t\t");printf("\n\t\t\t请选择登录类型:");fflush(stdin);ch = getchar();switch(ch) //分支实现用户输入的功能{case '1': //选择管理员登录printf("\n\t\t\t请输入用户名:");fflush(stdin);gets(admin);fflush(stdin);printf("\n\t\t\t请输入密码:");i=0;/*以下用于输入密码,从键盘得到一个符并赋给字符数组。
北大青鸟JSP教程大全下

showFirstTitle.jsp
完整代码实现
调用类FirstLeveTitleDbOpreation的方法,获得FirstLevelTitle 对象的集合
遍历该集合,逐行输出新闻一级标题的名称
-------代码片断------
<%
FirstLeveTitleDbOpreation first = new FirstLeveTitleDbOpreation();
SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日");
return formater.format(d);
}
%>
你好,ACCP!今天是<%=formatDate(new Date())%><br> 你好,BENET!今天是<%=formatDate(new Date())%> </html>
session application
JSP内置对象out
out对象用于向客户端输出数据 out对象常用方法:
print():在页面中打印出字符串信息
<html> <body> <%
out.print(" hello ACCP" ); %> </body> </html>
北大青鸟JSP教程大全下
JSP内置对象request 4-1
method表示表单发送的方式, 分为两种:
get方式:将表单内容经过编码之后 ,通过URL发送, 使用get 方式发送时有255个字符的限制。
北大青鸟课程_北大青鸟课程安排表_北大青鸟

北大青鸟资源共享网站
官方网站 青鸟bbs学生网 Accp@ 北大青鸟总部邮箱
报名后请您可登陆下述网站查询您的学籍资料: /service/
影院售票系统
银行ATM取款机系统 宠物商店 当当网 论坛短消息 COT Project
网络电视精灵
学生成绩管理系统 电子宠物 贵美商城(二) 新闻发布系统 SQL争霸赛、蝴蝶的启 示 易买网
课程介绍—S2
获得认证:ACCP程序员 掌握的技能
面向对象编程 JavaScript客户端验证和页面特效制作 SQL Server高级管理和查询 用JSP+JDBC+SQL Server开发简单B/S结构的应用系统
课程目标—Y2
能胜任的工作
Java(JavaEE)工程师 .NET工程师 J2EE系统工程师 外包开发工程师 网站设计和开发工程师 数据库工程师 ERP/CRM/OA/B2C开发应用工程师 系统分析设计工程师 文档工程师 系统分析设计工程师 软件项目配置管理员 文档编写工程师
使用Java企业级技术开发大型系统 Spring 前沿技术课 职业修养训练 毕业设计项目开发 NTC COT Project
合计
344
项目介绍—Y2B
课程设置(JAVA):
课程名称 使用Hibernate开发租房系统 使用MVC框架开发租房网站 使用Java企业级技术开发大型系统 项目名称 租房系统 在线投票 JBOA办公自动化 管理系统 贯穿案例 租房网(一) 租房网(二) JBOA办公自动化管理系统
使用JSP/Servlet/Ajax技术开发新闻发布系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
' If Me.Adodc2.Recordset.RecordCount > 1 Then
' Me.txtTaskId.Text = "TS" & Me.Adodc2.Recordset.RecordCount - 1
' Else
Me.txtTaskId.Text = "TS" & Me.Adodc2.Recordset.RecordCount
Me.Caption = "ADODB SAMPLE[ Record Count : " & Adodc2.Recordset.RecordCount & "]"
Set dgdTasks.DataSource = Adodc2
dgdTasks.Columns(0).Visible = False
dgdTasks.Columns(7).Visible = False
Adodc2.RecordSource = "SELECT * FROM Task"
Adodc2.Refresh
If Me.Adodc2.Recordset.RecordCount > 0 Then
If Not Adodc2.Recordset.EOF Then Adodc2.Recordset.MoveLast
DBasecon.Open
Set TaskRecset = New Recordset
TaskRecset.Open "Task", DBasecon, adOpenDynamic, adLockOptimistic
Do While Not TaskRecset.EOF
With TaskRecset
Dim LoginRecset As Recordset
Set DBasecon = New Connection
DBasecon.ConnectionString = "PROVIDER=MSDASQL;dsn=VBDatabase;uid=sabase;"
If TaskRecset.Fields(1).Value = frmTaskList.txtTaskId.Text Then
TaskRecset.Fields(7).Value = Me.cboMonth.Text + "/" + Me.cboDay.Text + "/" + Me.txtYear.Text
Me.txtYear = ""
Unload Me
End Sub
3、任务列表窗体frmTaskList.frm的源代码如下
Option Explicit
Public Search As Boolean
Public interval As Variant
Public days As Long
Public Check As Integer
End If
Adodc1.Recordset.MoveNext
Wend
End Sub
Private Sub txtEndDate_LostFocus()
If Me.txtStartDate.Text <> "" Then
Me.txtScheduleDay.Text = GetElapsedDays(CDate(Me.txtStartDate.Text) - Date)
Dim frmReminderPopUp As New frmReminderPopUp
Load frmReminderPopUp
frmReminderPopUp.lblMessage.Caption = Adodc1.Recordset.Fields(2).Value
frmReminderPopUp.Show
Private Sub cmdSave_Click()
Dim DBasecon As ADODB.Connection
Dim TaskRecset As Recordset
Set DBasecon = New Connection
DBasecon.ConnectionString = "PROVIDER=MSDASQL;dsn=VBDatabase;uid=sa;pwd=passwd;database=VBDatabase;"
任务管理项目源代码清单
1.工程TaskSchedular的登录窗体frmLogin.frm的代码如下:
Dim myConnectionString As String
Private Sub cmdCancel_Click()
Unload frmLogin
End Sub
Private Sub cmdClear_Click()
Exit Sub
aa:
End Sub
Private Sub Timer1_Timer()
lblTimeDisplay.Caption = CStr(Time)
Adodc1.Refresh
'If Not Adodc2.Recordset.EOF Then
' Adodc2.Recordset.MoveFirst
txtEndDate.Enabled = 0: txtScheduleDay.Enabled = 0
cboTaskStatus.Enabled = 0
tlbMenu.Buttons.Item(1).Caption = "New"
End If
Case "btnSave"
If Not Len(txtTaskId.Text) < 1 Then
TaskRecset.Fields(8).Value = Me.txtTime.Text
TaskRecset.Fields(9).Value = Me.cboAfter.Text
TaskRecset.Fields(10).Value = Me.cboEvery.Text
TaskRecset.Update
Load frmTaskList
frmTaskList.Show
Else
MsgBox "Invalid Password"
End If
Else
MsgBox "Invalid UserId"
End If
End Sub
2、设置提示信息窗体frmReminder.frm的代码如下
Private myConnectionString As String
dgdTasks.Columns(8).Visible = False
dgdTasks.Columns(9).Visible = False
dgdTasks.Columns(10).Visible = False
dgdTasks.Columns(11).Visible = False
dgdTasks.Columns(12).Visible = False
Adodc2.Recordset.Fields(6).Value = CDate(Me.txtEndDate.Text)
Adodc2.Recordset.Fields(4).Value = Me.cboTaskStatus.Text
Adodc2.Recordset.Fields(5).Value = days
Me.txtScheduleDay.Enabled = False
End If
End Sub
Private Sub tlbMenu_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "btnNew"
If tlbMenu.Buttons.Item(1).Caption = "New" Then
' End If
tlbMenu.Buttons.Item(1).Caption = "Cancel"
txtTaskText.SetFocus
Else
Adodc2.Refresh
'tlbMenu.Buttons.Item(4).Enabled = True
txtTaskId.Enabled = 0: txtTaskText.Enabled = 0: txtStartDate.Enabled = 0
'tlbMenu.Buttons.Item(4).Enabled = False
txtTaskText.Enabled = 1: txtStartDate.Enabled = 1
txtEndDate.Enabled = 1: txtScheduleDay.Enabled = 1
cboTaskStatus.Enabled = 1
Adodc2.Recordset.Fields(1).Value = Me.txtTaskId.Text
Adodc2.Recordset.Fields(2).Value = Me.txtTaskText.Text
Adodc2.Recordset.Fields(3).Value = CDate(Me.txtStartDate.Text)
'End If
While Not Adodc1.Recordset.EOF
If (CStr(Adodc1.Recordset.Fields(11).Value) = CStr(Date) And Adodc1.Recordset.Fields(12).Value = CStr(Time)) Then