查询商品信息

查询商品信息包括通过键盘录入查询商品编号或商品名称基本信息的功能。根据实际情况,可查询到该商品所有信息。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void search(struct product a[N])
{
char l[20], m;
int x, i;
printf("--------------------------------------------------------------------");
if (input == 1) {
printf("\n请选择查询方式:Q.退出 A.按商品编号 B.按商品名称\n");
getchar();
scanf("%s", &m);
switch (m)
{
case 'a':
case 'A':printf("请输入要查询的商品编号:");
scanf("%d", &x);
for (i = 0; i < n; i++)
{
if (x == a[i].num)
{
printf("\n商品编号\t商品名称\t商品数量\t商品单价\n");
printf("%d\t\t%s\t\t%d\t\t%f\t\t\n", a[i].num, a[i].name, a[i].quantity, a[i].price);
return;
}
}
printf("\n\t\t查无此商品\n");
break;
case 'b':
case 'B':printf("请输入要查询的商品名称:");
scanf("%s", &l);
for (i = 0; i < n; i++)
{
if (strcmp(l, a[i].name) == 0)//比较字符串根据结果返回不同值
{
printf("\n商品编号\t商品名称\t商品数量\t商品单价\n");
printf("%d\t\t%s\t\t%d\t\t%f\t\t\n", a[i].num, a[i].name, a[i].quantity, a[i].price);
return;
}
}
printf("\n\t\t查无此商品\n");
break;
case 'q':
case 'Q':
return;
default:printf("\n\t\t输入错误\n");
}
}
else printf("-------------------------------------------------\n\t\t无可查询的商品信息\n");
return;
}

strcmp

strcmp()函数有两个参数,即要比较的两个字符串。strcmp()函数对两个字符串进行大小写敏感的(case-sensitiVe)和字典式的(lexicographic)比较,并返回下列值之一:

返  回  值         意  义

<0               第一个字符串小于第二个字符串
 0               两个字符串相等    ·
>0               第一个字符串大于第二个字符串

商品信息排序

商品信息排序包括通过键盘录入选择商品编号或商品名称从而进行排序的功能。根据实际情况,可直接观察商品排序后的信息。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
void order(struct product a[N])
{
int i,, j, tmp,mark[N];//标记用于比较排序时的记号处理
char m;
if (input == 1)
{
printf("--------------------------------------------------------------------");
printf("\n请选择:Q.退出 A.按商品名称排序 B.按商品数量排序\n");
getchar();
scanf("%c", &m);
switch (m)
{
case 'a':
case 'A':for (i = 0; i < n; i++)
{
mark[i] = i;
}
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (strcmp(a[mark[j]].name, a[mark[j + 1]].name) > 0)
{
tmp = mark[j];
mark[j] = mark[j + 1];
mark[j + 1] = tmp;
}
}
}
printf("\n商品编号\t商品名称\t商品数量\t商品单价\n");
for (i = 0; i < n; i++)
{
printf("%d\t\t%s\t\t%d\t\t%f\t\t\n", a[mark[i]].num, a[mark[i]].name, a[mark[i]].quantity, a[mark[i]].price);
}
break;
break;
case 'b':
case 'B':for (i = 0; i < n; i++)
{
mark[i] = i;
}
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (a[mark[j]].quantity < a[mark[j + 1]].quantity)
{
tmp = mark[j];
mark[j] = mark[j + 1];
mark[j + 1] = tmp;
}
}
}
printf("\n商品编号\t商品名称\t商品数量\t商品单价\n");
for (i = 0; i < n; i++)
{
printf("%d\t\t%s\t\t%d\t\t%f\t\t\n", a[mark[i]].num, a[mark[i]].name, a[mark[i]].quantity, a[mark[i]].price);
}
break;
case 'q':
case 'Q':
return;
default:printf("\n\t\t输入错误\n");
return;
}
}
else printf("---------------------------------------------------\n\t\t无可排序的商品信息\n");
return;
}