printf(\、统计所有物品的总价。 \\n\ printf(\、实现物品的出库。 \\n\ printf(\、实现物品库存信息的修改功能。 \\n\ printf(\、退出。 \\n\
printf(\ printf(\
printf(\
printf(\请从条件1、2、3、4、5、6、7、8、9中选择一个满足您所需的条件\\n\
printf(\;
printf(\请输入正确的操作编号:\
scanf(\
printf(\;
if(n==9) exit(0);
switch(n) /*选择使用不同的函数来实现不同的功能*/ {
case 1 : detail(str1);break;/*调用前面已定义的函数;数组名str作为实参
*/
case 2 : lack(str1);break;/*break的作用是强制地跳出switch语句体*/
case 3 : all(str1);break; case 4 : ad(str1);break; case 5 : td(str1);break; case 6 : ap();break;
case 7 : out(str1);break; case 8 : change();break;
default:printf(\您输入的不正确 !!!\\n\\n\若没按要求输入条件,就执行此
语句*/
5
}
goto loop;/*若没按要求输入条件,则转移至loop构成循环;否则不执行goto语 2).从文件中读出库存信息以及将文件写进结构体
main() /*文件读取库存数据*/ {
FILE *fp1; /*定义文件指针变量*/
if((fp1=fopen(\ /*判断文件是否能打开*/ { printf(\ exit(0); /*表示正常退出该系统*/ }
fgets(str1,100,fp1);
for(i=0;i fscanf(fp1,\字符串数组前面不能加取地址符号*/ fclose(fp1); /*关闭打开的文件*/} 3).实现函数功能的思路: a. void main() 通过显示一个主菜单选项,选择其中的条件实现不同的功能,当用户如入的条件不满足显示的条件时,吸取先提醒用户输错,然后使用goto语句跳转到loop处,请用户再次输入正确的条件。 b. void detail(char *p1) /*查询所需要的商品名*/ 当用户错选择执行这函数时可以选择返回到主显示页面也可以继续查询物品的详情,通过实参传址使形参得到主函数中的得到的字符串。先判断库存中是否有该商品,有的话则输出该商品的所有信息,否则,查询不到该商品。 c. void lack(char *p2) /*查询库存数量少于30的物品*/ 在执行此函数之时用户可以选择查询与返回。首先找到所查物品数量不足的位置,然后显示在屏幕上,用户可以选择退出与返回主显示菜单。 d. void all(char *p3) /*显示全部物品信息*/ 在执行此函数之时用户可以选择显示与返回。用循环将结构体中的所有元素都显示出来,在现实物品信息之前,将指针变量p3的得到的字符串先显示出来。 e. void ad(char *p4) /*按物品名称排序显示全部物品信息*/ 用选择法依次找出字符串较小的元素,并将其按由小到大的顺序排列。用循环与if语句结合,找出每次循环中最小的字符串。再用循环显示出重新排序的商品信息。 f. void td(char *p5)函数 /*按物品分类排序显示全部物品信息*/ 思路同e所述的类似。 g. void ap() /*所有物品的总价*/ 先定义文件指针变量,然后用fopen()函数打开文件指针变量所指向的文件,接着用循环计算出各物品的总价,再用循环将不同商品的总价写入到文件,以及累加所有商品的总价,写入到文件。再将所有的不同商品名及总价以及所有商品的总价显示出来。最后用户可以选择返回主显示页面以及退出。 h. void out(char *p6) /*商品出库*/ 先判断库存中是否有该商品,有的话,再判断该商品在库存中足不足,足够的话,可以输入要 6 出库的商品数量,接下来将出库前后有关该商品的全部信息写入文件指针变量所指向的文件中,以及将出库的日期与时间也写到文件中,方便用户对比前后该商品的有关信息。之后用户可以选择继续查询或返回主显示页面。否则,查询不到该商品,不过用户可以选择继续出库其他商品,可以选择返回主显示页面以及退出。 i. void change() /*修改商品的信息*/ 用switch()语句让用户自行选择修改商品的哪些类容,然后调用不同修改功能的函数,达到用户的修改目的。 j. void changename() /*更改商品的名称*/ 当用户选择执行此修改功能的时候,先判断库存中是否有该商品,有的话,提醒用户输入新名称将其给一个数组,让后再用strcpy()语句将数组中的字符串复制给要修改的商品名,让后再将更新后的内容写到文件中,之后用户可以选择继续修改或返回主显示页面或退出。否则提醒用户该商品不存在,进而执行其它的语句。 k. void changetype() /*改变商品的类型*/ 方法同j所述的相同。 l. void changeprice() /*改变物品的价格*/ 总体方法与i所述的相同,但此处不需要用strcpy()语句,直接可以将要改的价格赋给要修改的商品名价格。 m. void changenum()/*改变物品的库存数量*/ 方法与i所述的相同。 n. void changeall() /*修改该商品的全部信息*/ 方法是将j和l所述的方法结合起来就可以实现某商品的全部信息。 四. 测试与调试 内容:列出你的测试数据(原始数据文件)及测试结果 库存信息文件 出库信息文件 功能1 测试结果 7 a. 按物品名查询 8