收藏 分销(赏)

c语言课程设计之图书管理系统.doc

上传人:Fis****915 文档编号:551604 上传时间:2023-12-06 格式:DOC 页数:26 大小:563KB
下载 相关 举报
c语言课程设计之图书管理系统.doc_第1页
第1页 / 共26页
c语言课程设计之图书管理系统.doc_第2页
第2页 / 共26页
c语言课程设计之图书管理系统.doc_第3页
第3页 / 共26页
c语言课程设计之图书管理系统.doc_第4页
第4页 / 共26页
c语言课程设计之图书管理系统.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、成绩南京工程学院课程设计说明书(论文)题 目 商品库存管理系统 课 程 名 称 高级语言程序设计(C) 院(系、部、中心) 通信工程 专 业 多媒体通信 班 级 媒通111 学 生 姓 名 张瑜 学 号 208110515 设 计 地 点 信息楼C216 指 导 教 师 袁璟 设计起止时间:2012年3月5日至2012年3月9日目 录1课程设计题目12软件功能描述13软件总体设计231数据结构描述与定义232模块设计24测试结果与分析35课程设计总结3附录:源程序清单41课程设计题目商品库存管理系统要求:设计数据结构 实现商品的入库,出库,查询等功能,读/写文件功能(1, 整个系统均用C语言实

2、现;(2, 可以利用数组、指针、链表来实现数据结构设计;(3, 管理系统具有输入、显示、查询、删除、排序、插入、保存、读取等基本功能;(4, 系统的各个功能模块都用函数的形式来表示;(5, 可以将信息保存在文件中;(6, 可以将信息从文件中读取出来。2软件功能描述商品库存管理系统软件为人们提供了一个对商品价格信息了解,对商品的录入录出功能的使用提供了一个很好的平台。并给人们友好的操作界面,功能需求描述如下:1、 提供系统主控平台:人们进入系统主控平台,界面中只显示其含有的功能供人们选择。当顾客在系统的提示下输入选项代码时,系统会调用相应的子程序供人们选择的功能。因此,系统主控平台应对系统提供的

3、功能用列表的方式清晰的给人们呈现,并能正确的接受顾客的输入。2、 创建商品信息文件:人们根据提示输入商品编号、名称、数量、保质期、生产地、供货商。可一次性输入多条商品信息记录。系统将商品信息记录存储在系统磁盘的文件中,以便进行管理和查找。3、 添加商品信息:可在原有商品信息文件的基础上增加新的商品信息记录,并继续保存在磁盘中。在增加新信息记录的过程中,系统同样会提示人们相应地填入商品的编号、名称、数量、保质期、生产地、供货商。4、 删除商品信息:根据人们输入要进行删除操作的商品的编号,如果在文件中有该商品的信息记录存在,则将提示人们是否确认将其删除,若确认,则将该编号所对应的名称等各种信息在对

4、应文件中加以删除。如果该商品不存在,则将显示“该商品不存在!按任意键退出”。5、 修改商品信息:提示人们输入要进行修改操作的商品编号,如果在文件中有该商品的信息记录存在,则将提示人们输入该编号的对应的商品编号、名称、数量、报质期、生产地、提供商等需要修改的选项,并将修改结果存储于文件。6、 查询商品信息:提示人们输入要查询的商品信息的编号,如果在磁盘文件中有对应商品信息记录,则将查询的商品的信息逐项列出。查询完毕后可按任意键返回主键面。7、 显示商品信息:当人们选择了显示商品信息该选项后,系统会自动进入一个界面,一个将之前存储在这个文件中的所以商品的各项信息都逐个陈列出来的界面。8、 排序全部

5、信息:当人们选择了排序全部信息该选项后,系统会自动进入一个界面,这个界面中的全部商品信息记录都按照编号排列(从小到大),以便人们能更直观的浏览到全部的商品信息。3软件总体设计1、系统模块结构图商品库存管理创建商品信息添加商品信息删除商品信息修改商品信息查询商品信息显示商品信息排序全部信息insert函数delet函数Modify函数find函数print函数sort函数-系统模块结构图-开始输入选项判断选项2、模块流程图输入操作选项结束输出数据退出系统排序信息显示全部信息查询信息修改信息删除信息添加信息对已有文件进行操作结束保存输入各项信息结束创建新的商品信息-流程图-3、程序中各项功能具体定

6、义:Elemsn *creatlink(void)创建链表信息void savelink(Elemsn *h)保存链表信息Elemsn *readlink(void)读出已存文件信息Elemsn *insert(Elemsn *head)添加信息Elemsn *delet(Elemsn *p0)删除信息Elemsn *modify(Elemsn *h)修改信息void find(Elemsn *h)查询信息void print(Elemsn *p)显示全部信息Elemsn *sort(Elemsn *head)排序信息4、程序中各项功能描述:一:头文件,变量定义,函数的声明,定义结构体 定义结

7、构体 typedef struct pro 为结构体命名 Elemsn 对系统所使用的变量进行定义,对函数进行声明二:商品库存管理系统主界面设计 声明函数void main(),对整个系统进行选择使用说明三:创建商品库存信息声明函数creatlink(),用Elemsn *creatlink(void)创建链表信息四:商品库存信息的添加声明void insert()插入商品信息,先通过判断该商品是否存在,若不存在则继续输入,若是存在则跳出,重新循环五:保存信息 void savelink()用于保存链表信息六:商品库存信息的删除声明void delet()实现商品信息删除,通过编号对比确定要删

8、除的信息,然后用后一个替换掉。七:商品库存信息的修改声明void modify()为商品信息修改函数,通过switch(n)设定所要修改的项目八:商品信息的查找声明void find()为查找函数,通过switch(item)设定用编号查找九:显示全部商品信息 通过void print()函数输出商品信息十:商品信息的排序声明void sort()将录入商品的编号按升序排列,用的是“冒泡排序法”实现排序31数据结构描述与定义1、测量结构体变量的大小# define N sizeof(struct pro)2、商品库存信息数据结构用于存放每个商品的编号、名称、数量、保质期、提供商和生产地各方面的

9、信息。typedef struct prochar number20;char name20;char amount20;char deadline20;char supply20;char add20;struct pro *next; Elemsn; /为结构体命名/用结构体定义商品信息。由于编号、名称、价格、数量等是用于描述一个有机整体商品,为了表明这些字段不是孤立的,而是共同描述一个完整的事物,因此用结构体这种形式来体现。32模块设计1、模块描述对若干商品价格,名称,生产日期等记录进行创建商品信息文件、增加商品信息、删除商品信息、修改商品信息、查询商品信息、显示商品信息和排序全部信息几

10、项功能管理。对文件有修改的操作,会将操作结果保存至文件,对于需要查看结果的操作,文件中的操作结果将会显示于屏幕上。2、模块设计总体框架图:商品库存管理系统 1.添加商品信息 2删除商品信息3修改商品信息4查询商品信息5.显示商品信息6排序全部商品信息3、系统模块流程图商品库存管理创建商品信息添加商品信息删除商品信息修改商品信息查询商品信息显示商品信息排序全部信息-系统模块结构图-4测试结果与分析执行效果如下:1、主界面:2、输入1后编辑的商品信息(创建新文件):3、保存文件后,进入商品库存管理系统:4、执行1添加功能:5、执行2删除功能:6、执行3修改功能:7、 执行4查询功能:8、 执行5显

11、示功能:9、 执行6排序功能:5课程设计总结经过一个礼拜的努力,终于,一个比较完整的小型商品库存管理系统就创建完毕了。我们组创建的商品库存管理,系统能实现商品信息的添加,删除,修改,查询,显示,排序等简单的基本功能。虽然这个课程设计是从寒假就开始准备了,但是说实话,在没有人能商量的情况下,我对这个课程设计的题目还是一头雾水的,虽然有上网查找资料并且问了家里有从事编程工作的亲戚,但是,我想说请原谅我的迟钝,因为我还是对课程设计无从下手。来了学校后,因为开学的第三周是课程设计,我特地去问了学姐有关课程设计的信息,并去图书馆查了大量资料。可能是由于资料的繁多重复吧,我没办法从里面理出头绪,所以我让组

12、长给我整理了资料,十分感谢我们组的组长,他给我整理的资料很简练,在后面几天的编程中,我有不懂并且解决不了的程序问题,他都很耐心的帮我解答,调试。从这次的课程设计,从组长那里,我想我学到了很多,从第一天的无从下手到最后检验是能运行简单的功能操作,虽然程序还不是很完善,但是我还是感到很开心。老师检验的时候,问了我这样一个问题,她问:你for循环体在哪里?好吧,我突然感觉很糟糕,因为我只看到一个分号,下面的printf并不是循环体,可是我不知道该怎么说,我想不起来那个叫什么,我那个程序里的for循环只是起到一个将信息全部读完的作用。是的,很糟糕,真是太糟糕了。好吧,我承认,我的基本功真的不扎实。经过

13、这次的课程设计,我觉得做一个系统真的需要很好的逻辑能力,并且你的基本功要扎实,不然大小错误会不断。还有我发现当你只看不做的时候,觉得什么都不会,当你去尝试了去讨论了去做出结果了,可能结果不是很如人意,但是你会收获很多很多。我很幸运我能有这样一次机会,对老师来说可能做的很糟,但是对我来说已经是个很大的突破了,因为我动手做了,动脑想了,还去讨论了,可以说是没什么遗憾了吧,唯一感到很遗憾的是一周的时间真的是太少了。我想在以后在我学习了更多之后,我的程序会更好,到时候我希望自己能独立写出一个能运行的系统程序。附录:源程序清单#include stdio.h#include stdlib.h#inclu

14、de string.h# include conio.h# define N sizeof(struct pro) /测结构体变量的大小/typedef struct prochar number20;char name20;char amount20;char deadline20;char supply20;char add20;struct pro *next;Elemsn; /为结构体命名/Elemsn *creatlink(void) /创建链表信息/ Elemsn *p1,*p2,*head; /p1为前驱,p2为后继/ int i=1; char choice; head=p2=

15、(Elemsn *)malloc(N); head-next=NULL; choice=y; for(i=1;choice=y|choice=Y;i+) p1=(Elemsn *)malloc(N); printf(*nn); printf(请输入第%d个商品的信息:n,i); printf(编号:); scanf(%s,p1-number); printf(n名称:); scanf(%s,p1-name); printf(n数量:); scanf(%s,p1-amount); printf(n保质期:); scanf(%s,p1-deadline); printf(n供货商:); scanf

16、(%s,p1-supply); printf(n出产地:); scanf(%s,p1-add); p2-next=p1; p2=p1; printf(n是否继续?(Y/N):); choice=getche(); printf(n); p2-next=NULL; return(head);void savelink(Elemsn *h) /保存链表信息/ Elemsn *p; FILE *fp; char fliename20; printf(n请输入你要保存的文件名:); scanf(%s,fliename); if(fp=fopen(fliename,wt)=NULL) printf(写文

17、件出错,按任意键退出!); getche(); exit(1); for(p=h-next;p!=NULL;p=p-next) fprintf(fp,%s %s %s %s %s %sn,p-number,p-name,p-amount,p-deadline,p-supply,p-add); /向文件中写入数据/ printf(文件已成功保存,按任意键返回!); getche(); fclose(fp);Elemsn *readlink(void) /读出已保存文件的信息/ Elemsn *head,*p,*q; FILE *fp; char filename20; printf(n请输入要打

18、开的文件名:); scanf(%s,filename); if(fp=fopen(filename,rt)=NULL) printf(读文件出错,按任意键退出!); getche(); exit(1); head=q=(Elemsn *)malloc(N); head-next=NULL; while(!feof(fp) p=(Elemsn *)malloc(N); /建立新链表,并从文件中读出数据/ fscanf(fp,%s %s %s %s %s %sn,p-number,p-name,p-amount,p-deadline,p-supply,p-add); q-next=p; q=p;

19、q-next=NULL; fclose(fp); printf(文件信息已正确读出,按任意键返回!); getch(); return head;Elemsn *insert(Elemsn *head) /插入信息/ Elemsn *p; p=(Elemsn *)malloc(N); printf(n请输入要插入商品的信息:n); printf(n编号:); scanf(%s,p-number); printf(n名称:); scanf(%s,p-name); printf(n数量:); scanf(%s,p-amount); printf(n保质期:); scanf(%s,p-deadlin

20、e); printf(n供货商:); scanf(%s,p-supply); printf(n出产地:); scanf(%s,p-add); if(head-next!=NULL) p-next=head-next; /插入数据操作代码/ head-next=p; printf(n商品信息插入成功!按任意键继续!); getche(); return head;Elemsn *delet(Elemsn *p0) /删除信息/ char num20; Elemsn *p; char choice; if(p0-next=NULL) printf(该商品不存在!按任意键退出!); getch();

21、 exit(1); printf(n请输入要删除商品的编号:); scanf(%s,num); for(p=p0-next;strcmp(p-number,num)!=0;p0=p,p=p-next) ; /找到要删除的商品的信息/ printf(你要删除的信息如下,请确认是否删除:n); printf(n编号:%s 名称:%s 数量:%s 保质期:%s 供货商:%s 出产地:%snn,p-number,p-name,p-amount,p-deadline,p-supply,p-add); printf(n是Y,否N:); /显示要删除的商品的信息/ choice=getche(); if(c

22、hoice=Y|choice=y) p0-next=p-next; free(p); printf(n文件删除成功!); printf(n按任意键结束!); getche(); return p0;Elemsn *modify(Elemsn *h) /修改信息/ char num20; Elemsn *p; char choice; printf(n请输入要修改商品信息的编号:); scanf(%s,num); for(p=h;strcmp(p-number,num)!=0;p=p-next) ; /找到要修改的商品的信息/ while(1) printf(请输入修改后商品的信息:n); pr

23、intf(编号:); scanf(%s,p-number); printf(n名称:); scanf(%s,p-name); printf(n数量:); scanf(%s,p-amount); printf(n保质期:); scanf(%s,p-deadline); printf(n供货商:); scanf(%s,p-supply); printf(n出产地:); scanf(%s,p-add); printf(修改后商品信息如下:n); printf(n编号:%s 名称:%s 数量:%s 保质期:%s 供货商:%s 出产地:%snn,p-number,p-name,p-amount,p-de

24、adline,p-supply,p-add); printf(n确认?是Y否N:); choice=getche(); if(choice=y|choice=Y) break; printf(n修改成功,按任意键继续!); getche(); return h;void find(Elemsn *h) /查询信息/ char num20; Elemsn *p; printf(n请输入你要查找的商品的编号:); scanf(%s,num); for(p=h;strcmp(p-number,num)!=0;p=p-next) ; printf(你查找的商品信息如下:n); printf(n编号:%

25、s 名称:%s 数量:%s 保质期:%s 供货商:%s 出产地:%snn,p-number,p-name,p-amount,p-deadline,p-supply,p-add); printf(按任意键继续!); getche();void print(Elemsn *p) /显示全部信息/ p=p-next; while(p!=NULL) printf(n编号:%s 名称:%s 数量:%s 保质期:%s 供货商:%s 出产地:%sn,p-number,p-name,p-amount,p-deadline,p-supply,p-add); p=p-next; printf(n按任意键继续!);

26、 getche();Elemsn *sort(Elemsn *head) Elemsn *q,*t,*p; p=head; t=NULL; while(t!=head-next) p=head; q=p-next; while(q-next!=t) if(strcmp(p-next-number,q-next-number)0) /*前结点和后结点比较大小*/p-next=q-next; q-next=q-next-next; p-next-next=q; p=p-next; q=p-next; t=q; printf(商品信息排序完毕,按任意键继续!);getche();print(head

27、); return(head); /*返回头指针*/ void main() int choice=1,i,ok=1; /choice用于选择对数据执行操作,i循环,ok主界面选择/ Elemsn *head,*h; head=NULL; for(i=1;ok!=0;i+) system(cls); printf(n欢迎来到商品库管理系统主界面!nnn); printf(nnn 1.创建新文件.nnn); printf( 2.读取原文件,并执行相应操作.(原文件名为:jxx); printf(nnn 0.退出;); printf(nnnnn请选择你要执行的操作:); scanf(%d,&ok)

28、; if(ok=1) system(cls); head=creatlink(); /创建新链表并保存文件/ savelink(head); if(ok=2) head=readlink(); /进入文件,对已知数据进行操作/ for(i=1;choice!=0;i+) system(cls); printf(*欢迎来到商品库管理系统*nnn); printf( 1. 添加商品信息; nn); printf( 2. 删除商品信息; nn); printf( 3. 修改商品信息; nn); printf( 4. 查询商品信息; nn); printf( 5. 显示商品信息; nn); print

29、f( 6. 排序全部信息; nn); printf( 0. 退出; nn); printf(请输入你要执行的操作代码:); scanf(%d,&choice); switch(choice) case 1: h=insert(head);savelink(h);break; /执行增,删,改完毕后对新信息进行保存/ case 2: h=delet(head);savelink(h);break; case 3: h=modify(head);savelink(h);break; case 4: find(head);break; case 5: print(head);break; case 6: h=sort(head);savelink(h);break; case 0: break;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服