您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
随着信息技术的不断发展,学生个人消费管理系统的需求日益增加。通过C语言实现一个简单而高效的学生个人消费管理系统,不仅可以帮助学生更好地管理自己的消费记录,还能为学校提供数据支持,以便进行消费行为的分析和统计。本文将详细介绍如何使用C语言设计和实现一个学生个人消费管理系统。
在设计和实现学生个人消费管理系统之前,首先需要进行详细的需求分析。需求分析的主要目的是明确系统的功能需求和非功能需求,确保系统能够满足用户的实际需求。
学生个人消费管理系统采用模块化设计,主要分为以下几个模块:
typedef struct {
char id[20]; // 学号
char name[50]; // 姓名
char gender[10];// 性别
int age; // 年龄
} Student;
typedef struct {
char id[20]; // 消费记录ID
char student_id[20];// 学号
char time[20]; // 消费时间
float amount; // 消费金额
char type[50]; // 消费类型
} Consumption;
void add_student(Student students[], int *count) {
Student student;
printf("请输入学号: ");
scanf("%s", student.id);
printf("请输入姓名: ");
scanf("%s", student.name);
printf("请输入性别: ");
scanf("%s", student.gender);
printf("请输入年龄: ");
scanf("%d", &student.age);
students[(*count)++] = student;
printf("学生信息添加成功!\n");
}
void delete_student(Student students[], int *count, char id[]) {
int index = -1;
for (int i = 0; i < *count; i++) {
if (strcmp(students[i].id, id) == 0) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < *count - 1; i++) {
students[i] = students[i + 1];
}
(*count)--;
printf("学生信息删除成功!\n");
} else {
printf("未找到该学生信息!\n");
}
}
void modify_student(Student students[], int count, char id[]) {
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
index = i;
break;
}
}
if (index != -1) {
printf("请输入新的姓名: ");
scanf("%s", students[index].name);
printf("请输入新的性别: ");
scanf("%s", students[index].gender);
printf("请输入新的年龄: ");
scanf("%d", &students[index].age);
printf("学生信息修改成功!\n");
} else {
printf("未找到该学生信息!\n");
}
}
void query_student(Student students[], int count, char id[]) {
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
index = i;
break;
}
}
if (index != -1) {
printf("学号: %s\n", students[index].id);
printf("姓名: %s\n", students[index].name);
printf("性别: %s\n", students[index].gender);
printf("年龄: %d\n", students[index].age);
} else {
printf("未找到该学生信息!\n");
}
}
void add_consumption(Consumption consumptions[], int *count, Student students[], int student_count) {
Consumption consumption;
printf("请输入学号: ");
scanf("%s", consumption.student_id);
int index = -1;
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].id, consumption.student_id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生信息!\n");
return;
}
printf("请输入消费记录ID: ");
scanf("%s", consumption.id);
printf("请输入消费时间: ");
scanf("%s", consumption.time);
printf("请输入消费金额: ");
scanf("%f", &consumption.amount);
printf("请输入消费类型: ");
scanf("%s", consumption.type);
consumptions[(*count)++] = consumption;
printf("消费记录添加成功!\n");
}
void delete_consumption(Consumption consumptions[], int *count, char id[]) {
int index = -1;
for (int i = 0; i < *count; i++) {
if (strcmp(consumptions[i].id, id) == 0) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < *count - 1; i++) {
consumptions[i] = consumptions[i + 1];
}
(*count)--;
printf("消费记录删除成功!\n");
} else {
printf("未找到该消费记录!\n");
}
}
void modify_consumption(Consumption consumptions[], int count, char id[]) {
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(consumptions[i].id, id) == 0) {
index = i;
break;
}
}
if (index != -1) {
printf("请输入新的消费时间: ");
scanf("%s", consumptions[index].time);
printf("请输入新的消费金额: ");
scanf("%f", &consumptions[index].amount);
printf("请输入新的消费类型: ");
scanf("%s", consumptions[index].type);
printf("消费记录修改成功!\n");
} else {
printf("未找到该消费记录!\n");
}
}
void query_consumption(Consumption consumptions[], int count, char student_id[]) {
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(consumptions[i].student_id, student_id) == 0) {
printf("消费记录ID: %s\n", consumptions[i].id);
printf("消费时间: %s\n", consumptions[i].time);
printf("消费金额: %.2f\n", consumptions[i].amount);
printf("消费类型: %s\n", consumptions[i].type);
found = 1;
}
}
if (!found) {
printf("未找到该学生的消费记录!\n");
}
}
void total_consumption(Consumption consumptions[], int count, char student_id[]) {
float total = 0;
for (int i = 0; i < count; i++) {
if (strcmp(consumptions[i].student_id, student_id) == 0) {
total += consumptions[i].amount;
}
}
printf("学生 %s 的消费总额为: %.2f\n", student_id, total);
}
void consumption_type_statistics(Consumption consumptions[], int count, char student_id[]) {
char types[100][50];
float amounts[100] = {0};
int type_count = 0;
for (int i = 0; i < count; i++) {
if (strcmp(consumptions[i].student_id, student_id) == 0) {
int found = 0;
for (int j = 0; j < type_count; j++) {
if (strcmp(types[j], consumptions[i].type) == 0) {
amounts[j] += consumptions[i].amount;
found = 1;
break;
}
}
if (!found) {
strcpy(types[type_count], consumptions[i].type);
amounts[type_count] += consumptions[i].amount;
type_count++;
}
}
}
printf("学生 %s 的消费类型统计:\n", student_id);
for (int i = 0; i < type_count; i++) {
printf("消费类型: %s, 消费金额: %.2f\n", types[i], amounts[i]);
}
}
void consumption_time_statistics(Consumption consumptions[], int count, char student_id[]) {
char times[100][20];
float amounts[100] = {0};
int time_count = 0;
for (int i = 0; i < count; i++) {
if (strcmp(consumptions[i].student_id, student_id) == 0) {
int found = 0;
for (int j = 0; j < time_count; j++) {
if (strcmp(times[j], consumptions[i].time) == 0) {
amounts[j] += consumptions[i].amount;
found = 1;
break;
}
}
if (!found) {
strcpy(times[time_count], consumptions[i].time);
amounts[time_count] += consumptions[i].amount;
time_count++;
}
}
}
printf("学生 %s 的消费时间统计:\n", student_id);
for (int i = 0; i < time_count; i++) {
printf("消费时间: %s, 消费金额: %.2f\n", times[i], amounts[i]);
}
}
void save_data(Student students[], int student_count, Consumption consumptions[], int consumption_count) {
FILE *file = fopen("data.txt", "w");
if (file == NULL) {
printf("文件打开失败!\n");
return;
}
fprintf(file, "%d\n", student_count);
for (int i = 0; i < student_count; i++) {
fprintf(file, "%s %s %s %d\n", students[i].id, students[i].name, students[i].gender, students[i].age);
}
fprintf(file, "%d\n", consumption_count);
for (int i = 0; i < consumption_count; i++) {
fprintf(file, "%s %s %s %.2f %s\n", consumptions[i].id, consumptions[i].student_id, consumptions[i].time, consumptions[i].amount, consumptions[i].type);
}
fclose(file);
printf("数据保存成功!\n");
}
void load_data(Student students[], int *student_count, Consumption consumptions[], int *consumption_count) {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("文件打开失败!\n");
return;
}
fscanf(file, "%d", student_count);
for (int i = 0; i < *student_count; i++) {
fscanf(file, "%s %s %s %d", students[i].id, students[i].name, students[i].gender, &students[i].age);
}
fscanf(file, "%d", consumption_count);
for (int i = 0; i < *consumption_count; i++) {
fscanf(file, "%s %s %s %f %s", consumptions[i].id, consumptions[i].student_id, consumptions[i].time, &consumptions[i].amount, consumptions[i].type);
}
fclose(file);
printf("数据读取成功!\n");
}
经过详细的测试,系统能够正常运行,并且所有功能均符合预期。系统在性能、安全性和可维护性方面也表现良好。
本文详细介绍了如何使用C语言设计和实现一个学生个人消费管理系统。通过需求分析、系统设计、系统实现和系统测试,我们成功地开发了一个功能完善、性能良好的学生个人消费管理系统。未来
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。