资源描述
长江大学工程技术学院C语言课程设计实习报告 学生成绩管理系统的设计 学生姓名:熊奇 学号:201160255 序号:36 专业班级:测控61101 指导老师:孟宪婷 报告日期:2012年7月6日 第一部分 课程设计的题目与要求 1、问题的提出内容:1)怎样查询及显示库存物品信息?2)怎样按不同方式将库存物品信息排序?3)怎样统计各物品总价,以及计算所有物品的总价?4)如何才能实现商品的出库?5)如何修改库存物品信息?2、功能要求内容:(1)对仓库中库存的物品信息实现查询和显示功能:a)按物品名查询该物品的详细信息。b)查询库存数量不足的物品(库存数量=30)。c)显示全部物品信息。将满足查询条件的商品显示在屏幕上。(2)对物品信息实现排序功能a)按商品名排序。b)按商品的分类排序。将排序后的结果显示在屏幕上。要求至少实现一种排序方式。 (3)统计仓库中所有物品的总价。用C语言创建一个数据文件,用该文件来存放统计后的结果。(4)实现物品的出库。当要求从仓库中提取某种物品时,先查询该物品的库存数量是否满足所购要求。若满足,则允许出库,此时要将物品出库信息写入物品出库信息文件中。并修改物品的库存信息。 (5)实现物品库存信息的修改功能。先查询出要修改的记录,然后选择要修改的字段名,并输入新的字段信息。将新的字段信息写入文件中。本功能为选做内容。 第二部分 课程设计题目功能1. 系统功能模块版图设计内容:程序设计模块图输出主操作页面功能1功能2功能3功能4功能5开始查询库存数量不足的物品统计所有物品的总价按物品分类排序显示物品信息按物品排序显示全部物品信息显示全部物品信息实现物品的出库修改商品名修改商品类型修改商品价格修改商品数量修改某商品全部内容按物品名查询该物品的详细2.数据结构说明内容:声明数据类型、程序中使用的各变量的类型及作用#include /*头文件*/#define N 8 /*带参数的宏定义*/#include #include #include /*有助于后面调用时间函数*/struct store /*定义结构体类型的同时定义结构体变量*/ double total;/*用来存放给各物品的总价*/char name30;char type10; float price;int num; storeN,temp;/*temp中间变量,用来交换结构体中数组的位置*/char str1100; /*main函数中定义字符数组来存放文件中第一行字符*/void detail(char *p1) /*指针变量p1得到main函数中str1传来的字符串*/char str100/*用来判断输入的字符串在库存中是否存在*/FILE *fp1; /*定义文件指针变量*/double s=0; /*将所有商品累加的和赋给s*/char str110,str210;/* void changeall()函数中str1和str2得到的字符串分别复制给结构体数组中的某一元素*/ int k,m; /* void changeall()函数中n和m得到的数字分别赋给结构体数组中的某一元素*/ char str1100/*void out(char *p6)函数中的str1得到系统的时间与日期*/ void out(char *p6)/*形参为指向字符型的指针变量*/一、内容:模块功能说明1)菜单的编程和调用void main() /*主函数*/void main() /*主函数*/ int n,i; char str1100;FILE *fp1; /*定义文件指针变量*/ if(fp1=fopen(CK0136_store.txt,r)=0) /*判断文件是否能打开*/printf(Cannot open file!n);exit(0); /*表示正常退出该系统*/ fgets(str1,100,fp1); for(i=0;iN;i+) /*用循环从文件中读出其中的数据并给每行数组中的元素赋值*/ fscanf(fp1,%s%s%f%dn,storei.name,storei.type,&storei.price,&storei.num);/*字符串数组前面不能加取地址符号*/ fclose(fp1); /*关闭打开的文件*/ loop: printf(*n); printf(*n);printf( 小型仓库管理系统 n); printf(*n);printf(*n); printf(*n);printf( 1、按物品名查询该物品的详细 n); printf( 2、查询库存数量不足的物品(库存数量=30) n);printf( 3、显示全部物品信息。 n);printf( 4、按物品排序显示全部物品信息。 n);printf( 5、按物品分类排序显示全部物品信息。 n); printf( 6、统计所有物品的总价。 n); printf( 7、实现物品的出库。 n); printf( 8、实现物品库存信息的修改功能。 n); printf( 9、退出。 n); printf(*n); printf(*nn); printf(-n); printf(请从条件1、2、3、4、5、6、7、8、9中选择一个满足您所需的条件n); printf(-n); printf(请输入正确的操作编号:); scanf(%d,&n); printf(-n); 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(您输入的不正确 !nn); /*若没按要求输入条件,就执行此语句*/ goto loop;/*若没按要求输入条件,则转移至loop构成循环;否则不执行goto语2).从文件中读出库存信息以及将文件写进结构体main() /*文件读取库存数据*/ FILE *fp1; /*定义文件指针变量*/ if(fp1=fopen(DX0102_store.txt,r)=0) /*判断文件是否能打开*/printf(Cannot open file!n);exit(0); /*表示正常退出该系统*/ fgets(str1,100,fp1); for(i=0;iN;i+) /*用循环从文件中读出其中的数据并给每行数组中的元素赋值*/fscanf(fp1,%s%s%f%dn,storei.name,storei.type,&storei.price,&storei.num);/*字符串数组前面不能加取地址符号*/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) /*商品出库*/先判断库存中是否有该商品,有的话,再判断该商品在库存中足不足,足够的话,可以输入要出库的商品数量,接下来将出库前后有关该商品的全部信息写入文件指针变量所指向的文件中,以及将出库的日期与时间也写到文件中,方便用户对比前后该商品的有关信息。之后用户可以选择继续查询或返回主显示页面。否则,查询不到该商品,不过用户可以选择继续出库其他商品,可以选择返回主显示页面以及退出。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 测试结果a. 按物品名查询
展开阅读全文