信息科学与工程学院
课程设计报告
班 级: 通信一班
姓名 (学号):
实验项目名称: c语言程序设计
实验室(中心):信息科学与工程学院信息技术实验室
指 导 教 师 : 李益才
实验完成时间: 2013 年 6 月 28 日
Birthday
页眉内容
序号 项目 标准 评分 按要求完成系统功能且界面友好容错能力强(45-50) 按要求完成系统功能界面一般有较好的容错能力(40-44) 系统演示(功1 能)(50%) 基本完成系统功能有一定的容错能力(35-39) 基本完成系统功能(30-34分) 未完成系统功能或他人代做或抄袭(15) 课程设计书各项目认真填写,具有清晰的设计思路及软件测试结果分析(45-50) 课程设计说明2 书(50%) 课程设计书各项目认真填写,具有较为清晰的设计思路并对软件测试结果进行了较为清晰的分析(40-44) Birthday
页眉内容
课程设计书各项目认真填写,设计思路正确(35-39) 课程设计书进行为较为认真的填写(30-34) 课程设计书有未完成项或各项填写不属实或他人代做或抄袭(15) 教师签字 总分 一、题目
仓库管理系统
二、功能描述
该系统将输入进系统的仓库中物品的基本信息(包括货号、名称、单价、库存数量、品牌)进行处理,可以进行:
(1)、按物品价格降序输出、按库存数量升序排列。
(2)、修改制定物品的信息。
(3)、删除指定物品的信息。
(4)、在指定物品前或后再插入一个物品的信息。
(5)、统计同一种品牌的数量。 三、概要设计
Birthday
页眉内容
系统功能模块图
进入系统 物品信息输入 数据按序输出 修改特定物品的信息 删除特定物品的信息 插入物品信息 统计指定品牌物品的数量 数据文件输入磁盘 数据文件载入 退出系统
四、详细设计
1、结构的定义:
数组结构体一共有两个: 链表结构体一共有一个:
Birthday
页眉内容
struct information //物品信息机构 struct information //物品信息机构 { {
int Artnumber; int Artnumber; char goodsname[20]; char goodsname[20]; float unitprice; float unitprice;
int quantity; int quantity;
char brand[20]; char brand[20];
}; struct information *next; struct Mainfest //仓库信息机构 };
{ struct information *head; //头指针 struct information data[Number]; };
struct Mainfest goods;
2、各个函数的具体设计思想及流程图
本系统一共九个函数:
(1)void inputInformation(); //对仓库中所有物品的基本信息进行输入
int Num;
(2)void outputsort(); //按序输出数据
(3)void modifyInformation(); //修改物品信息
(4)void deleteInformation(); //删除物品信息
Birthday
页眉内容
(5)void insertInformation();//插入 //插入物品信息
(6)void statistics();// 统计 //统计相同品牌的物品数量
(7)void saveInfoToFile(); //文件输入到磁盘
(8)void loadInfoFromFile(); //文件磁盘载入
(9)void maon(); //主函数
其中第七、八个为文件函数,进行文件的存储和载入。
主函数main()是一个死循环,每执行玩一个函数都要输出菜单选择,直到选择退出为止。 2.1仓库物品基本信息输入函数
对物品基本信息进行连续输入,直到所有物品信息都输入完毕,改函数用while循环函数进行连续赋值。
(1)、具 体 流 程 图 如 下 图 所 示:
开始
Birthday
页眉内容
判断是否
Birthday
未满,继续已满 ,结束 是否要继续输是,继续否,退出链表
开始 菜单,选择输入数据head=()malloc();建
页眉内容
是
否
(2)代码说明
While语句是把数据输入到内存中,if这里有两个用途:1、用于判断是否还有空间进行数据输入;2、判断是否还要继续输入。 2.2按序输出物品信息 对物品的特定信息进行排序后在输出,可以进行按价格降序输出、按库存数量升序输出,这两种输出可以自由选择
数组
开始 Birthday
结束 判断是否Temp->next=head->next;temp=()malloc()建立新节点t,printf();输入页眉内容
选择要排序
Birthday
if(1)按价格If(2)按数排序 sort() 满足大小输出,outlist 结束 链表 开始 选择排序元素 页眉内容
2.3修改指定物品的信息 对数据文件中特定信息惊醒修改,可以修改任何信息 Birthday
查找指定物品输入指定物品的信 开始 结束 Outlist()输 Sort(sel)排按价格降序 按库存数量升序 页眉内容
判断是否
Birthday
找到,对错误信息惊 结束 链表 开始 定义结构体指针,输入要修改的物品判断是否 修改货物输出未找信息到该货物 页眉内容
2.4删除指定货物信息 对磁盘文件中的特定物品信息进行删除 数组 if
结束 Birthday
goods.Num--找到,删除
判断是否找到指查找指定输入指定物品的信 结束 页眉内容
链表
是 是否找到否 指定货物
2.5在指定位置插入一个物品的信息 (1)流程图 数组
开始 Birthday
删除pf->next=pb-> 结束 输出“未找查找指定货物pf=Search输入要删除的货物货号定义两个指向结构体的指针pf=search(goodsnum); 开始 页眉内容
输入指定货
Birthday
是否找到指 前插 选择前后插插 for(j=goods.Num;j>i-1;j--)for(j=goods.Num;j>i;j-- ) 插入输入要插入的 结束 链表 开始 定义三个指针*pf,*pb,*temp页眉内容
是 找到插入位置Pf=search判断是否找到指定物品在内存中开辟一个空节点输入要插入的 前插 后插 选择前插还 else If(head== else temp->next= Birthday
指定元素为头节点后第temp->next=pb->next;If(pb->next==指定元素为最后一个节页眉内容
2.6统计指定品牌的库存数量 (1)流程图
数组 Birthday
判断是否找到品牌if(i==goods.Num) Sun+=quantityfor(i=0;i );Printf(“为找 结束 链表 开始 struct information *p; 输入指定品牌明 P!=NULL 是 如果是同一品牌,求和页眉内容 2.7、基本数据文件输入磁盘 将输入的数据存储到磁盘保持。 数组 输出和 结束 开始 用fopen()打 链表 Birthday 结束 Fclose(fp) 创立这个文件 用fwrite()讲页眉内容 开始 是 建立这个 否 文件 struct information *p; 用fopen()打 打开文件,并使 否 fclose(fp); 并用while()fwrite() 结束 2.8、数据文件载入 从磁盘文件中讲已经保存了的数据读取到内存中,为以后的数据处理做准备。 数组 开始 用fopen()打Birthday 页眉内容 是 输出“该文件不能被 是 goods.Num==100 Birthday 否 打印“存储空间已满,不能用fread()将Feof(fp)=0?是 Goods.Num++ Goods.num=100? 是 输出”存储空间用freadj()Fclose(fp) 结束 页眉内容 链表 Birthday 开始 FILE * fp; 用fopen()打开打印“文件不能打开” P=()malloc()为p分用fread()将文否 Feof(fp)=0?判是 p->next=head->next; head->next=p; 页眉内容 用fread(0,讲文件 五、测试结果及存在的问题 Free(p); 结束 1、调试运行,选择第一项进行数据输入: 2、按序输出: (1)、按物品价格降序输出 Birthday 页眉内容 (2)、按库存数量升序输出 3、修改指定物品的信息 Birthday 页眉内容 4、删除指定物品的信息 5、在指定物品前或后插入一个物品的信息 (1)前插 Birthday 页眉内容 (2)、后插 Birthday 页眉内容 6、求指定品牌的物品数量 不足:修改指定物品的信息和删除指定物品的信息时,如果有相同货号的物品,则无法一次性修改和删除。 改进:预想循环查找、修改、删除,直到找不到指定货物为止。 六、课程设计心得体会 第一次做这个长度的程序设计,对我好处很多,在编写程序的过程中,清楚的找出了自身的不足,以及对课本知识掌握不熟练的地方,并在编程中对课本知识进行了较为充分的复习,包括对数组的运用、函数的调用的理解以及更重要的是原来不熟练的链表、文件的知识有了更深的了解,并能用链表进行程序的编写。 Birthday 页眉内容 这次编程体验,让我对模块化编程有了了解,并建立了模块化编程的思想,我想这点对我来说尤为重要。 这次的编程,更加强了我对错误的改正能力,也在编程中减少了低级错误的发生,也提高了对vc++编程软件的熟练程度 总之,这次编程虽然遇到了很多困难,但是,让我受益匪浅。 Birthday 因篇幅问题不能全部显示,请点此查看更多更全内容