C语言高手请进!!跪求一篇课程设计!!急急急!!可追加分!!!

2024-11-26 23:34:13
推荐回答(2个)
回答1:

想实现功能,还限制代码。我觉得你这不是课程设计,是擂台赛啊~

由于你的要求写的不是很详细,所以我就按照我的理解设计,如果代码不能用,那可不能怪我啊。

不过这个代码为了满足你的“苛刻”要求,精简了很多,也有很多地方用了不合理的设计方法。如果工作你要是敢这么写代码,你会马上被开除的。

这个题目实际上就是最简单的数据添加,修改和删除。这些都是编程基础。

// 为了减少代码量,程序没有对数据进行足够的校验。
#include
#include
#include

#define CARD_MAX_NUMBER 100

struct str_card_info {
int attrib; // 公交卡属性。=0:未用/已注销;=1:正常;=2:已挂失。
char id[32]; // 公交卡编号
char name[32]; // 姓名
int money; // 金额
};

int main()
{
int i, j, ch, money;
char id[32];
struct str_card_info card[CARD_MAX_NUMBER];

memset(&card, 0, sizeof(card)); // 初始化数据。

begin:
printf("1. Add new card.\n2. Add money.\n3. Delete card.\n4. Block card.\n5. List.\n6. Exit.\nPlease select:"); // 打印菜单。
ch = getchar(); // 读取用户输入。
if (ch == '1') { // 录入
for (i=0; i if (card[i].attrib == 0)
break;
}
if (i == CARD_MAX_NUMBER) {
printf("The data is full.\n");
getchar();
goto begin;
}
printf("Please input id,name and money:\n");
// 读取用户输入数据。我们应该在读取完毕后,对用户输入数据进行校验。
scanf("%s\n%s\n%d", card[i].id, card[i].name, &card[i].money);
card[i].attrib = 1;
printf("Add success.\n");
} else
if (ch == '2') {
printf("Please input id and money:\n");
// 读取用户输入数据。我们应该在读取完毕后,对用户输入数据进行校验。
scanf("%s\n%d", id, &money);
// 遍历结构体,查找指定的公交卡。
for (i=0; i if (strcmp(card[i].id, id) == 0) { // 找到公交卡。
if (card[i].attrib == 1) {
card[i].money += money; // 如果不校验数据,用户输入个负值,嘿嘿~
printf("Add money success.\n");
} else {
printf("The card not exist or blocked.\n");
}
getchar();
goto begin;
}
}
printf("Not find the card:%s.\n", id);
} else
if (ch == '3') {
printf("Please input id:");
// 读取用户输入数据。我们应该在读取完毕后,对用户输入数据进行校验。
scanf("%s", id);
// 遍历结构体,查找指定的公交卡。
for (i=0; i if (strcmp(card[i].id, id) == 0) { // 找到公交卡。
card[i].attrib = 0;
break;
}
}
printf("Finished.\n");
} else
if (ch == '4') {
printf("Please input id :");
// 读取用户输入数据。我们应该在读取完毕后,对用户输入数据进行校验。
scanf("%s", id);
// 遍历结构体,查找指定的公交卡。
for (i=0; i if (strcmp(card[i].id, id) == 0) { // 找到公交卡。
card[i].attrib = 2;
break;
}
}
printf("Finished.\n");
} else
if (ch == '5') {
// 遍历公交卡。
printf("List:\n");
for (i=0; i if (card[i].attrib == 1) {
printf("\tID:%s, Name:%s, Money:%d.\n", card[i].id, card[i].name, card[i].money);
} else
if (card[i].attrib == 2) {
printf("\tID:%s(Blocked), Name:%s, Money:%d.\n", card[i].id, card[i].name, card[i].money);
}
}
printf("List finished.\n\n");
} else
if (ch == '6') {
return 0;
}
getchar();
goto begin;
}

回答2:

拿两份走人
ps 兰州想一下就知道 至少也要花几十分钟的东西 你悬赏10分 谁tm回写 除非复制粘贴