/**
* 类名为StudentCard,属性包含:卡号,学号,学生姓名、余额等属性。
* 编写两个带参的构造方法,一个构造方法实现给4个属性赋值,另外一个构造方法实现给卡号、学号和学生姓名三个属性赋值。
* 编写一个方法,实现输出学生卡的基本信息的功能。
*
*/
public class Hello {
public static void main(String[] args) {
StudentCard sc = new StudentCard("1","111","aaa",22)
sc.print()
}
}
class StudentCard{
private String kahao //卡号
private String xuehao//学号
private String studentName
private String yue//余额
public StudentCard(String kh, String xh, String 巧老肢sn, float ye){
try {
this.kahao = String.valueOf((double)1/100).replaceAll("\\.", "")
} catch (Exception e) {
this.kahao = kh
}
this.xuehao = xh
this.studentName = sn
this.yue = new 含伏DecimalFormat("0.00").format(ye)
}
public StudentCard(String kh, String xh, String sn){
try {
this.kahao = String.valueOf((double)1/100).replaceAll("\\.", "")
} catch (Exception e) {
this.kahao = kh
}
this.xuehao = xh
this.studentName = sn
}
public void print(){
System.out.println("学生卡号:" + this.kahao+"\n学生学号:"+this.xuehao+"\n学生姓名:"+this.studentName+"\n学生余额:"+this.yue)
}
public String getKahao() {
return kahao
}
public void setKahao(String kahao) {
this.kahao = kahao
}
public String getXuehao() {
return xuehao
}
public void setXuehao(String xuehao) {
this.xuehao = xuehao
}
public String getYue() {
return yue
}
public void setYue(String yue) {
this.yue = yue
}
public String getStudentName() {
return studentName
}
public void setStudentName(String studentName) {
this.studentName = studentName
}
}
=========下面是输出内容=========
学生卡号:001
学生学号:001
学生姓名:孝世张三
学生余额:22.00
------------------------------------------// Copyright (C) 2009 沈阳工程学院信息安全工作室
// 版权所有。
//
// 文件名:模拟停车场问题.cpp
// 文件功能描述:模拟停车场问题
//
//
// 创建标识:20091214
//
// 修改标识:20091218
// 修改描述:完成编码
//----------------------------------------------------------------*/
//头文件
#include <iostream>
#include <malloc.h>
#include <string>
#include <windows.h>
//常量定义
#define MAX_STOP 4 //定义停车场最大停车棚判数
#define MAX_PLATE 10//定义车牌号最大长度
#define TIME_COUNT "秒" //定义时间单位
#define TIME_MS_TO_CONUT 1000 //定义时间进制,意为由TIME_COUNT到毫秒的进制
#define UNIT_PRICE 10//定义单位时间收费标准
using namespace std //使用std命名空间
//数据结构定义
//定义存储汽车信息的结构体
typedef struct
{
char license_plate[MAX_PLATE]//汽车牌照号简空码,定义为一个字符指针类型
char state //汽车当前状态,字符p表示停放在停车位上,字符s表示停放在便道上,每辆车的初始状态用字符i来进行表示
int time //汽车停入停车场时的时间,用来计时收费
}CAR
//定义模拟停车场的栈结构
typedef struct
{
CAR STOP[MAX_STOP] //汽车信息的存储空间
int top //用来指示栈顶位置的静态指针
}SeqStack
//定义模拟便道的队列结构
typedef struct node
{
CAR WAIT //汽车信息的存储空间
struct node *next //用来指示队列位置的动态指针
}QNode //链队列节点的类型
/链咐改/定义链队列的收尾指针
typedef struct
{
QNode *front,*rear
}LQueue //将头尾指针封装在一起的链队
//函数声明
int Empty_LQueue(LQueue *q) //判队空
int LeaveCheck(SeqStack parking , char *license_plate) //检查离开的车是否在停车场中
int QueueLength(LQueue *q)//判队长度
int Out_LQueue(LQueue *&sidewalk , char *license_plate)//出队 *** 作
int StackEmpty(SeqStack parking) //判断栈是否为空
int StackFull(SeqStack parking) //判断栈是否为满
int StackPop(SeqStack &parking) //出栈 *** 作
int StackTop(SeqStack parking , char *license_plate , int &time)//取栈顶元素
void Car_come(SeqStack &parking , LQueue *&sidewalk) //有车到来时的 *** 作
void Car_leave(SeqStack &parking , LQueue *&sidewalk) //有车离开的 *** 作
void Display(SeqStack parking) //显示停车场内的所有信息 调试时用
void InitStack(SeqStack &parking) //初始化栈
void InitList(LQueue *&sidewalk) //初始化队列
void In_LQueue(LQueue *&sidewalk , char *license_plate)//进队 *** 作
void Input_Check(char *license_plate) ////检验输入的车牌是否合法
void StackPush(SeqStack &parking , char *license_plate , int stop_time)//进栈 *** 作
void main()
{
//定义变量
SeqStack parking
LQueue *sidewalk = NULL
char *choice = new char
int flag = 1 //定义一个变量 判断是否退出
//初始化一个为空的停车场
InitStack(parking)
//初始化一个为空的便道
InitList(sidewalk)
//运行界面及功能选择
while(flag)
{
cout<<"\n\t 停车场模拟管理系统 \n\n"
cout<<"\t|--------------------------------------------------|\n\n"
cout<<"\t|本程序为停车场的模拟管理系统,有车到来时请按C键。|\n\n"
cout<<"\t|然后根据屏幕提示进行相关 *** 作,有车要走时请按l键。|\n\n"
cout<<"\t|然后根据屏幕提示进行相关 *** 作,查看停车场请按D键。|\n\n"
cout<<"\t|然后根据屏幕提示进行相关 *** 作,要退出系统请按Q键。|\n\n"
cout<<"\t|--------------------------------------------------|\n\n"
cout<<"请选择 *** 作:"
gets(choice)
if(1 != strlen(choice))
{
cout<<"请正确输入选项!"
continue
}
else
{
switch(*choice)
{
case 'c':
case 'C':
{
Car_come(parking,sidewalk)break
}
case 'l':
case 'L':
{
Car_leave(parking,sidewalk)break
}
case 'q':
case 'Q':
{
flag=0break
}
case 'd':
case 'D':
{
Display(parking)break
}
default:
cout<<"选择不正确!请重新选择!\n"
}
}
}
}
//有车到来时的 *** 作
void Car_come(SeqStack &parking , LQueue *&sidewalk)
{
//定义变量
char license_plate[MAX_PLATE]
cout<<"请输入车辆的车牌号码:"
Input_Check(license_plate)
//判断停车场是否已满,满则进入便道,不满进入停车场
if(StackFull(parking))
{
In_LQueue(sidewalk , license_plate) //进入便道
cout<<"停车场已满请在便道等候,您的位置为"<<QueueLength(sidewalk)
<<endl
}
else
{
StackPush(parking , license_plate , GetTickCount()) //进入停车场
cout<<"请进入停车场中的"<<parking.top+1<<"号停车位\n"
}
// Display(parking)
}
//有车离开时的 *** 作
void Car_leave(SeqStack &parking , LQueue *&sidewalk)
{
//定义变量
SeqStack tmpparking//定义临时停车场
char leave_license_plate[MAX_PLATE]//要离开的车牌号
char license_plate[MAX_PLATE] //存放从停车场中读出来的车牌信息
int time
InitStack(tmpparking)//初始化临时停车场
//判断停车场中是否有车
if(StackEmpty(parking))
{
cout<<"当前停车场中没有车\n"
return //退出子函数
}
cout<<"请输入要离开的车牌照:"
Input_Check(leave_license_plate)
cout<<"当前停车场中有"<<parking.top+1<<"辆车\n"
if(LeaveCheck(parking , leave_license_plate)) //判断车是否在停车场中
{
//车在停车场中
cout<<"您的车在"<<LeaveCheck(parking , leave_license_plate)<<"号车位上\n"
while(StackTop(parking , license_plate , time)
&&(strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))
{
strcpy(parking.STOP[parking.top].license_plate , license_plate)
cout<<"牌照为"<<license_plate<<"的车暂时退出停车场"<<parking.top+1<<"号位\n"
StackPush(tmpparking , license_plate , time) //停车场中的车暂时退出 进入临时停车场
StackPop(parking) //出栈
}
cout<<"牌照为"<<license_plate<<"的车离开停车场"<<parking.top+1<<"号位\n"
cout<<"您在停车场中停了"<<(GetTickCount()-time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl //输出所停时间信息
cout<<"应缴费用为"<<(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE<<"元\n" //输出费用信息
StackPop(parking) //出栈
//将临时停车场中的车停回停车场
while(StackEmpty(tmpparking) != 1)
{
StackTop(tmpparking , license_plate , time)
StackPush(parking , license_plate , time)
cout<<"牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n"
license_plate[0] = '\0'
StackPop(tmpparking)
}
if(parking.top+1 == MAX_STOP-1) //判断车离开前停车场是否停满
if(QueueLength(sidewalk)) //如果停满则判断便道上是否有车
{
//便道中有车 则从便道中停入停车场
Out_LQueue(sidewalk , license_plate)//出队
StackPush(parking , license_plate , GetTickCount())//入栈
cout<<"在便道中牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号位\n"
}
}
else
//车不在停车场中
cout<<"您的车不在停车场中!\n"
}
//初始化顺序栈
void InitStack(SeqStack &parking)
{
parking.top = -1
}
//判栈空
int StackEmpty(SeqStack parking)
{
if(parking.top == -1)
return 1
else
return 0
}
//判栈满
int StackFull(SeqStack parking)
{
if(parking.top == MAX_STOP-1)
return 1
else
return 0
}
//入栈
void StackPush(SeqStack &parking , char *license_plate , int stop_time)
{
parking.top++
strcpy(parking.STOP[parking.top].license_plate , license_plate)
parking.STOP[parking.top].state = 'p'
parking.STOP[parking.top].time = stop_time
}
//出栈 返回栈顶指针
int StackPop(SeqStack &parking)
{
if(StackEmpty(parking))
return 0
else
return parking.top--
}
//取栈顶元素
int StackTop(SeqStack parking , char *license_plate , int &time)
{
if(StackEmpty(parking))
return 0
else
{
strcpy(license_plate , parking.STOP[parking.top].license_plate)
time = parking.STOP[parking.top].time
return 1
}
}
//显示所有
void Display(SeqStack parking)
{
if(parking.top == -1)
printf("停车场为空\n")
else
{
while(parking.top != -1)
{
cout<<"车牌号为:"<<parking.STOP[parking.top].license_plate
cout<<",停在"<<parking.top + 1 <<"号车位上"
cout<<",已停"<<(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl
parking.top--
}
}
}
//初始化队列
void InitList(LQueue *&sidewalk)
{
sidewalk = (LQueue *)malloc(sizeof(LQueue))
sidewalk->front=sidewalk->rear = NULL
}
//入队
void In_LQueue(LQueue *&sidewalk,char *license_plate)
{
QNode *car_on_sidewalk
car_on_sidewalk = (QNode *)malloc(sizeof(QNode)) //为新节点开辟新空间
strcpy(car_on_sidewalk->WAIT.license_plate , license_plate)//将数据写入节点
car_on_sidewalk->WAIT.state = 's' //写入停车信息
car_on_sidewalk->WAIT.time = GetTickCount()//写入停车时间
car_on_sidewalk->next = NULL
if(Empty_LQueue(sidewalk)) //队空则创建第一个节点
sidewalk->front = sidewalk->rear = car_on_sidewalk
else
{
//队非空插入队尾
sidewalk->rear->next = car_on_sidewalk
sidewalk->rear = car_on_sidewalk
}
}
//判队空
int Empty_LQueue(LQueue *q)
{
if(q->front == NULL)
return 1
else
return 0
}
//判队长度 返回队长
int QueueLength(LQueue *q)
{
QNode *p=q->front
int i=0
while(p != NULL)
{
i++
p=p->next
}
return i
}
//出队 成功返回1 队空返回0
int Out_LQueue(LQueue *&sidewalk,char *license_plate)
{
QNode *car_on_sidewalk
if(Empty_LQueue(sidewalk)) //如果队空返回0
return 0
car_on_sidewalk = sidewalk->front
strcpy(license_plate , car_on_sidewalk->WAIT.license_plate)//取出队头元素
if(sidewalk->front == sidewalk->rear) //队中只有一个元素
sidewalk->front = sidewalk->rear=NULL //删除元素
else
sidewalk->front = sidewalk->front->next//队头指针后移
free(car_on_sidewalk) //释放指针
return 1
}
//检查离开的车是否在停车场中 返回车在停车场中位置 不在则返回0
int LeaveCheck(SeqStack parking,char *license_plate)
{
int flag = parking.top+1 //定义变量记录当前车在停车场中位置
if(StackEmpty(parking))
return 0
else
{
//查找离开车所在位置
while(parking.top != -1 &&strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)
{
flag--
parking.top--
}
return flag
}
}
//检验输入的车牌是否合法
void Input_Check(char *license_plate)
{
int flag = 1
int i
string tmpstr
while(flag)
{
cin>>tmpstr
getchar()
if(tmpstr.length()<MAX_PLATE)
{
for(i=0i<10i++)
license_plate[i] = tmpstr.c_str()[i]
flag = 0
}
else
cout<<"输入有误,请重新输入:"
}
}
以前的课设 你看看吧 纯手工的~~
另外,站长团上有产品团购,便宜有保证
一般情况这种系统需要用数据库。如果不用数据库,那么要用文件存储信息。1.学生信息:其实信息很多,名字,性别,系,级,入学时间,…………………………
2.挂失:要记录挂失时间,是否取消挂失,取罩核消时间等等
3.充钱:充钱时间,是否卜孙代充,充钱人,多少钱型闷链等
4.消费:支出金额,支出地点(终端机),是否透支等
5.借书:借书时间,书代码,还书时间,是否逾期,逾期滞纳金……
综上所述,这个程序不是50-100行能做完的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)