版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学*软件学院(本科)2014 年秋季学期计算机应用基础课程设计说明书题题题题题题题题题题题题题题题题 2014题题题 4题题题题题题题题题题1417700221题题题题题 题题题题题目 录1 系统分析11.1 课程设计内容11.2 系统功能需求分析11.3 数据结构设计22 系统设计32.1 总体设计32.2 详细设计42.2.1 界面设计42.2.2 各功能模块的设计53 系统编码设计113.1 main 函数113.2 load 函数123.3 creat 创建链表函数133.4 search函数163.5 add 数203.6 amend 函数223.7 del 函数253.8
2、purchase函数 . 26C 语言课程设计商场商品管理信息系统3.9 sales函数283.10 print 函数293.11 save 函数333.12 menu 函数344 系统运行365 总结411 系统分析1.1 课程设计内容1 设计一商场商品信息管理系统,功能包括:1. 文件操作:可建立、打开、保存、关闭数据文件。2. 输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等。3. 编辑数据:可添加、删除、修改数据。4. 输入进货、销售信息:输入商品编号、数量完成进货或销售操作。5. 计算:应在输入进货及销售信息时,自动更改商品数量。6. 查询:可按商品编号、商
3、品名或类别查询;还可查询需进货的商品。7. 排序:可按编号、名称或类型排序。8. 浏览:可浏览输入、查询或排序后的数据。广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统1.2 系统功能需求分析本系统应具有以下功能:1 、文件操作功能 :可建立、打开、保存、关闭数据文件。2 、数据输入功能 : 数据包括商品编号、商品名、商品类别、商品数量、商品价格等。以及输入商品编号、数量完成进货或销售操作。3 、数据添加、修改、删除功能4 、计算功能:在输入进货及销售信息时,自动更改商品数量。5 、查询功能:可按商品编号、商品名或类别查询;还可查询
4、需进货的商品。6 、排序功能:可按编号、名称或类型排序。7 、数据显示功能:可浏览输入、查询或排序后的数据。1.3 数据结构设计struct shangpingxinxi/*结构体,用于存放主要数据*/long number;/*商品编号 */2char name100;/*商品名 */char leibie100;/* 商品类别 */int kucun;/*库存量 */float jiage;/* 商品价格 */struct shangpingxinxi *next;/*指向下一个结构体的指针 */ int n,k;/*全局变量 */struct shangpingxinxi *head;/
5、*局部变量 */struct shangpingxinxi *p1,*p2,*p3;/*局部变量 */广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统char temp20;/*局部变量 */int/long/char/float a,b,c,d,e,f,i,j; /* 局部变量 */FILE *fp;/*局部变量,用于指向文件*/2 系统设计2.1 总体设计3 按系统分析的功能要求将系统划分为以下几个主要功能模块:广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统2.2
6、详细设计2.2.1 界面设计1 、菜单设计读取文件按编号查询创建数据按名称查询查询信息按类别查询修改信息查询须进货商品删除信息主菜单添加信息进货信息销售信息按编号顺序浏览浏览信息按名称顺序浏览保存文件按类别顺序浏览42 、输入界面的设计? 输入商品编号:提示输入 7 位商品编号。编号应为首位不为 0 的数字编号,当输入字符和非 7 位数字时提示错误;添加商品时,还应检查是否有重复编号,如有重新输入。? 输入商品名称 : 提示输入商品名称。可输入任意字符串,但为了对齐最好不超过八个字符,以回车为输入结束。? 输入商品类型:提示输入商品类型。可输入任意字符串,但为了对齐最好不超过八个字符,以回车为
7、输入结束。广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统? 输入商品库存:提示输入大于零的商品库存(大于 0 )。可输入 0 32767 的任意数字,当输入为字符和小于 0 的数字时提示错误,重新输入。?输入商品价格:提示输入大于零的商品价格(大于0 )。可输入 0 3.4 10 38 的任意浮点数,当输入为字符和小于0 的数字时提示错误,重新输入。3 、信息显示界面的设计菜单信息显示:在页面中央以阶梯状加半框形式显示,页面底部显示提示信息。商品信息显示:应显示商品编号、商品名称、商品类别、库存数量、商品价格五种信息,并以表格形式
8、显示。52.2.2 各功能模块的设计根据划分的功能模块,定义以下函数实现各功能:(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)1 、 主函数 main()广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统定义变量进入欢迎界面输入密码密码正确?进入主菜单switch(k)k=1读取文件k=2创建信息k=3查询信息k=4修改信息k=5删除信息返回重新输入密码k=6添加信息k=7进货信息k=8销售信息k=9浏览信息k=10保存文件返回主菜单退出程序广东工业大学管理学院08 信息管理与信息系统5 班林跃31080063
9、58C 语言课程设计商场商品管理信息系统2 、 读取文件函数struct shangpingxinxi *load(struct shangpingxinxi *head)定义变量输入所要打开的文件路径及文件名文件是否存在打开文件读取文件中的目录开辟一个内存空间读取一个信息6再开辟一个空间再开辟一个内存空间退出本函数读取信息到内存空间关闭文件输出读入的信息到屏幕退出本函数3 、 创建链表函数(输入数据函数)struct shangpingxinxi *creat(void)定义变量开辟一个内存空间开辟内存空间输入商品编号并判断是否有效和重复输入商品名称并判断是否有效广东工业大学管理学院08 信
10、息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统输入商品类别并判断是否有效输入商品库存并判断是否有效输入商品价格并判断是否有效判断是否输入结束退出函数4 、 查询函数struct shangpingxinxi *search(struct shangpingxinxi *head)定义变量内存中是否有数据信息进入选择菜单a=1按商品编号查询a=2按商品名查询7退出此函数a=3按商品类别查询a=4查询需进货商品返回选择菜单退出此函数5 、 添加函数struct shangpingxinxi *add(information *head,information*n
11、ewgoods)广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统定义变量开辟一个新内存空间输入需添加商品的名称输入需添加商品的类别输入需添加商品的库存判断是否合法输入需添加商品的价格判断是否合法是否保存返回重输退出此函数6 、 修改函数struct shangpingxinxi *amend(struct shangpingxinxi *head)广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统定义变量内存中是否有数据输入需修改的商品编号并查询是否存在输入修改后的商品编号
12、并判断是否合法和重复输入修改后的商品名称输入修改后的商品类别输入修改后的商品库存并判断是否合法退出此函数输入修改后的商品价格并判断是否合法显示修改后的信息确认修改?修改成功返回重输退出此函数7 、 删除函数struct shangpingxinxi *del(struct shangpingxinxi *head)定义变量内存中是否有数据输入需删除的商品编号是否存在 ?显示该商品信息返回重输退出此函数是否删除?删除该商品信息返回重输退出此函数8广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统8 、 进货函数struct shangp
13、ingxinxi *purchase(struct shangpingxinxi *head)定义变量内存中是否有数据输入所进货商品的编号是否存在 ?显示该商品信息返回重输9退出此函数输入进货量显示该商品信息退出此函数9 、 销售函数struct shangpingxinxi *sales(struct shangpingxinxi *head)定义变量内存中是否有数据输入所销售商品的编号是否存在 ?显示该商品信息返回重输输入销售量退出此函数库存 销售量?显示该商品信息返回重输退出此函数广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系
14、统10 、排序函数(输出函数)void print(struct shangpingxinxi *head)定义变量10内存中是否有数据信息进入选择菜单a=1按商品编号 顺序浏览a=2按商品名 顺序浏览退出此函数a=3按商品类别 顺序浏览a=0返回选择菜单退出此函数11 、保存函数void save(struct shangpingxinxi *p1)广东工业大学管理学院08 信息管理与信息系统5 班林跃3108006358C 语言课程设计商场商品管理信息系统定义变量内存中是否有数据输入文件地址和文件名能否打开?打开文件把内存中的信息保存到文件退出此函数在屏幕上显示信息退出此函数关闭文件退出此
15、函数广东工业大学管理学院08 信息管理与信息系统5 班林跃31080063583 系统代码设计3.1 main函数#include 11#include #include #include #define LEN sizeof(struct shangpingxinxi) structshangpingxinxilong number;/*7位商品编号char name100;/*商品名 */leibie100;/*商品类别 */int*/charkucun;/*品价格 */*next;库存量 */float jiage;/*struct shangpingxinxi商typedef stru
16、ct shangpingxinxi information;int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/void main() /*主函数 main, 功能:通过调用各函数,实现商品信息管理系统的功能 */information *head=0,*newgoods=0;int k=0; char a10;int j;char ch; pp:system(cls);/*清屏 */printf( 请输入密码:); j=0;while(ch=getch()!=13)putchar(*);aj=ch;j+; aj=0; if(strcmp(a,zeus880825)!=0)pr
17、intf(nn 密码错误 !); getch();goto pp;system(cls);/*清屏 */ lp: k=menu(k);switch(k)/*用 switch 语句实现功能选择*/12case 1: head=load(head);break;/*从文件调入记录函数 */case 2:head=creat();break;/*调用创建链表函数 */case 3:head=search(head);break;/*调用信息查询函数 */case 4:head=amend(head);break;/*调用修改信息的函数 */case 5:head=del(head); break;/
18、*调用删除信息函数 */case 6:head=add(head,newgoods);break;/*调用追加信息资料函数 */case 7:head=purchase(head);break;/*调用输入进货信息的函数*/case 8:head=sales(head);break;/*调用输入销售信息的函数*/case 9:print(head); break;/*调用显示信息资料函数*/case10:save(head);break;/*调用保存函数*/case 0: exit(0);/*退出系统,返回主界面*/default: printf(输入错误,请重试 !n); gotolp;3.
19、2 load函数information *load(information *head)/*函数 load ,功能 :从文件读入商品信息 */information *p1,*p2;char filepn10;FILE *fp;system(cls);/*清屏 */printf(请输入文件路径及文件名:);scanf(%s,filepn);/*输入文件路径及名称*/if(fp=fopen(filepn,r+)=NULL)printf(不能打开文件 !n);system(cls);/*清屏 */return 0;getch();fp=fopen(filepn,r+);fscanf(fp,n商品编
20、号 t商品名称 t商品类别 t库存数量 t商品价格n);n=0;p1=p2=(information *)malloc(LEN);/*开辟一个新单元 */fscanf(fp,%ldtt%stt%stt%dtt%fn,&p1-number,&p1-name,&p1-leibie,&p1-kucun,&p1-jiage);head=p1;13 ll:n=n+1;p2=p1;p1=(information *)malloc(LEN);/*开辟一个新单元 */fscanf(fp,%ldtt%stt%stt%dtt%fn,&p1-number,&p1-name,&p1-leibie,&p1-kucun,
21、&p1-jiage);p2-next=p1;if(p1-number!=0)goto ll;p2-next=NULL;fclose(fp);/*结束读入,关闭文件 */printf(n总有 %d 种商品的信息: n,n);printf(n商品编号 t 商品名称 t 商品类别 t 库存数量 t 商品价格n);p2=p1=head;doprintf(%ldtt%stt%stt%dtt%.2fn,p1-number,p1-name,p1-lei bie,p1-kucun,p1-jiage);p1=p1-next;while(p1!=NULL);getch();system(cls);/*清屏 */r
22、eturn (head);3.3 creat创建链表函数information *creat(void)/* 函数 creat,功能:创建链表,此函数带回一个指向链表头的指针 */ information *head;information *p1,*p2,*p3;int i;system(cls);/* 清屏 */n=0;p1=p2=p3=(information*)malloc(LEN);head=p3; /*开辟一个新单元 */repeat1: printf(请输入 7 位商品编号(退出请按“ 0”):);/* 输入编号,编号应大于 0*/scanf(%d,&p1-number);if(
23、p1 -number=0)goto end;14 elsewhile(p1 -numbernumber=10000000) printf( 输入错误!);goto repeat1; p3=head; if(n0) for(i=0;inumber!=p3-number)p3=p3-next;elseprintf( 编号重复 ,请重输 !n);goto repeat1;/* 当输入的编号已经存在,程序报错,返回前面重新输入*/printf( 请输入商品名: );scanf(%s,&p1-name);/*输入商品商品名 */printf( 请输入商品类别: );/* 输入商品类别 */scanf(%
24、s,&p1-leibie);printf( 请输入商品库存(大于 0):);/* 输入商品库存 */ scanf(%d,&p1-kucun); while(p1-kucunkucun);printf( 请输入商品价格(大于0):);/* 输入商品价格 */scanf(%f,&p1 -jiage);while(p1-jiagejiage);/*输入错误,重新输入商品价格直到正确为止*/head=NULL;while(p1-number!=0)15n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(information *)malloc(LEN);rep
25、eat2:printf(请输入 7 位商品编号(退出请按“0”):);scanf(%d,&p1 -number);/*输入编号,编号应大于0*/if(p1 -number=0)goto end;elsewhile(p1 -numbernumber=10000000)printf( 输入错误 !);goto repeat2;p3=head;if(n0)for(i=0;inumber!=p3-number)p3=p3-next;elseprintf( 编号重复 ,请重输 !n);goto repeat2;/* 当输入的编号已经存在,程序报错,返回前面重新输入*/printf( 请输入商品名:);s
26、canf(%s,&p1 -name);/*输入商品商品名*/printf( 请输入商品类别: );/* 输入商品类别 */scanf(%s,&p1 -leibie);printf( 请输入商品库存(大于 0):);/* 输入商品库存 */ scanf(%d,&p1-kucun); while(p1-kucunkucun);printf( 请输入商品价格(大于 0):);/* 输入商品价格 */ scanf(%f,&p1 -jiage); while(p1-jiagejiage);/* 输入错误,重新输入商品价格直到正确为止*/ end: p1=head;p3=p1;p2-next=NULL;/
27、* 链表结尾 */printf(nn 输入的商品数为 :%d 个!n,n);getch();system(cls);/*清屏 */return(head); 3.4 search函数information *search(information *head)/* 函数 search,功能:查询商品信息 */ information*p1,*p2;int a,b;long c;char t100;system(cls);/* 清屏*/if(head=NULL)printf(nnn 没有任何商品资料,请先建立商品资料!n);getch();system(cls);return(head); p2=
28、p1=head; lp2:system(cls);/* 清屏 */printf(nnnn);printf($n);printf($n);printf(printf($ 1 * 按商品编号查询 $n);n);17printf($t2 * 按商品名称查询 n);printf($n);printf($tt3 * 按商品类别查询 ttt $n);$ttttttt $n);printf(printf( ttt4 *查询需进货商品 (库存小于50) $n);printf(tttttttt$);printf( tttttt0 *退出 tt $n);printf(tttttttt $);printf(nttt
29、t$);printf(nnnnnn);printf( 请选择您所要的查询方式:);scanf(%d,&a);/*选择操作*/switch(a)/* 用 switch 语句实现功能选择 */*=*/ case1:system(cls);/* 清屏 */lp3:printf(请输入所要查询商品的7 位编号 (按0 返回选择界面):);lp10:scanf(%ld,&c);b=0;if(c=0)gotolp2;while(c=10000000)printf( 输入错误 n);goto lp3;while(c!=0) p1=head;while(c!=p1-number&p1 -next!=NULL)
30、 p2=p1; p1=p1-next;if(c=p1 -number)printf(n 商品编号 t 商品名称 t 商品类别 t 库存数量 t 商品价格 n);printf(%ldtt%stt%stt%dtt%.2fnn,p1 -number,p1-name,p1-leibie,p1-kucun, p1-jiage);b=1;18if(b=0)printf( 不存在 %d 该商品 !n,c);printf( 请输入要查询的商品的编号(按 0 返回选择界面 ):);gotolp10; break;/*=*/ case2:system(cls);/* 清屏 */lp7:printf( 输入所要查询
31、商品的名称(按 0 返回选择界面 ):);scanf(%s,&t);b=0;if(strcmp(t,0)=0)goto lp2;while(strcmp(t,0)!=0) p1=head;if(strcmp(t,p1-name)!=0&p1 -next!=NULL) p2=p1; p1=p1-next;if(strcmp(t,p1-name)=0)printf(n 商品名称 t 商品编号 t 商品类别 t 库存数量 t 商品价格 n);printf(%stt%ldtt%stt%dtt%.2fn,p1 -name,p1-number,p1-leibie,p1-kucun,p 1-jiage);b
32、=1;if(b=0)printf(n 不存在 %s 该商品 !n,t);printf(n 请输入要查询的商品的名称 (按 0 返回选择界面 ):); scanf(%s,&t); elsegotolp7; break; /*=*/19 case 3:system(cls);/* 清屏 */lp8:printf( 输入所要查询商品的类别 (按 0 返回选择界面 ):); scanf(%s,&t); b=0;if(strcmp(t,0)=0)goto lp2;p1=head;printf(n 商品类别 t 商品编号 t 商品名称 t 库存数量 t 商品价格 n); doif(strcmp(t,p1-
33、leibie)=0)printf(%stt%ldtt%stt%dtt%.2fn,p1 -leibie,p1-number,p1-name,p1-kucun,p 1-jiage);b+;p1=p1-next;while(p1!=NULL);if(b=0)printf(n 不存在 %s 该类型商品 !n,t);goto lp8;goto lp8; break; /*=*/ case 4: system(cls);/* 清屏 */b=0;printf( 商品编号 t 商品名称 t 商品类别 t 库存数量 t 商品价格 n);p1=head;if(head!=NULL)doif(p1 -kucunnu
34、mber,p1-name,p1-leibie,p1-kucun,p 1-jiage);b+;20p1=p1-next;while(p1!=NULL);printf(n 需要进货的商品有以上 %d 种 !,b);getch();system(cls);/* 清屏 */;break;case0: system(cls); return(head);default: printf( 输入错误 ,请重试 !n); goto lp2; 3.5 add数information *add(information *head,information *newgoods)/* 函数 add,功能:追加商品信息
35、*/ information *p0,*p1,*p2;int i,a;p1=newgoods=(information *)malloc(LEN);/* 开辟一个新单元 */system(cls);/* 清屏*/repeat:printf(请输入你想添加的商品的7 位商品编号(退出请按“0”) :);scanf(%ld,&newgoods-number);if(newgoods-number=0)goto end2;elsewhile(p1 -numbernumber=10000000)printf( 输入错误,请重新输入7 位商品编号 :);scanf(%d,&p1-number);p1=h
36、ead;if(n0)for(i=0;inumber!=p1-number)p1=p1-next;elseprintf( 编号重复 ,请重输 !n);goto repeat;printf( 请输入商品名: );scanf(%s,&newgoods-name); printf( 请输入商品类别:);scanf(%s,&newgoods-leibie);printf( 请输入商品库存(大于0):);/* 输入商品库存 */scanf(%d,&newgoods-kucun);while(newgoods-kucunkucun);printf( 请输入商品价格(大于0):);/* 输入商品价格 */scanf(%f,&newgoods -jiage);while(newgoods-jiagejiage);printf(n 商品编号 t 商品名称 t 商品类别 t 库存数量 t 商品价格 n);printf(%ldtt%stt%stt%dtt%.2fn,newgoods -number,newgoods-name,newgood s-leibie,newgoods-kucun,newgoods-jiage)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论