用C语言中的顺序表完整的编写,编号、企业编号、企业名称、联系电话、谷电量、峰电量、谷价、峰价、年月、合计电量、合计电费等,使的系统能够完成用电情况信息的查询(按照企业编号和企业名称)、更新、插入、删除、排序等功能。
时间: 2023-10-24 21:08:20 浏览: 74
以下是一个简单的用电情况信息管理系统的实现,使用顺序表来存储数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_PHONE_LENGTH 20
#define MAX_ENTRY_COUNT 100
typedef struct {
int id; // 编号
char name[MAX_NAME_LENGTH]; // 企业名称
char phone[MAX_PHONE_LENGTH]; // 联系电话
float off_peak_power; // 谷电量
float peak_power; // 峰电量
float off_peak_price; // 谷价
float peak_price; // 峰价
int year_month; // 年月
float total_power; // 合计电量
float total_cost; // 合计电费
} Entry;
Entry entries[MAX_ENTRY_COUNT]; // 用电情况信息数组
int entry_count = 0; // 当前用电情况信息数量
// 查询企业编号或名称包含指定关键字的用电情况信息
void search(char* keyword) {
printf("查询结果:\n");
for (int i = 0; i < entry_count; i++) {
if (strstr(entries[i].name, keyword) != NULL ||
entries[i].id == atoi(keyword)) {
printf("编号:%d,企业名称:%s,联系电话:%s,合计电量:%.2f,合计电费:%.2f\n",
entries[i].id, entries[i].name, entries[i].phone,
entries[i].total_power, entries[i].total_cost);
}
}
}
// 更新指定编号的用电情况信息
void update(int id) {
for (int i = 0; i < entry_count; i++) {
if (entries[i].id == id) {
printf("请输入企业名称:");
scanf("%s", entries[i].name);
printf("请输入联系电话:");
scanf("%s", entries[i].phone);
printf("请输入谷电量:");
scanf("%f", &entries[i].off_peak_power);
printf("请输入峰电量:");
scanf("%f", &entries[i].peak_power);
printf("请输入谷价:");
scanf("%f", &entries[i].off_peak_price);
printf("请输入峰价:");
scanf("%f", &entries[i].peak_price);
printf("请输入年月(如202201):");
scanf("%d", &entries[i].year_month);
entries[i].total_power = entries[i].off_peak_power + entries[i].peak_power;
entries[i].total_cost = entries[i].off_peak_power * entries[i].off_peak_price +
entries[i].peak_power * entries[i].peak_price;
printf("更新成功!\n");
return;
}
}
printf("未找到指定编号的用电情况信息。\n");
}
// 插入一条用电情况信息
void insert() {
if (entry_count >= MAX_ENTRY_COUNT) {
printf("用电情况信息已满,无法插入。\n");
return;
}
Entry new_entry;
printf("请输入编号:");
scanf("%d", &new_entry.id);
printf("请输入企业名称:");
scanf("%s", new_entry.name);
printf("请输入联系电话:");
scanf("%s", new_entry.phone);
printf("请输入谷电量:");
scanf("%f", &new_entry.off_peak_power);
printf("请输入峰电量:");
scanf("%f", &new_entry.peak_power);
printf("请输入谷价:");
scanf("%f", &new_entry.off_peak_price);
printf("请输入峰价:");
scanf("%f", &new_entry.peak_price);
printf("请输入年月(如202201):");
scanf("%d", &new_entry.year_month);
new_entry.total_power = new_entry.off_peak_power + new_entry.peak_power;
new_entry.total_cost = new_entry.off_peak_power * new_entry.off_peak_price +
new_entry.peak_power * new_entry.peak_price;
entries[entry_count++] = new_entry;
printf("插入成功!\n");
}
// 删除指定编号的用电情况信息
void delete(int id) {
for (int i = 0; i < entry_count; i++) {
if (entries[i].id == id) {
for (int j = i; j < entry_count - 1; j++) {
entries[j] = entries[j + 1];
}
entry_count--;
printf("删除成功!\n");
return;
}
}
printf("未找到指定编号的用电情况信息。\n");
}
// 按照编号排序
void sort_by_id() {
for (int i = 0; i < entry_count - 1; i++) {
for (int j = i + 1; j < entry_count; j++) {
if (entries[i].id > entries[j].id) {
Entry temp = entries[i];
entries[i] = entries[j];
entries[j] = temp;
}
}
}
printf("按照编号排序成功!\n");
}
// 按照企业名称排序
void sort_by_name() {
for (int i = 0; i < entry_count - 1; i++) {
for (int j = i + 1; j < entry_count; j++) {
if (strcmp(entries[i].name, entries[j].name) > 0) {
Entry temp = entries[i];
entries[i] = entries[j];
entries[j] = temp;
}
}
}
printf("按照企业名称排序成功!\n");
}
int main() {
int option;
while (1) {
printf("请选择操作:\n");
printf("1. 查询\n");
printf("2. 更新\n");
printf("3. 插入\n");
printf("4. 删除\n");
printf("5. 按照编号排序\n");
printf("6. 按照企业名称排序\n");
printf("7. 退出\n");
scanf("%d", &option);
switch (option) {
case 1:
printf("请输入关键字:");
char keyword[MAX_NAME_LENGTH];
scanf("%s", keyword);
search(keyword);
break;
case 2:
printf("请输入编号:");
int id;
scanf("%d", &id);
update(id);
break;
case 3:
insert();
break;
case 4:
printf("请输入编号:");
int delete_id;
scanf("%d", &delete_id);
delete(delete_id);
break;
case 5:
sort_by_id();
break;
case 6:
sort_by_name();
break;
case 7:
printf("谢谢使用!\n");
return 0;
default:
printf("无效的选项。\n");
break;
}
}
}
```
以上是一个简单的实现,可以根据需要进行修改和扩展。
阅读全文