如果用VC + 数据库的话就简单多了,可楼上要用C就只好用结构体了,(仿照交通局的数据库信息)
1)车辆信息
typedef struct _clxx
{
char CPH[10]//车牌号
char CLLX//车辆类型
char WFCS//违法次数
//... //其它信息自己定义
char ZT//状肢信态,0正常, 1修改, 2删除
}CLXX
2)违法信息
typedef struct _wfxx
{
char CPH[10]//车牌号
char WFSJ[8]//违法时间
char WFDD[100]//违法地点
char WFMS[100]//违法描述
//...//其它信息
}WFXX
车辆信息可放在文件clxx.txt中,格式自定义,保证读写一致就行了
违法信息可放在文件wfxx.txt中
然后可以定义全局变量
CLXX *g_clxx//存放所有车辆信息
int g_nClxxCapacity//存放所有车辆信息的空间大小,不够就用realloc加
int g_nClxxCount//目前车辆信息条数
WFXX *g_wfxx
int g_nWfxxCapacity
int g_nWfxxCount
主要函数如下:
int Init()//初始化数据,把clxx.txt和wfxx.txt的内容装入g_clxx和g_wfxx中
int query(const char *cph)//查询
int alter(const CLXX *clxx)//修改
int delete(int idx/*索引号或 CLXX*/)//歼饥李删除
int add(const CLXX *clxx)//添加
实现上面几个函数就差不多了,其它可自由添加.以上仅供参考!
一个一模一样的,我COPY过来,勿怪...实在是一样//晌仿注释删除掉 以及 中文用不了之外
其他是一样的,那边也是要求C语言编,的确一样.
//VC++6.0下调试通过
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
typedef enum {s_park=1, s_speed, s_signal, s_other} SheetType
typedef enum {f_id, f_car, f_driver, f_police} FindType
typedef struct Sheet
{
signed long id//罚单号
char carNo[20]//车牌号
char driver[20]//司机名
char police[20]//警察编号
SheetType type//罚单类型
tm time//出单日期
}Sheet
typedef struct Node
{
Sheet data
Node* next
}Node
static Node* begin=NULL//哨兵结点
static signed long len=0//链表长度
void printMenu()//打印菜单
void printBye()//打印退出界面
void printList(Node* bg)//打印所有罚单信息
void printNode(Sheet sheet)//打印单条罚单
Node* lookupSheet(void* pInfo, signed short* n,
FindType type=f_id)//根据类型查询罚单。成功返回结点。失败NULL
int addNode(Node* bg, Sheet sheet)//添加罚单。成功返回链表长度。内存分配失败0
int deleteNode(signed short stid)//根据罚单号删除罚单。
int total(char* driver, tm date1, tm date2, signed short* icar,
signed short* ispeed, signed short* isignal, signed short* iother)//统计
int getListlen(Node* bg)
void freeList(Node* bg)//释放链表
void main()
{
//初始化链表。
begin=(Node*)malloc(sizeof(Node))
begin->宴消纤next=NULL
printf("----------------------------------------------------------------------------\n")
printf("--- 《交通罚单管理系统》 ---\n")
printf("--- 沙支夸依 2007-12-24 ---\n")
printf("----------------------------------------------------------------------------\n")
printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n")
printMenu()
while (1)
{
fflush(stdin)
char cmd=getchar()
Sheet sheet
memset(&sheet, 0, sizeof(Sheet))
switch (cmd)
{
case '1':
printf("---添加交通处罚单信息。(车牌号为 0 结束)\n")
while (1)
{
printf("请输入违章车辆号: ")
fflush(stdin)
gets(sheet.carNo)
if (!strcmp(sheet.carNo,"0"))
break
printf("请输入违章司机姓名: ")
fflush(stdin)
gets(sheet.driver)
printf("请输入开单交警编号: "桥手)
fflush(stdin)
gets(sheet.police)
printf("请选择违章类型(1-违章停车 2-超速 3-不按信号灯行使 4-其它):")
scanf("%d", &sheet.type)
printf("请输入开单日期(例 2007-12-24): ")
scanf("%d-%d-%d", &sheet.time.tm_year, &sheet.time.tm_mon, &sheet.time.tm_mday)
int succ=addNode(begin, sheet)
if (!succ)
{
printf("内存错误!请重新输入!\n")
}
else
printf("添加成功!当前记录�?%d\n", len)
printf("\n")
}
printMenu()
break
case '2':
printf("---删除交通处罚单信息。(罚单号为 0 结束)\n")
while (1)
{
signed short stid=0
printf("请输入要删除的罚单号:")
scanf("%d", &stid)
if (!stid)
break
Node* delNode=lookupSheet(&stid, NULL)
if (!delNode)
printf("对不起!你要删除的记录不存在。\n")
else
{
printNode(delNode->data)
printf("您确定要删除这条记录吗?(任意键删除/ n 取消)\n")
fflush(stdin)
char cDelete=getchar()
if ('n'==cDelete)
continue
printf("删除成功!剩余记录数: %d\n",deleteNode(stid))
}
printf("\n")
}
printMenu()
break
case '3':
printf("---查询交通处罚单信息。(输入 0 结束)\n")
while (1)
{
printf("请选择查询类型: 1-车辆号 2-司机 3-交警 4-退出\n>>>")
Node* findNode=NULL
int findtype=0
scanf("%d", &findtype)
if (4==findtype)
break
char findInfo[20]
signed short findcout=0
switch (findtype)
{
case 1:
printf("请输入车辆号: ")
fflush(stdin)
gets(findInfo)
findNode=lookupSheet(findInfo, &findcout, f_car)
if (getListlen(findNode)>=5)
{
printf("---该车辆违章超过5次。建议重罚。\n")
}
break
case 2:
printf("请输入司机姓名: ")
fflush(stdin)
gets(findInfo)
findNode=lookupSheet(findInfo, &findcout, f_driver)
if (getListlen(findNode)>=5)
{
printf("---该司机违章超过5次。建议重罚。\n")
}
break
case 3:
default:
printf("请输入交警编号: ")
fflush(stdin)
gets(findInfo)
findNode=lookupSheet(findInfo, &findcout, f_police)
}
if (!findNode)
printf("对不起!你要查询的记录不存在。\n")
else
{
printList(findNode)
freeList(findNode)
}
printf("\n")
}
printMenu()
break
case '4':
printf("---统计司机处罚单信息。(输入 0 结束)\n")
while (1)
{
printf("请输入司机姓名: ")
char driver[20]
fflush(stdin)
gets(driver)
if (!strcmp(driver, "0"))
break
printf("请输入起始日期(如 2007-12-24): ")
tm date1
memset(&date1, 0, sizeof(tm))
scanf("%d-%d-%d", &date1.tm_year, &date1.tm_mon, &date1.tm_mday)
printf("请输入终止日期(如 2007-12-24): ")
tm date2
memset(&date2, 0, sizeof(tm))
scanf("%d-%d-%d", &date2.tm_year, &date2.tm_mon, &date2.tm_mday)
signed short car, speed, signal, other
int sum=total(driver, date1, date2, &car, &speed, &signal, &other)
printf("司机姓名:%-10s 违章停车:%2d 超速:%2d 不按信号灯行使:%2d 其它:%2d 共计:%2d\n",
driver, car, speed, signal, other, car+speed+signal+other)
printf("\n")
}
printMenu()
break
case '5':
printList(begin)
printMenu()
break
case '6':
printf("---修改交通处罚单信息。(输入 0 结束)\n")
while (1)
{
signed short stid=0
printf("请输入要修改的交通处罚单号:")
fflush(stdin)
scanf("%d", &stid)
if (!stid)
break
Node* updataNode=lookupSheet(&stid, NULL)
if (!updataNode)
printf("对不起!你要修改的记录不存在。\n")
else
{
printNode(updataNode->data)
memset(&sheet, 0, sizeof(Sheet))
sheet.id=stid
printf("请修改违章车辆号: ")
fflush(stdin)
gets(sheet.carNo)
printf("请修改违章司机姓名: ")
fflush(stdin)
gets(sheet.driver)
printf("请修改开单交警编号: ")
fflush(stdin)
gets(sheet.police)
printf("请修改违章类型(1-违章停车 2-超速 3-不按信号灯行使 4-其它):")
scanf("%d", &sheet.type)
printf("请修改开单日期(例 2007-12-24): ")
scanf("%d-%d-%d", &sheet.time.tm_year, &sheet.time.tm_mon, &sheet.time.tm_mday)
updataNode->data=sheet
printNode(updataNode->data)
}
printf("\n")
}
printMenu()
break
case '7':
printBye()
freeList(begin)
exit(0)
break
default:
printMenu()
}
}
}
void printMenu()
{
printf("----------------------------------------------------------------------------\n")
printf("--- 1、添加交通处罚单信息。 2、删除交通处罚单信息。 ---\n")
printf("--- 3、查询交通处罚单信息。 4、统计司机处罚单信息。 ---\n")
printf("--- 5、浏览交通处罚单信息。 6、修改交通处罚单信息。 ---\n")
printf("--- 7、退出。 ---\n")
printf("----------------------------------------------------------------------------\n")
printf(">>>")
}
void printBye()
{
printf("----------------------------------------------------------------------------\n")
printf(" 感谢您使用交通罚单管理系统 \n")
printf(" 再 见 \n")
printf("----------------------------------------------------------------------------\n")
}
void printNode(Sheet sheet)
{
char* type=NULL
switch (sheet.type)
{
case s_park:
type="违章停车"
break
case s_speed:
type="超速"
break
case s_signal:
type="不按信号灯行使"
break
case s_other:
default:
type="其它"
}
printf("罚单号:%-6d 车牌号:%-10s 司机名:%-10s 交警名:%-10s\n"
"罚单类型:%-15s 开单日期:%d-%d-%d\n",
sheet.id, sheet.carNo, sheet.driver, sheet.police,
type, sheet.time.tm_year, sheet.time.tm_mon, sheet.time.tm_mday)
printf("--------------------------------------------------------------------------\n")
}
void printList(Node* bg)
{
Node* temp=bg->next
if (!temp)
{
printf("暂时无记录可供浏览!\n")
}
while (temp)
{
printNode(temp->data)
temp=temp->next
}
}
Node* lookupSheet(void* pInfo, signed short* n, FindType type)
{
Node* result=NULL
if (type)
{
result=(Node*)malloc(sizeof(Node))
result->next=NULL
*n=0
}
Node* temp=begin->next
switch (type)
{
case f_id:
while (temp)
{
if (temp->data.id==*(signed long*)pInfo)
{
if (n)
*n=1
return temp
}
temp=temp->next
}
break
case f_car:
while (temp)
{
if (!strcmp(temp->data.carNo,(char*)pInfo))
{
addNode(result, temp->data)
(*n)++
}
temp=temp->next
}
break
case f_driver:
while (temp)
{
if (!strcmp(temp->data.driver,(char*)pInfo))
{
addNode(result, temp->data)
(*n)++
}
temp=temp->next
}
break
case f_police:
while (temp)
{
if (!strcmp(temp->data.police,(char*)pInfo))
{
addNode(result, temp->data)
(*n)++
}
temp=temp->next
}
break
}
return result
}
int addNode(Node* bg, Sheet sheet)
{
Node* temp=(Node*)malloc(sizeof(Node))
if (!temp)
return 0
if (bg==begin)
{
if (bg->next)
{
sheet.id=bg->next->data.id+1
}
else
sheet.id=1
}
temp->data=sheet
temp->next=bg->next
bg->next=temp
return ++len
}
int deleteNode(signed short stid)
{
Node* temp=begin
Node* pos=NULL
while (temp->next)
{
if (temp->next->data.id==stid)
{
pos=temp->next
temp->next=pos->next
free(pos)
return --len
}
temp=temp->next
}
return -1
}
int getListlen(Node* bg)
{
Node* temp=bg
int i=0
while (temp->next)
{
i++
temp=temp->next
}
return i
}
void freeList(Node* bg)
{
Node* temp=NULL
while (bg)
{
temp=bg->next
free(bg)
bg=temp
}
}
int total(char* driver, tm date1, tm date2, signed short* icar,
signed short* ispeed, signed short* isignal, signed short* iother)
{
signed short result=0
*icar=0
*ispeed=0
*isignal=0
*iother=0
Node* findNode=lookupSheet(driver, &result, f_driver)
if (!findNode)
{
free(findNode)
return 0
}
time_t o,n,nw
date1.tm_year-=1900
date2.tm_year-=1900
o=mktime(&date1)
n=mktime(&date2)
if (o<n)
{
time_t tp=o
o=n
n=tp
}
Node* temp=findNode->next
while (temp)
{
tm t=temp->data.time
t.tm_year-=1900
nw=mktime(&t)
if (nw>o||nw<n)
{
temp=temp->next
continue
}
switch (temp->data.type)
{
case 1:
(*icar)++
break
case 2:
(*ispeed)++
break
case 3:
(*isignal)++
break
case 4:
default:
(*iother)++
}
temp=temp->next
}
freeList(findNode)
return result
}
------------------------------------------// 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<<"输入有误,请重新输入:"
}
}
以前的课设 你看看吧 纯手工的~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)