用C语言设计一个学生一卡通账户系统 主要功能:开户、注销、存款、查询、修改个人信息 系统功能说明:个人账户信息包括:卡号、姓名、身份证号或学号、手机号码、专业、登录密码(字母、数字的组合,至少8-16位
时间: 2023-08-31 14:46:04 浏览: 108
好的,以下是一个简单的学生一卡通账户系统的C语言代码示例,包括开户、注销、存款、查询和修改个人信息功能。请注意,此示例仅供参考,实际应用中还需要进行更多的优化和错误处理。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ACCOUNTS 100 // 最大账户数
#define MAX_PASSWORD_LENGTH 16 // 密码最大长度
// 学生账户结构体
typedef struct {
char card_number[20]; // 卡号
char name[20]; // 姓名
char id_number[20]; // 身份证号或学号
char phone_number[20]; // 手机号码
char major[20]; // 专业
char password[MAX_PASSWORD_LENGTH + 1]; // 登录密码
int balance; // 余额
int valid; // 是否有效
} StudentAccount;
StudentAccount accounts[MAX_ACCOUNTS]; // 存储所有账户的数组
int num_accounts = 0; // 当前账户数
// 显示菜单
void show_menu() {
printf("请选择功能:\n");
printf("1. 开户\n");
printf("2. 注销\n");
printf("3. 存款\n");
printf("4. 查询\n");
printf("5. 修改个人信息\n");
printf("6. 退出\n");
}
// 生成新卡号
void generate_card_number(char *card_number) {
sprintf(card_number, "SC%06d", num_accounts + 1);
}
// 开户
void open_account() {
if (num_accounts >= MAX_ACCOUNTS) {
printf("账户已满,无法开户!\n");
return;
}
StudentAccount account;
memset(&account, 0, sizeof(account));
printf("请输入姓名:");
scanf("%s", account.name);
printf("请输入身份证号或学号:");
scanf("%s", account.id_number);
printf("请输入手机号码:");
scanf("%s", account.phone_number);
printf("请输入专业:");
scanf("%s", account.major);
printf("请输入登录密码:");
scanf("%s", account.password);
account.balance = 0;
account.valid = 1;
generate_card_number(account.card_number);
accounts[num_accounts] = account;
num_accounts++;
printf("开户成功!您的卡号是:%s\n", account.card_number);
}
// 注销
void close_account() {
char card_number[20];
printf("请输入要注销的卡号:");
scanf("%s", card_number);
for (int i = 0; i < num_accounts; i++) {
if (strcmp(accounts[i].card_number, card_number) == 0) {
accounts[i].valid = 0;
printf("注销成功!\n");
return;
}
}
printf("未找到该卡号!\n");
}
// 存款
void deposit() {
char card_number[20];
int money;
printf("请输入卡号:");
scanf("%s", card_number);
printf("请输入存款金额:");
scanf("%d", &money);
for (int i = 0; i < num_accounts; i++) {
if (strcmp(accounts[i].card_number, card_number) == 0) {
accounts[i].balance += money;
printf("存款成功!您的余额是:%d\n", accounts[i].balance);
return;
}
}
printf("未找到该卡号!\n");
}
// 查询
void query() {
char card_number[20];
printf("请输入卡号:");
scanf("%s", card_number);
for (int i = 0; i < num_accounts; i++) {
if (strcmp(accounts[i].card_number, card_number) == 0) {
printf("卡号:%s\n", accounts[i].card_number);
printf("姓名:%s\n", accounts[i].name);
printf("身份证号或学号:%s\n", accounts[i].id_number);
printf("手机号码:%s\n", accounts[i].phone_number);
printf("专业:%s\n", accounts[i].major);
printf("余额:%d\n", accounts[i].balance);
return;
}
}
printf("未找到该卡号!\n");
}
// 修改个人信息
void modify_information() {
char card_number[20];
printf("请输入卡号:");
scanf("%s", card_number);
for (int i = 0; i < num_accounts; i++) {
if (strcmp(accounts[i].card_number, card_number) == 0) {
printf("请输入新的手机号码:");
scanf("%s", accounts[i].phone_number);
printf("请输入新的专业:");
scanf("%s", accounts[i].major);
printf("请输入新的登录密码:");
scanf("%s", accounts[i].password);
printf("修改成功!\n");
return;
}
}
printf("未找到该卡号!\n");
}
int main() {
int choice;
while (1) {
show_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
open_account();
break;
case 2:
close_account();
break;
case 3:
deposit();
break;
case 4:
query();
break;
case 5:
modify_information();
break;
case 6:
printf("再见!\n");
exit(0);
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
阅读全文