C课程设计报告-超市管理系统.doc_第1页
C课程设计报告-超市管理系统.doc_第2页
C课程设计报告-超市管理系统.doc_第3页
C课程设计报告-超市管理系统.doc_第4页
C课程设计报告-超市管理系统.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安郵電大學C语言课程设计报告 题 目: 超市管理系统 院系名称: 计算机学院 专业名称: 计算机科学与技术班 级: 110X班学生姓名: 甘甘学号(8位): 04111XXX指导教师: 宋老师设计起止时间:2012年6月6日2012年6月15日一. 设计目的1、 强化上机动手能力,在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握工程化软件设计的基本方法2、 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力3、 为后续各门计算机课程的学习打下坚实基础二. 设计内容1、运用结构体、链表和指针编辑一个简单的超市商品基本信息管理系统,使之能够完成商品基本信息的录入、修改、删除、添加、排序、统计、查询、退出操作。2、执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。3、执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为止。4、请老师检查,向老师演练此程序,并能回答老师提出的相关问题。三概要设计1功能模块图;主 函 数 录入模块 修改模块 删除模块 添加模块 排序模块 统计模块 查询模块退出模块2各个模块详细的功能描述。(1)录入模块:对定义的商品信息结构体变量,利用循环,将键入的商品信息保存至指定文件。其中,货号、价格、数量定义为整型,名称、类型定义为字符型。输入完成后,按任意键返回菜单。(2)修改模块:选择修改选项,界面显示出所有商品信息,输入要修改商品的货号,利用循环、判断语句,找到对应的信息,再利用switch语句选择任意一项进行修改,若没有与货号所对应的商品信息,按任意键返回菜单。 (3)删除模块: 选择删除选项,界面显示出所有商品信息,选择商品货号,再进行删除。若无与货号相对应的商品信息,则输出“抱歉!找不到与货号相对应的商品信息”。 (4)增加模块:选择增加选项,按界面提示逐步输入商品信息。 (5)排序模块:选择排序选项。有2种排序方式:按价格排序,按货号排序。选择其中一项,将显示价格从高到低的排列的商品信息或货号从大到小排列的商品信息。(6)统计模块:选择统计选项。利用输出函数将所有商品信息在界面上显示出来。(7)查找模块:选择查找选项。此模块有2种查询方式:按货号查找、按价格查找。通过循环判断查找,如果找到则显示该商品的全部信息,否则,将输出没有查到该商品信息,,给以提示。(8)退出模块:选择退出选项。若想要继续商品管理系统则输入Y,否则输入N。四详细设计1功能函数的调用关系图主函数登录系统函数退出系统函数顾客系统员工系统录入函数修改函数删除函数增加函数排序函数统计函数查找函数退出函数排序函数统计函数查找函数退出函数按价格排序按货号排序按价格查找按货号查找2各功能函数的数据流程图录入模块输入信息输入成功返回菜单修改模块输入修改商品货号显示商品基本信息信息存在货号名称类别单价数量选择修改项显示修改后信息返回菜单删除模块显示所有商品信息选择货号成功删除显示删除后的商品信息返回菜单无此商品增加模块输入货号输入名称输入类型输入单价输入数量成功输入返回菜单排序模块按价格排序按货号排序选择价格选择货号显示排序后商品信息返回菜单查找模块按价格查找按货号查找选择价格选择货号显示相应的商品信息返回菜单无此价格无此货号3重点设计及编码(1)录入模块货号 名称 类型 单价(元) 数量 1 菜刀 厨具 15 8 6 苹果 水果 5 254 空调 电器 3000 11 编码:struct goods *input(void) int n=0;char ch;struct goods *head;struct goods *p1,*p2; head=(struct goods *)malloc(L); p1=(struct goods *)malloc(L);p2=head; printf(nnttt请输入商品信息:(按0结束输入)nn);printf(ttt 货号: ); scanf(%d,&p1-number); printf(ttt 名称: ); scanf(%s,p1-name); printf(ttt 类型:); scanf(%s,p1-type); printf(ttt 单价(元):); scanf(%d,&p1-price); printf(ttt 数量:); scanf(%d,&p1-amount); while(p1-number!=0) p2-next=p1; p2=p1; p1=(struct goods *)malloc(L); printf(nttt 货号: ); scanf(%d,&p1-number); if(p1-number=0) break; printf(ttt 名称: ); scanf(%s,p1-name); printf(ttt 类型:); scanf(%s,p1-type); printf(ttt 单价(元):); scanf(%d,&p1-price); printf(ttt 数量:); scanf(%d,&p1-amount); p2-next=NULL;free(p1);printf(nnttt 商品信息录入成功!nnttt 按任意键返回菜单。 );ch=getch(); return head ;(2)修改模块选择修改,输入商品货号,再选择所需修改的项目:1货号,2名称,3类型,4单价,5数量。如选择货号:1,修改项:4单价,则在屏幕上显示:货号 名称 类型 单价(元) 数量 1 菜刀 厨具 12 8(3)删除模块如要删除某商品的信息,按货号删除,输入该商品货号,按回车键成功删除。若选择货号:4,则屏幕上显示:货号 名称 类型 单价(元) 数量 1 菜刀 厨具 15 8 6 苹果 水果 5 25 若无与货号相对应的商品,如7号商品,则输出“抱歉!找不到与货号为7的商品信息”。(4)增加模块 按屏幕提示依次输入商品信息,如: 请输入货号:9 请输入名称:读者 请输入类型:杂志 请输入单价:4 请输入数量:10 (5)排序模块1选择按价格排序:货号 名称 类型 单价(元) 数量 1 菜刀 厨具 15 8 6 苹果 水果 5 259 读者 杂志 4 10 2选择按价格排序:货号 名称 类型 单价(元) 数量 9 读者 杂志 4 10 6 苹果 水果 5 251 菜刀 厨具 15 8 编码:struct goods *sort1(struct goods *head) struct goods *p, *h, *q, *temp, t; /价格排序 h=head-next; printf(nnnnnttt商品按价格从高到低排序为:nn); for(p = h; p ; p = p-next) for(q = p-next; q; q = q-next) if(p-price) - (q-price)next; p-next = q-next; q-next = temp; print(head); printf(nttt按任意键返回菜单。); return head; struct goods *sort2(struct goods *head) struct goods *p, *h, *q, *temp, t; /货号排序 h=head-next; printf(nnnnnttt商品按货号排序为:nn); for(p = h; p; p = p-next) for(q = p-next; q; q = q-next) if(p-number) - (q-number)next; p-next = q-next; q-next = temp; print(head); printf(nttt按任意键返回菜单。); return head; (6)统计模块在屏幕上显示所有商品信息。(7)查找模块 有两种方式:1. 选择按货号查找,输入货号,屏幕出现相应的商品信息。如输入货号9,则显示:货号 名称 类型 单价(元) 数量 9 读者 杂志 4 102. 选择按价格查找,输入价格,屏幕出现相应的商品信息。如输入价格5,则显示:货号 名称 类型 单价(元) 数量 6 苹果 水果 5 25 若输入的货号货价格不在统计表中,则输出“没有找到相关商品”。 编码:find(struct goods *head) struct goods *p; int a,b;printf(请选择:n); printf(tt1.按货号查找ntt2.按价格查找);printf(nntt请输入序号: ); scanf(%d,&b); if(b=1) printf(n输入你要查询的商品货号: ); scanf(%d,&a); printf(n); p=head-next;while(p!=NULL)if(p-number=a) printf( tt货号 名称 类型 单价(元) 数量 ); printf(n t%d %s %s %d %dn,p-number,p-name,p-type,p-price,p-amount);break; p=p-next; if(p=NULL) printf(n没有找到相关商品nn) if(b=2) p=head-next;printf(n输入你要查找的商品价格: ); scanf(%d,&a); while(p!=NULL)if(p-price=a printf( tt货号 名称 类型 单价(元) 数量 ); printf(n t%d %s %s %d %dn,p-number,p-name,p-type,p-price,p-amount) break; p=p-next; if(p=NULL) printf(n没有找到相关商品nn); printf(按任意键返回菜单。); return(0);(8)退出模块 选择后,屏幕上将提示继续操作还是退出。选择Y返回主菜单,选择N退出。五测试数据及运行结果1正常测试数据和运行结果录入模块: 修改模块:删除模块:2异常测试数据及运行结果查找模块:删除模块:六调试情况,设计技巧及体会1改进方案我对这次的实验设计完成的还比较满意,这个超市管理系统主体上利用结构体、链表完成,密码部分运用了数组知识,运用VC编写完成。 此程序的不足之处是基本信息方面还不够完善,譬如没有保质期,销售状况等方面的信息。另一方面就是在运行此程序时。需要执行操作的提示语不够具体和完善。改进方法:在时间充足的情况下多建立结构体数组存储商品基本信息,使得商品信息更加完善。此外,可以在编程时加一些必要的提示语,如“输入完毕,是否确认”、“是否继续”等。2体会课程设计看似简单,实则不然。首先,我花费了三、四天时间写程序,以后的大多数时间就在调程序。先是构思结构大体框架,再考虑细节。这让我明白“宏观主宰全局,细节决定成败”的道理,即使是小到一个分号也有可能使你的程序无法运行。写程序的时候必须很认真,要有耐心,欲速则不达。程序的关键在于调试程序。C语言程序对我们来说比较难,在匆忙的学习中更是难上加难。在这次的学习中我学会了如何写一个好程序,在老师和其他同学的的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定。学习C语言以来,我第一次体会到原来编程也挺有意思的,也领略了熬夜编程的滋味,懂得了要收获就得付出的道理。感谢老师和同学的帮助,让我成功完成了课程设计。七.参考文献C语言程序设计王曙燕版,C程序设计谭浩强版。八附录:源代码(电子版)#include#include#include#include#include#include#define L sizeof(struct goods)void welcome();void Menu(); int menu1();int menu2();int select1( );int select2();struct goods *readfile();void savefile(struct goods *p);struct goods *input(void); void modify(struct goods *head);struct goods *delet(struct goods *p0);struct goods *add(struct goods *head);void Sort(); struct goods *sort1(struct goods *head);struct goods *sort2(struct goods *head);print(struct goods *head);int find(struct goods *p); void finish(); struct goods /商品结构体/int number;char name20;char type10; int price;int amount;struct goods *next;int n;void main() /主函数/ system(color 37); welcome();void welcome()char ch;printf(n n); /欢迎界面,进入主菜单栏printf( nn); printf( # 欢迎 #n); printf( n); printf( 欢迎来到GAN超市! n); printf( n);printf( GAN超市竭诚为您服务! n); printf( n);printf( 如果您有任何问题,欢迎拨打客服热线88888888. n); printf( n);printf( 本超市禁止吸烟! n); printf( n);printf( 请按任意键进入主菜单 n); printf( nn);printf( 制作人:甘娜n); printf( 班级:计科1103n); printf( 日期:2012年6月12日nn);printf( n);printf( n); ch=getch(); system(cls); if(ch) printf(nn); Menu();void Menu() /主菜单,进行工作人员或顾客的选择 int m; char code17=123456,s7; char code27=654321,t7; int i; printf(nnn nn); printf( 请登录:nn); printf( 1.工作人员管理系统。nn); printf( 2.顾客管理系统。nn); printf( 3.退出系统!nn); printf( 请选择: ); scanf(%d,&m); printf(n nn); if(m=1) printf(tt 请输入密码: ); flushall(); gets(s); for(i=0;i2;i+) if(strcmp(code1,s)=0) system(cls); menu1(); else printf(tt错误!重新输入: ); gets(s); if(i=1) printf(tt输入错误密码已有3次,强行退出系统。n); break; if(m=2) printf(tt 请输入密码: ); flushall(); gets(t); for(i=0;inumber); printf(ttt 名称: ); scanf(%s,p1-name); printf(ttt 类型:); scanf(%s,p1-type); printf(ttt 单价(元):); scanf(%d,&p1-price); printf(ttt 数量:); scanf(%d,&p1-amount); while(p1-number!=0) p2-next=p1; p2=p1; p1=(struct goods *)malloc(L); printf(nttt 货号: ); scanf(%d,&p1-number); if(p1-number=0) break; printf(ttt 名称: ); scanf(%s,p1-name); printf(ttt 类型:); scanf(%s,p1-type); printf(ttt 单价(元):); scanf(%d,&p1-price); printf(ttt 数量:); scanf(%d,&p1-amount); p2-next=NULL;free(p1);printf(nnttt 商品信息录入成功!nnttt 按任意键返回菜单。 );ch=getch(); return head ;void modify(struct goods *head)int number;int n;struct goods *p;p=head;printf(n); print(head);printf(n请输入要修改商品的货号: );scanf(%d,&number);while(p!=NULL) if(p-number=number) printf(n要修改的商品信息项目:ntt 1.货号ntt 2.名称ntt 3.类型ntt 4.单价ntt 5.数量n); printf(nt 请选择: ); scanf(%d,&n); if(n=1) printf(tt 请重新输入货号: ); scanf(%d,&p-number); else if(n=2) printf(tt 请重新输入名称: ); scanf(%s,p-name); else if(n=3) printf(tt 请重新输入类型: ); scanf(%s,p-type); else if(n=4) printf(tt 请重新输入单价: ); scanf(%d,&p-price); else printf(tt 请重新输入数量: ); scanf(%d,&p-amount); printf(n修改后的商品信息:); printf( 货号 名称 类型 单价(元) 数量 ); printf(nttt%d %s %s %d %dn,p-number,p-name,p-type,p-price,p-amount); break; else p=p-next;/*if(p=NULL) printf(没有找到相应的商品信息);*/printf(nn按任意键返回菜单。);struct goods *delet(struct goods *head) struct goods *p,*p2;int a;printf(nn);print(head);printf(请输入你要删除的商品货号: ); scanf(%d,&a);p=head;while(p-number!=a&p-next!=NULL)/*删除时需要两个变量,保证最后P指向要删除结点,P2指向前一个结点*/ p2=p;p=p-next;if(p-number=a) if(p=head) head=p-next; else p2-next=p-next;printf(n货号为 %d 的商品信息已成功删除!nn,a); print(head);printf(n输入任意键返回菜单。);elseprintf(n抱歉!找不到与货号为 %d 的商品相关信息。n,a); printf(n输入任意键返回菜单。);return(head);struct goods *add(struct goods *head) /增加 struct goods *p,*p3; printf(nntt请输入要添加的商品信息:n); p3=(struct goods *)malloc(L); printf(ntt 请输入货号: ); scanf(%d,&p3-number); printf(tt 请输入名称: ); scanf(%s,p3-name); printf(tt 请输入类型: ); scanf(%s,p3-type); printf(tt 请输入单价: ); scanf(%d,&p3-price); printf(tt 请输入数量: ); scanf(%d,&p3-amount); p=head; while(1) if(p-next!=NULL) p=p-next; else p-next=p3; break; printf(nntt添加商品信息成功!nntt按任意键返回

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论