帮忙做个简单点的c++程序呗,要求如下
发布网友
发布时间:2024-07-07 14:02
我来回答
共4个回答
热心网友
时间:2024-07-09 11:04
//没楼上的简单,但是更完善一些,还有什么问题自己可以测试一下
#define IDL 20
#define NAMEL 20
#define ADDREL 60
enum Sex{male,female};
struct Identify{
char ID[IDL];
char name[NAMEL];
Sex sex;
char addre[ADDREL];
struct {
int year;
int month;
int day;
}date;
};
class IDMSys{
private:
Identify *IDList;
int size;
int csize;
int enlarge;
void printStruct(int index=0){
if(index<0||csize<index)cout<<"节点"<<index<<"没有数据"<<endl;
else {
cout<<IDList[index].ID<<'\t';
cout<<IDList[index].name<<'\t';
//cout<<IDList[index].sex==0? '女':'男'<<'\t';
switch(IDList[index].sex){
case female:cout<<"女"<<'\t';break;
case male:cout<<"男"<<'\t';break;
default:cout<<"性别代码错误!"<<'\t';
}
cout<<IDList[index].date.year<<"年"<<IDList[index].date.month<<"月"<<IDList[index].date.day<<"日"<<'\t';
cout<<IDList[index].addre<<endl;
}
}
void printList(){
if(!csize) {cout<<"没有数据!"<<endl;return;}
else
for(int i=0;i<csize;i++)
printStruct(i);
}
void dataCpy(Identify &aim,Identify sour){
strcpy(aim.ID,sour.ID);
strcpy(aim.name,sour.name);
aim.sex=sour.sex;
aim.date.year=sour.date.year;
aim.date.month=sour.date.month;
aim.date.day=sour.date.day;
strcpy(aim.addre,sour.addre);
}
void addIntoList(Identify id){
if(csize<size){
dataCpy(IDList[csize],id);
csize++;
}
else {
Identify *ide=new Identify[size+enlarge];
for(int i=0;i<size;i++)
dataCpy(ide[i],IDList[i]);
dataCpy(ide[size],id);
size=size+enlarge;
csize++;
delete []IDList;
IDList=ide;
}
}
void addInfo(){
addIntoList(inputInfo());
}
Identify inputInfo(){
Identify id;
cout<<"输入身份证号码:"<<'\t';
cin.getline(id.ID,IDL);
cout<<"输入姓名:"<<'\t';
cin.getline(id.name,NAMEL);
char ch[3];
while(true){
cout<<"输入性别:(男,女)"<<endl;
cin.getline(ch,3);
if(!strcmp(ch,"男")) {id.sex=male;break;}
else if(!strcmp(ch,"女")) {id.sex=female;break;}
cin.clear();
cin.sync();
}
cin.clear();
cin.sync();
bool f=true;
char b[11];
while(f){
cout<<"输入出生年月:(如:1990/12/12)"<<'\t';
cin.getline(b,11);
for(int i=0,j=0;(i==4||i==7||i==10||'0'<=b[i]&&b[i]<='9')&&i<11;i++){
switch(i){
case 0:case 1:case 2: case 3:j=j*10+b[i]-'0';break;
case 4:id.date.year=j;j=0;break;
case 5:case 6: j=j*10+b[i]-'0';break;
case 7:id.date.month=j;j=0;break;
case 8:case 9: j=j*10+b[i]-'0';break;
case 10:id.date.day=j;f=false;break;
default:break;
}
}
cin.clear();
cin.sync();
}
cout<<"输入地址:"<<'\t';
cin.getline(id.addre,ADDREL);
cin.clear();
cin.sync();
return id;
}
void modifyInfo(){
cout<<"输入要修改的身份证号码"<<endl;
char ch[IDL];
cin.getline(ch,IDL);
cin.clear();
cin.sync();
for(int i=0;i<csize;i++){
if(!strcmp(IDList[i].ID,ch)){
Identify id=inputInfo();
IDList[i].date.day=id.date.day;
IDList[i].date.month=id.date.month;
IDList[i].date.year=id.date.year;
strcpy(IDList[i].ID,id.ID);
strcpy(IDList[i].name,id.name);
strcpy(IDList[i].addre,id.addre);
IDList[i].sex=id.sex;
}
}
}
void serachWithID(){
cout<<"输入身份证号码:"<<'\t';
char ch[IDL];
cin.getline(ch,IDL);
cin.clear();
cin.sync();
for(int i=0;i<csize;i++){
if(!strcmp(ch,IDList[i].ID))
printStruct(i);
}
}
void serachWithName(){
cout<<"输入姓名:"<<'\t';
char ch[NAMEL];
cin.getline(ch,NAMEL);
cin.clear();
cin.sync();
for(int i=0;i<csize;i++){
if(!strcmp(ch,IDList[i].name))
printStruct(i);
}
}
void serach(){
char ch;
while(true){
cout<<"选择查找方式:(1.按ID 查找 2.按姓名查找)"<<endl;
cin.get(ch);
cin.clear();
cin.sync();
if((ch-'0')==1) {serachWithID();break;}
else if((ch-'2')==0) {serachWithName();break;}
}
}
void menuePrint(){
cout<<"********1."<<"浏览数据"<<endl;
cout<<"********2."<<"增加数据"<<endl;
cout<<"********3."<<"修改数据"<<endl;
cout<<"********4."<<"查询数据"<<endl;
cout<<"********5."<<"返回本菜单"<<endl;
cout<<"********6."<<"退出"<<endl;
}
int menueChoice(){
char ch;
while(true){
cout<<"您的选择:"<<endl;
cin.get(ch);
cin.clear();
cin.sync();
if('0'<ch&&ch<'7') return (ch-'0');
}
}
public:
IDMSys(int s=20){
if(s<=0){s=20;cout<<"大小有误重置为20"<<endl;}
size=s;
IDList=new Identify[size];
csize=0;
enlarge=20;
}
IDMSys(IDMSys &idm){
size=idm.size;
IDList=new Identify[size];
csize=idm.csize;
for(int i=0;i<csize;i++){
IDList[i]=idm.IDList[i];
}
enlarge=idm.enlarge;
}
void menueRun(){
menuePrint();
int i=menueChoice();
while(i!=6){
switch(i){
case 1:printList();break;
case 2:addInfo();break;
case 3:modifyInfo();break;
case 4:serach();break;
case 5:menuePrint();break;
default:break;
}
i=menueChoice();
}
cout<<"谢谢使用!"<<endl;
}
~IDMSys(){
delete []IDList;
//cout<<" "<<endl;
}
};
void main(){
IDMSys test=IDMSys();
test.menueRun();
system("pause");
}
热心网友
时间:2024-07-09 11:05
#include<iostream>
#include<string>
using namespace std;
class SFZ
{
private:
char id[20];
char name[20];
bool sex;
char address[100];
int yx;
public:
SFZ(){}
char *getid()//查询id
{
return id;
}
friend class POL;
char *jud()//判断男女
{
if(sex==true) return "male";
else return "female";
}
void set(char i[],char na[],bool s,char add[],int y)//插入
{
strcpy(id,i);
strcpy(name,na);
sex=s;
strcpy(address,add);
yx=y;
}
void prin()//显示
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<jud()<<endl;
cout<<"ID:"<<id<<endl;
cout<<"address:"<<address<<endl;
cout<<"year limit:"<<yx<<endl;
}
};
int main()
{
SFZ sfz[100],*p;
sfz[0].set("1402021963012356899","zhangsan",true,"datong in china",50);//插入数值
sfz[0].prin();//显示
char i[100];
cout<<sfz[0].getid();
//查询id
cin>>i;
if(!strcmp(i,sfz[0].getid())) cout<<"right!";
return 0;
}
//大体这样,具体自己改改
热心网友
时间:2024-07-09 11:05
我看你最好还是自己看一下书来写,只需要了解些基本的就可以把这个程序写出来了,如果实在不行大部分地方用C语言就可以搞定了。一般“假期回去补”这种话都是空话。
热心网友
时间:2024-07-09 11:06
这还简单?????有些了大学四年学完可能都不会编这个简单的。我想应该是文件的处理那块的。