急急急!!!高分悬赏!!用C++编写软件,3选一,要原创的,喜欢复制粘贴的不要进,满意的追加100分

1,用C语言编写一个通讯录管理系统软件,要求能实现

增加新记录
删除记录
显示通讯录的所有信息
按名字查询信息
保存通讯录
保存于文件供输出或打印
其中,输入的每条记录包括有姓名(name )、街道(street)、城市(city)、邮编(eip)、国家(state)五项。
基本函数结构struct address{
char name[20];
char street[20];
char city[10];
char state[10];
char eip[7];
};可以用双向链表,也可以用数组(要防止越界问题)
主要函数原型
menu_select(); /*主菜单函数*/
add();/*输入记录*/
display();/*浏览记录*/
delete();/*按名字删除记录*/
search();/*按姓名查找显示记录*/
save();/*记录保存为文件*/
load();/*加载文件*/
list();/*显示所有记录*/
主要流程控制
switch(表达式)
{
case 常量表达式1:语句1
case 常量表达式2:语句2

case 常量表达式n:语句n
}
2编写一个模拟计算器的程序,可以支持30位数以内的4则运算。具体要求是

用户输入若干数字作为第一个算子
接下来输入+-*/之一作为算符,若输入多个算符,以最后一个算符为准。
接下来再输入若干数字所谓第二个算子
计算上述表达式的值。若输入结束则本次计算结束,询问用户是否需要继续。
若输入没有结束,则回到第二步。
设计思路
c语言中的long类型最大能表示约20位的10进制整数,因此不能直接用long类型来存放计算器中的数据。
应该自定义一个大数类型,并分别编写这种大数类型的4则运算函数。
用循环语句提示用户输入一个表达式或则退出程序。
如果用户输入的表达式不正确,例如包括字母,则给出错误提示。
取自"http://cs.bigc.edu.cn/wiki/index.php/%E8%AE%A1%E7%AE%97%E5%99%A8%E8%BD%AF%E4%BB%B6"
3,
编写一个能随机声称N*N的迷宫程序,具体要求如下:

(用N*N的矩阵表示迷宫,其中用0表示可以通过,用1表示不能通过,用X表示人物当)前所在位置。数组的上下边界必须全为1,表示迷宫的范围;左右边界各有且仅有一个0分别表示入口和出口,其他位置全为1。
必须保证至少存在一条从入口到达出口的通路。
迷宫生成后人物处于入口处。
用户输入1、2、3、4分别表示要人物向右、上、左、下移动一格。如果那个格子能够到达(对应数组是0且没有越过数组边界)则改变人物当前所在位置;如果不能到达,则提示用户此路不通。打印更新后的迷宫状态。
当人物到达出口时打印祝贺用户胜利信息。
设计思路
计的重点是如何随机生成一个至少有一条从入口到出口的通路的迷宫。一个简单的方法如下:

将整个数组用1填充。
随机选择左边界的一个位置,将该位置设置为0,作为入口,并将当前位置设置为这个坐标。
生成一个1-4内的随机数,尝试到达对应的位置。
如果对应位置为不是上、下、左边界,则将对应位置的数字改为0;否则重新生成随机数。
如果是右边界,则算法结束,已经生成了一个有通路的迷宫。否则将该位置设置为当前位置,继续3
答案最好做成Word文档,发到我的邮箱lkl713@sina.com.cn

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct address
{
char name[20];
char street[20];
char city[10];
char state[10];
char eip[7];
} Address;

static struct
{
Address* p;
int n;
int cap;
} record = {0, 0, 0};

void init()
{
record.cap = 10;
record.n= 0;
record.p = (Address*)malloc(sizeof(Address)* record.cap);
}

void remalloc()
{
record.cap += 10;
record.p = (Address*)realloc(record.p, sizeof(Address)* record.cap);
}
void destroy()
{
if(record.p != 0)
free(record.p);
}
int menu_select()
{
int nsel = 0;
printf("\t通讯录管理系统软件V1.0\n");
printf("1 增加新记录\n2 删除记录\n3 显示通讯录的所有信息\n");
printf("4 按名字查询信息\n5 保存通讯录\n0 退出\n");
scanf("%d", &nsel);
return nsel;
}

void add()
{
Address tmp;
char flag;
if(record.cap == 0)
init();
printf("增加新记录\n输入姓名、街道、城市、国家、邮编(以空格分隔)\n");
while(1)
{
printf("是否继续?Y(y)/N(n)\n");
fflush(stdin);
scanf("%c", &flag);
if(flag != 'Y' && flag != 'y')
break;
scanf("%s %s %s %s %s", &tmp.name, &tmp.street, &tmp.city, &tmp.state, &tmp.eip);
if(record.n == record.cap)
remalloc();
memcpy(record.p + record.n, &tmp, sizeof(Address));
record.n++;
}
}
void deleteData()
{
char name[20];
char flag;
int ndel = 0;
printf("按姓名删除记录\n输入要删除的姓名\n");
while(1)
{
int i = 0;
printf("是否继续?Y(y)/N(n)\n");
fflush(stdin);
scanf("%c", &flag);
if(flag != 'Y' && flag != 'y')
break;
scanf("%s", name);
for( ; i < record.n; i++)
{
if(strcmp(name, record.p[i].name) == 0)
{
if(i != record.n - 1)
{
memmove(record.p + i, record.p + i + 1,
sizeof(Address) * (record.n - i - 1));
}
record.n--;
ndel++;
}
}
if(ndel == 0)
printf("通讯录中没有%s的记录\n", name);
else
printf("通讯录中共删除了%d条记录\n", ndel);
}
}

void printdata(FILE* stream, int i)
{
Address* ptr = record.p;
fprintf(stream, "%s\t%s\t%s\t%s\t%s\n", ptr[i].name, ptr[i].street,
ptr[i].city, ptr[i].state, ptr[i].eip);
}
void display()
{
int i = 0;
printf("显示通讯录的所有信息\n");
printf("姓名\t街道\t城市\t国家\t邮编\n");
for( ; i < record.n; i++)
printdata(stdout, i);

}

void searchData()
{
char name[20];
char flag;
int nsear = 0;
printf("按姓名查找显示记录\n输入要查找的姓名\n");
while(1)
{
int i = 0;
printf("是否继续?Y(y)/N(n)\n");
fflush(stdin);
scanf("%c", &flag);
if(flag != 'Y' && flag != 'y')
break;
scanf("%s", name);
for( ; i < record.n; i++)
{
if(strcmp(name, record.p[i].name) == 0)
{
if(nsear == 0)
printf("姓名\t街道\t城市\t国家\t邮编\n");
printdata(stdout, i);
nsear++;
}
}
if(nsear == 0)
printf("通讯录中没有%s的记录\n", name);
else
printf("通讯录中共查找到%d条记录\n", nsear);
}
}

void save()
{
FILE* pf = fopen("data.txt", "w");
int i = 0;
for( ; i < record.n; i++)
printdata(pf, i);
fclose(pf);
}

void load()
{
Address tmp;
FILE* pf = fopen("data.txt", "r");
if(record.cap == 0)
init();
while(fscanf(pf, "%s %s %s %s %s", &tmp.name, &tmp.street,
&tmp.city, &tmp.state, &tmp.eip) != -1)
{
if(record.n == record.cap)
remalloc();
memcpy(record.p + record.n, &tmp, sizeof(Address));
record.n++;
}
}

void list()
{
display();
}
int main()
{
int ret;
load();
while((ret = menu_select()) != 0)
{
switch(ret)
{
case 0: break;
case 1: add(); break;
case 2: deleteData(); break;
case 3: display(); break;
case 4: searchData(); break;
case 5: save(); break;
}
}
destroy();
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-14
说实话,给1000分一般人都得考虑下。
第2个回答  2010-09-14
我有当年作业学生信息管理系统 和 职工信息管理系统,大一课程设计作业,自己写的,很简单的,用数组,基本功能都差不多,要得话你自己改改。
第3个回答  2010-09-14
分有何用?给钱才做,可以联系看ID
相似回答