c语言课程设计之图书管理系统.doc
《c语言课程设计之图书管理系统.doc》由会员分享,可在线阅读,更多相关《c语言课程设计之图书管理系统.doc(26页珍藏版)》请在咨信网上搜索。
成绩 南京工程学院 课程设计说明书(论文) 题 目 商品库存管理系统 课 程 名 称 高级语言程序设计(C) 院(系、部、中心) 通信工程 专 业 多媒体通信 班 级 媒通111 学 生 姓 名 张瑜 学 号 208110515 设 计 地 点 信息楼C216 指 导 教 师 袁璟 设计起止时间:2012年3月5日至2012年3月9日 目 录 1.课程设计题目 1 2.软件功能描述 1 3.软件总体设计 2 3.1数据结构描述与定义 2 3.2模块设计 2 4.测试结果与分析 3 5.课程设计总结 3 附录:源程序清单 4 1.课程设计题目 商品库存管理系统 要求:设计数据结构 实现商品的入库,出库,查询等功能,读/写文件功能 (1, 整个系统均用C语言实现; (2, 可以利用数组、指针、链表来实现数据结构设计; (3, 管理系统具有输入、显示、查询、删除、排序、插入、保存、读取等基本功能; (4, 系统的各个功能模块都用函数的形式来表示; (5, 可以将信息保存在文件中; (6, 可以将信息从文件中读取出来。 2.软件功能描述 商品库存管理系统软件为人们提供了一个对商品价格信息了解,对商品的录入录出功能的使用提供了一个很好的平台。并给人们友好的操作界面,功能需求描述如下: 1、 提供系统主控平台: 人们进入系统主控平台,界面中只显示其含有的功能供人们选择。当顾客在系统的提示下输入选项代码时,系统会调用相应的子程序供人们选择的功能。因此,系统主控平台应对系统提供的功能用列表的方式清晰的给人们呈现,并能正确的接受顾客的输入。 2、 创建商品信息文件: 人们根据提示输入商品编号、名称、数量、保质期、生产地、供货商。可一次性输入多条商品信息记录。系统将商品信息记录存储在系统磁盘的文件中,以便进行管理和查找。 3、 添加商品信息: 可在原有商品信息文件的基础上增加新的商品信息记录,并继续保存在磁盘中。在增加新信息记录的过程中,系统同样会提示人们相应地填入商品的编号、名称、数量、保质期、生产地、供货商。 4、 删除商品信息: 根据人们输入要进行删除操作的商品的编号,如果在文件中有该商品的信息记录存在,则将提示人们是否确认将其删除,若确认,则将该编号所对应的名称等各种信息在对应文件中加以删除。如果该商品不存在,则将显示“该商品不存在!按任意键退出”。 5、 修改商品信息: 提示人们输入要进行修改操作的商品编号,如果在文件中有该商品的信息记录存在,则将提示人们输入该编号的对应的商品编号、名称、数量、报质期、生产地、提供商等需要修改的选项,并将修改结果存储于文件。 6、 查询商品信息: 提示人们输入要查询的商品信息的编号,如果在磁盘文件中有对应商品信息记录,则将查询的商品的信息逐项列出。查询完毕后可按任意键返回主键面。 7、 显示商品信息: 当人们选择了显示商品信息该选项后,系统会自动进入一个界面,一个将之前存储在这个文件中的所以商品的各项信息都逐个陈列出来的界面。 8、 排序全部信息: 当人们选择了排序全部信息该选项后,系统会自动进入一个界面,这个界面中的全部商品信息记录都按照编号排列(从小到大),以便人们能更直观的浏览到全部的商品信息。 3.软件总体设计 1、系统模块结构图 商品库存管理 创建商品信息 添加商品信息 删除商品信息 修改商品信息 查询商品信息 显示商品信息 排序全部信息 insert函数 delet函数 Modify函数 find函数 print函数 sort函数 -----系统模块结构图----- 开始 输入选项 判断选项 2、模块流程图 输入操作选项 结束 输出数据 退出系统 排序信息 显示全部信息 查询信息 修改信息 删除信息 添加信息 对已有文件进行操作 结束 保存 输入各 项信息 结束 创建新的 商品信息 -----流程图----- 3、程序中各项功能具体定义: 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、程序中各项功能描述: 一:头文件,变量定义,函数的声明,定义结构体 定义结构体 typedef struct pro 为结构体命名 Elemsn 对系统所使用的变量进行定义,对函数进行声明 二:商品库存管理系统主界面设计 声明函数void main(),对整个系统进行选择使用说明 三:创建商品库存信息 声明函数creatlink(),用Elemsn *creatlink(void)创建链表信息 四:商品库存信息的添加 声明void insert()插入商品信息,先通过判断该商品是否存在,若不存在则继续输入,若是存在则跳出,重新循环 五:保存信息 void savelink()用于保存链表信息 六:商品库存信息的删除 声明void delet()实现商品信息删除,通过编号对比确定要删除的信息,然后用后一个替换掉。 七:商品库存信息的修改 声明void modify()为商品信息修改函数,通过switch(n)设定所要修改的项目 八:商品信息的查找 声明void find()为查找函数,通过switch(item)设定用编号查找 九:显示全部商品信息 通过void print()函数输出商品信息 十:商品信息的排序 声明void sort()将录入商品的编号按升序排列,用的是“冒泡排序法”实现排序 3.1数据结构描述与定义 1、测量结构体变量的大小 # define N sizeof(struct pro) 2、商品库存信息数据结构 用于存放每个商品的编号、名称、数量、保质期、提供商和生产地各方面的信息。 typedef struct pro { char number[20]; char name[20]; char amount[20]; char deadline[20]; char supply[20]; char add[20]; struct pro *next; } Elemsn; //为结构体命名// 用结构体定义商品信息。由于编号、名称、价格、数量等是用于描述一个有机整体—商品,为了表明这些字段不是孤立的,而是共同描述一个完整的事物,因此用结构体这种形式来体现。 3.2模块设计 1、模块描述 对若干商品价格,名称,生产日期等记录进行创建商品信息文件、增加商品信息、删除商品信息、修改商品信息、查询商品信息、显示商品信息和排序全部信息几项功能管理。对文件有修改的操作,会将操作结果保存至文件,对于需要查看结果的操作,文件中的操作结果将会显示于屏幕上。 2、模块设计 总体框架图:商品库存管理系统 1.添加商品信息 2删除商品信息 3修改商品信息 4查询商品信息 5.显示商品信息 6排序全部商品信息 3、系统模块流程图 商品库存管理 创建商品信息 添加商品信息 删除商品信息 修改商品信息 查询商品信息 显示商品信息 排序全部信息 -----系统模块结构图----- 4.测试结果与分析 执行效果如下: 1、主界面: 2、输入1后编辑的商品信息(创建新文件): 3、保存文件后,进入商品库存管理系统: 4、执行1添加功能: 5、执行2删除功能: 6、执行3修改功能: 7、 执行4查询功能: 8、 执行5显示功能: 9、 执行6排序功能: 5.课程设计总结 经过一个礼拜的努力,终于,一个比较完整的小型商品库存管理系统就创建完毕了。我们组创建的商品库存管理,系统能实现商品信息的添加,删除,修改,查询,显示,排序等简单的基本功能。 虽然这个课程设计是从寒假就开始准备了,但是说实话,在没有人能商量的情况下,我对这个课程设计的题目还是一头雾水的,虽然有上网查找资料并且问了家里有从事编程工作的亲戚,但是,我想说请原谅我的迟钝,因为我还是对课程设计无从下手。 来了学校后,因为开学的第三周是课程设计,我特地去问了学姐有关课程设计的信息,并去图书馆查了大量资料。可能是由于资料的繁多重复吧,我没办法从里面理出头绪,所以我让组长给我整理了资料,十分感谢我们组的组长,他给我整理的资料很简练,在后面几天的编程中,我有不懂并且解决不了的程序问题,他都很耐心的帮我解答,调试。从这次的课程设计,从组长那里,我想我学到了很多,从第一天的无从下手到最后检验是能运行简单的功能操作,虽然程序还不是很完善,但是我还是感到很开心。 老师检验的时候,问了我这样一个问题,她问:你for循环体在哪里?好吧,我突然感觉很糟糕,因为我只看到一个分号,下面的printf并不是循环体,可是我不知道该怎么说,我想不起来那个叫什么,我那个程序里的for循环只是起到一个将信息全部读完的作用。是的,很糟糕,真是太糟糕了。好吧,我承认,我的基本功真的不扎实。 经过这次的课程设计,我觉得做一个系统真的需要很好的逻辑能力,并且你的基本功要扎实,不然大小错误会不断。还有我发现当你只看不做的时候,觉得什么都不会,当你去尝试了去讨论了去做出结果了,可能结果不是很如人意,但是你会收获很多很多。 我很幸运我能有这样一次机会,对老师来说可能做的很糟,但是对我来说已经是个很大的突破了,因为我动手做了,动脑想了,还去讨论了,可以说是没什么遗憾了吧,唯一感到很遗憾的是一周的时间真的是太少了。 我想在以后在我学习了更多之后,我的程序会更好,到时候我希望自己能独立写出一个能运行的系统程序。 附录:源程序清单 #include "stdio.h" #include "stdlib.h" #include "string.h" # include "conio.h" # define N sizeof(struct pro) //测结构体变量的大小// typedef struct pro { char number[20]; char name[20]; char amount[20]; char deadline[20]; char supply[20]; char add[20]; struct pro *next; }Elemsn; //为结构体命名// Elemsn *creatlink(void) //创建链表信息// { Elemsn *p1,*p2,*head; //p1为前驱,p2为后继// int i=1; char choice; head=p2=(Elemsn *)malloc(N); head->next=NULL; choice='y'; for(i=1;choice=='y'||choice=='Y';i++) { p1=(Elemsn *)malloc(N); printf("*******************************************************************************\n\n"); 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("%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 fliename[20]; printf("\n请输入你要保存的文件名:"); scanf("%s",fliename); if((fp=fopen(fliename,"wt"))==NULL) { printf("写文件出错,按任意键退出!"); getche(); exit(1); } for(p=h->next;p!=NULL;p=p->next) fprintf(fp,"%s %s %s %s %s %s\n",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 filename[20]; printf("\n请输入要打开的文件名:"); 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 %s\n",p->number,p->name,p->amount,p->deadline,p->supply,p->add); q->next=p; q=p; } 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->deadline); 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 num[20]; Elemsn *p; char choice; if(p0->next==NULL) { printf("该商品不存在!按任意键退出!"); getch(); 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 出产地:%s\n\n",p->number,p->name,p->amount,p->deadline,p->supply,p->add); printf("\n是Y,否N:"); //显示要删除的商品的信息// choice=getche(); if(choice=='Y'||choice=='y') { p0->next=p->next; free(p); printf("\n文件删除成功!"); } printf("\n按任意键结束!"); getche(); return p0; } Elemsn *modify(Elemsn *h) //修改信息// { char num[20]; Elemsn *p; char choice; printf("\n请输入要修改商品信息的编号:"); scanf("%s",num); for(p=h;strcmp(p->number,num)!=0;p=p->next) ; //找到要修改的商品的信息// while(1) { printf("请输入修改后商品的信息:\n"); printf("编号:"); 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 出产地:%s\n\n",p->number,p->name,p->amount,p->deadline,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 num[20]; Elemsn *p; printf("\n请输入你要查找的商品的编号:"); scanf("%s",num); for(p=h;strcmp(p->number,num)!=0;p=p->next) ; printf("你查找的商品信息如下:\n"); printf("\n编号:%s 名称:%s 数量:%s 保质期:%s 供货商:%s 出产地:%s\n\n",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 出产地:%s\n",p->number,p->name,p->amount,p->deadline,p->supply,p->add); p=p->next; } printf("\n按任意键继续!"); 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); 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欢迎来到商品库管理系统主界面!\n\n\n"); printf("\n\n\n 1.创建新文件.\n\n\n"); printf(" 2.读取原文件,并执行相应操作.(原文件名为:jxx)"); printf("\n\n\n 0.退出;"); printf("\n\n\n\n\n请选择你要执行的操作:"); scanf("%d",&ok); if(ok==1) { system("cls"); head=creatlink(); //创建新链表并保存文件// savelink(head); } if(ok==2) { head=readlink(); //进入文件,对已知数据进行操作// for(i=1;choice!=0;i++) { system("cls"); printf("************欢迎来到商品库管理系统************\n\n\n"); printf(" 1. 添加商品信息; \n\n"); printf(" 2. 删除商品信息; \n\n"); printf(" 3. 修改商品信息; \n\n"); printf(" 4. 查询商品信息; \n\n"); printf(" 5. 显示商品信息; \n\n"); printf(" 6. 排序全部信息; \n\n"); printf(" 0. 退出; \n\n"); 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; } } } } }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 图书 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Fis****915】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Fis****915】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Fis****915】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Fis****915】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文