设计一系统,实现医药公司定期对各药品的销售记录进行统计,并按药品编号、单价、销售量或销售额做出排序。 2.设计分析 在设计中,首先从数据文件读出各药品的信息记录,存储在顺序表中。各药品的信息包括:药品编号、药品名称、单价、销售量、销售额。其中药品编号共4位,采用字母和数字混合编号,如:B125,前一位为大写字母,后三位为数字。 3.存储结构类型定义 ①药品信息的存储结构类型定义 typedef struct node{ char num[4]; /*药品编号*/ char name[10]; /*药品名称*/ float price; /*单价*/ int count; /*销售量*/ float sale; /*销售额*/ }DataType; ②存储药品信息的顺序表的定义 typedef struct{ DataType r[maxsize]; int length; }sequenList;
时间: 2024-02-09 18:10:27 浏览: 72
好的,针对您的需求,我们可以设计一个系统,实现医药公司定期对各药品的销售记录进行统计,并按药品编号、单价、销售量或销售额做出排序。以下是一个简单的设计分析:
1. 定义一个结构体 DataType,用于存储药品信息,包括药品编号、药品名称、单价、销售量、销售额;
2. 定义一个顺序表 sequenList,用于存储所有药品的信息记录;
3. 读取数据文件,将各药品的信息记录存储在 sequenList 中;
4. 设计四个排序函数,分别按药品编号、单价、销售量、销售额进行排序;
5. 在每次统计时,调用对应的排序函数,将药品信息按照指定方式排序,并输出统计结果。
以下是一个简单的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxsize 100
typedef struct node{
char num[4]; /*药品编号*/
char name[10]; /*药品名称*/
float price; /*单价*/
int count; /*销售量*/
float sale; /*销售额*/
}DataType;
typedef struct{
DataType r[maxsize];
int length;
}sequenList;
void read_data_file(sequenList* list);
void sort_by_num(sequenList* list);
void sort_by_price(sequenList* list);
void sort_by_count(sequenList* list);
void sort_by_sale(sequenList* list);
int main() {
sequenList list;
list.length = 0;
read_data_file(&list);
sort_by_num(&list);
sort_by_price(&list);
sort_by_count(&list);
sort_by_sale(&list);
return 0;
}
void read_data_file(sequenList* list) {
FILE* fp;
DataType data;
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("Failed to read data file.\n");
exit(1);
}
while (fscanf(fp, "%s %s %f %d %f", data.num, data.name, &data.price, &data.count, &data.sale) != EOF) {
list->r[list->length++] = data;
}
fclose(fp);
}
void sort_by_num(sequenList* list) {
int i, j;
DataType temp;
for (i = 0; i < list->length; i++) {
for (j = i + 1; j < list->length; j++) {
if (strcmp(list->r[i].num, list->r[j].num) > 0) {
temp = list->r[i];
list->r[i] = list->r[j];
list->r[j] = temp;
}
}
}
printf("Sort by num:\n");
for (i = 0; i < list->length; i++) {
printf("%s %s %.2f %d %.2f\n", list->r[i].num, list->r[i].name, list->r[i].price, list->r[i].count, list->r[i].sale);
}
}
void sort_by_price(sequenList* list) {
int i, j;
DataType temp;
for (i = 0; i < list->length; i++) {
for (j = i + 1; j < list->length; j++) {
if (list->r[i].price > list->r[j].price) {
temp = list->r[i];
list->r[i] = list->r[j];
list->r[j] = temp;
}
}
}
printf("Sort by price:\n");
for (i = 0; i < list->length; i++) {
printf("%s %s %.2f %d %.2f\n", list->r[i].num, list->r[i].name, list->r[i].price, list->r[i].count, list->r[i].sale);
}
}
void sort_by_count(sequenList* list) {
int i, j;
DataType temp;
for (i = 0; i < list->length; i++) {
for (j = i + 1; j < list->length; j++) {
if (list->r[i].count > list->r[j].count) {
temp = list->r[i];
list->r[i] = list->r[j];
list->r[j] = temp;
}
}
}
printf("Sort by count:\n");
for (i = 0; i < list->length; i++) {
printf("%s %s %.2f %d %.2f\n", list->r[i].num, list->r[i].name, list->r[i].price, list->r[i].count, list->r[i].sale);
}
}
void sort_by_sale(sequenList* list) {
int i, j;
DataType temp;
for (i = 0; i < list->length; i++) {
for (j = i + 1; j < list->length; j++) {
if (list->r[i].sale > list->r[j].sale) {
temp = list->r[i];
list->r[i] = list->r[j];
list->r[j] = temp;
}
}
}
printf("Sort by sale:\n");
for (i = 0; i < list->length; i++) {
printf("%s %s %.2f %d %.2f\n", list->r[i].num, list->r[i].name, list->r[i].price, list->r[i].count, list->r[i].sale);
}
}
```
需要注意的是,以上代码仅为示例代码,可能存在实际应用中需要优化的地方。
阅读全文