《2022年商品信息管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《2022年商品信息管理系统C语言课程设计.docx(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源*实践教案*软件学院(本科)2021年秋季学期运算机应用基础课程设计说明书题 目:公司产品治理系统专业班级:2021级软件 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 ame
2、nd函数223.7 del 函数253.8 purchase函数263.9 sales函数283.10 print 函数293.11 save函数333.12 menu 函数344 系统运行365 总结41欢迎下载精品学习资源1 系统分析1.1 课程设计内容1设计一商场商品信息治理系统,功能包括:1. 文件操作:可建立、打开、储存、关闭数据文件.2. 输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等 .3. 编辑数据:可添加、删除、修改数据 .4. 输入进货、销售信息:输入商品编号、数量完成进货或销售操作.5. 运算:应在输入进货及销售信息时,自动更换商品数量.6.
3、查询:可按商品编号、商品名或类别查询;仍可查询需进货地商品.7. 排序:可按编号、名称或类型排序 .8. 浏览:可浏览输入、查询或排序后地数据.1.2 系统功能需求分析本系统应具有以下功能:1 、文件操作功能 :可建立、打开、储存、关闭数据文件 .2 、数据输入功能 : 数据包括商品编号、商品名、商品类别、商品数量、商品价格等 .以及输入商品编号、数量完成进货或销售操作.3 、数据添加、修改、删除功能4 、运算功能:在输入进货及销售信息时,自动更换商品数量.5 、查询功能:可按商品编号、商品名或类别查询;仍可查询需进货地商品.6 、排序功能:可按编号、名称或类型排序 .7 、数据显示功能:可浏
4、览输入、查询或排序后地数据.1.3 数据结构设计struct shangpingxinxi/*结构体,用于存放主要数据 */欢迎下载精品学习资源long number;/*商品编号 */ 2char name100;/*商品名 */char leibie100 ;/* 商品类别 */int kucun;/*库存量 */float jiage ;/* 商品价格 */struct shangpingxinxi *next ;/* 指向下一个结构体地指针 */ int n,k ;/*全局变量 */struct shangpingxinxi *head;/* 局部变量 */ struct shangp
5、ingxinxi *p1,*p2,*p3 ; /* 局部变量 */ char temp20;/*局部变量 */ int/long/char/float a,b,c,d,e,f,i,j ; /* 局部变量 */FILE *fp ;/*局部变量,用于指向文件 */2 系统设计2.1 总体设计3按系统分析地功能要求将系统划分为以下几个主要功能模块:欢迎下载精品学习资源2.2 具体设计2.2.1 界面设计1 、菜单设计欢迎下载精品学习资源读取文件创建数据查询信息修改信息删除信息添加信息进货信息销售信息浏览信息按编号查询按名称查询按类别查询查询须进货商品主菜单按编号次序浏览按名称次序浏览欢迎下载精品学习
6、资源储存文件按类别次序浏览4欢迎下载精品学习资源2 、输入界面地设计输入商品编号:提示输入 7位商品编号 .编号应为首位不为 0地数字编号,当输入字符和非 7位数字时提示错误;添加商品时,仍应检查是否有重复编号,如有重新输入.输入商品名称 :提示输入商品名称 .可输入任意字符串,但为了对齐最好不超过八个字符,以回车为输入终止 .输入商品类型:提示输入商品类型 .可输入任意字符串,但为了对齐最好不超过八个字符,以回车为输入终止 .输入商品库存:提示输入大于零地商品库存(大于0).可输入 032767地任意数字,当输入为字符和小于 0地数字时提示错误,重新输入 .输入商品价格:提示输入大于零地商品
7、价格(大于0).可输入 03.4 1038地任意浮点数,当输入为字符和小于 0地数字时提示错误,重新输入 .3、信息显示界面地设计菜单信息显示:在页面中心以阶梯状加半框形式显示,页面底部显示提示信息.商品信息显示:应显示商品编号、商品名称、商品类别、库存数量、商品价格五种信息,并以表格形式显示 . 5欢迎下载精品学习资源2.2.2 各功能模块地设计依据划分地功能模块,定义以下函数实现各功能:(这部分应介绍各函数地原型,各功能模块实现所用地算法,可用流程图描述)欢迎下载精品学习资源1 、 主函数 main定义变量 进入欢迎界面输入密码欢迎下载精品学习资源Y密码正确?N进入主菜单欢迎下载精品学习资
8、源switchkk=1读取文件k=2创建信息k=3查询信息k=4修改信息k=5删除信息k=6添加信息k=7进货信息k=8销售信息k=9浏览信息k=10储存文件返回主菜单退出程序返回重新输入密码欢迎下载精品学习资源2 、 读取文件函数struct shangpingxinxi *loadstruct shangpingxinxi *head定义变量输入所要打开地文件路径及文件名Y文件是否存在N打开文件读取文件中地目录开创一个内存空间读取一个信息再开创一个再内开存辟空一间个空间读取信息到内存空间if p1- number. = 0退出本函数关闭文件输出读入地信息到屏幕退出本函数3 、 创建链表函数
9、(输入数据函数)struct shangpingxinxi *creatvoid定义变量开创一个内存空间开创内存空间输入商品编号并判定是否有效和重复输入商品名称并判定是否有效输入商品类别并判定是否有效输入商品库存并判定是否有效输入商品价格并判定是否有效6欢迎下载精品学习资源判定是否输入终止退出函数4 、 查询函数struct shangpingxinxi *searchstruct shangpingxinxi *head定义变量Y内存中是否有数据信息N进入挑选菜单switchaa=1a=2按商品编号查询按商品名查询a=3退出此函数a=4按商品类别查询查询需进货商品返回挑选菜单退出此函数75
10、、 添加函数struct shangpingxinxi *addinformation *head,information *newgoods欢迎下载精品学习资源定义变量开创一个新内存空间输入需添加商品地编号并判定是否合法和重复输入需添加商品地名称输入需添加商品地类别输入需添加商品地库存判定是否合法输入需添加商品地价格判定是否合法Y是否储存N将所开创空间链接到已有链表末尾返回重输退出此函数6 、 修改函数struct shangpingxinxi *amendstruct shangpingxinxi *head定义变量Y内存中是否有数据N输入需修改地商品编号并查询是否存在输入修改后地商品编号
11、并判定是否合法和重复输入修改后地商品名称输入修改后地商品类别输入修改后地商品库存并判定是否合法退出此函数输入修改后地商品价格并判定是否合法显示修改后地信息Y确认修改?N修改胜利返回重输退出此函数87 、 删除函数欢迎下载精品学习资源struct shangpingxinxi *delstruct shangpingxinxi *head定义变量Y内存中是否有数据N输入需删除地商品编号Y是否存在 ?N显示该商品信息返回重输Y退出此函数是否删除?N删除该商品信息返回重输退出此函数8 、 进货函数struct shangpingxinxi *purchasestruct shangpingxinxi
12、 *head定义变量Y内存中是否有数据N输入所进货商品地编号Y是否存在 ?N显示该商品信息返回重输退出此函数输入进货量显示该商品信息退出此函数99 、 销售函数struct shangpingxinxi *salesstruct shangpingxinxi *head欢迎下载精品学习资源定义变量Y内存中是否有数据N输入所销售商品地编号Y是否存在 ?N显示该商品信息返回重输输入销售量退出此函数Y库存销售量?N显示该商品信息返回重输退出此函数10 、 排序函数(输出函数)void printstruct shangpingxinxi *headY定义变量内存中是否有数据信息N进入挑选菜单swit
13、chaa=1a=2按商品编号 次序浏览按商品名 次序浏览退出此函数a=3a=0按商品类别 次序浏览返回挑选菜单退出此函数1011 、 储存函数void savestruct shangpingxinxi *p1欢迎下载精品学习资源定义变量Y内存中是否有数据N输入文件地址和文件名Y能否打开?N打开文件欢迎下载精品学习资源把内存中地信息储存到文件在屏幕上显示信息关闭文件退出此函数退出此函数退出此函数欢迎下载精品学习资源3 系统代码设计3.1 main函数#include 11#include #include #include #define LEN sizeofstruct shangpingx
14、inxi struct shangpingxinxilong number;/*7 位商品编号 */char name100;/* 商品名 */char leibie100 ;/* 商品类别 */intkucun;/* 库存量 */float jiage;/* 商品价格 */struct shangpingxinxi *next ; ;typedef struct shangpingxinxi information;int n,k ;/*n,k 为全局变量,本程序中地函数均可以使用它*/void main /* 主函数 main,功能:通过调用各函数,实现商品信息治理系统地功能 */info
15、rmation *head=0,*newgoods=0;int k=0; char a10;intj; char ch;pp:systemcls;/* 清屏 */ printf 请输入密码: ;j=0;whilech=getch.=13putchar* ;aj=ch ;j+;aj=0 ;ifstrcmpa,zeus880825.=0printfnn 密码错误 . ;getch;goto pp; systemcls;/* 清屏*/ lp: k=menuk ;switchk/* 用switch语句实现功能挑选 */ 12欢迎下载精品学习资源case 1: head=loadhead; break;
16、/* 从文件调入记录函数 */case 2:head=creat;break;/* 调用创建链表函数 */case 3:欢迎下载精品学习资源head=searchhead; head=amendhead;break;/* 调用信息查询函数 */case 4: break;/* 调用修改信息地函数 */case 5:欢迎下载精品学习资源head=delhead; break;/* 调用删除信息函数 */case 6:head=addhead,newgoods; break;/* 调用追加信息资料函数 */case 7:head=purchasehead; break;/* 调用输入进货信息地函数
17、 */case 8:head=saleshead; break;/* 调用输入销售信息地函数 */case 9:printhead; break;/* 调用显示信息资料函数 */case10:savehead;break;/* 调用储存函数 */case 0:exit0 ;/* 退出系统,返回主界面 */default: printf 输入错误 ,请重试 .n ; goto lp;3.2 load函数information *loadinformation *head/* 函数load,功能 :从文件读入商品信息*/information *p1,*p2 ;char filepn10; FIL
18、E *fp ;systemcls;/* 清屏*/printf 请输入文件路径及文件名 :;scanf%s,filepn;/* 输入文件路径及名称 */iffp=fopenfilepn,r+=NULLprintf 不能打开文件 .n ; getch;systemcls;/* 清屏*/return 0;fp=fopenfilepn,r+ ;fscanffp,n 商品编号 t商品名称 t商品类别 t库存数量 t商品价格n;n=0;p1=p2=information *mallocLEN ; /* 开创一个新单元 */ fscanffp,%ldtt%stt%stt%dtt%fn,&p1-number,
19、&p1-name,&p1-leibie,&p1-kucun,&p1-jiage ;head=p1; 13ll:n=n+1 ;p2=p1;p1=information *mallocLEN ; /* 开创一个新单元 */ fscanffp,%ldtt%stt%stt%dtt%fn,&p1-number,&p1-name,&p1-leibie,&p1-kucun,&p1-jiage ;p2-next=p1;ifp1-number.=0goto ll;欢迎下载精品学习资源p2-next=NULL ;fclosefp;/* 终止读入,关闭文件 */ printfn 总有%d种商品地信息: n,n;pr
20、intfn 商品编号 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;whilep1.=NULL ;getch; systemcls;/* 清屏*/ return head;3.3 creat创建链表函数information *creatvoid/* 函数 creat,功能:创建链表,此函数带回一个指向链表头地指针*/information *head;information *p1
21、,*p2,*p3 ;int i ;systemcls;/* 清屏*/ n=0;p1=p2=p3=information*mallocLEN ;head=p3;/* 开创一个新单元 */repeat1: printf请输入 7 位商品编号(退出请按 “ 0)”: ;/* 输入编号,编号应大于 0*/scanf%d,&p1-number;ifp1-number=0goto end; 14 elsewhilep1-numbernumber=10000000printf 输入错误 . ;goto repeat1;p3=head;ifn0欢迎下载精品学习资源fori=0;inumber.=p3-numb
22、erp3=p3-next;elseprintf 编号重复 ,请重输 .n ;goto repeat1;/* 当输入地编号已经存在,程序报错,返回前面重新输入*/printf 请输入商品名: ;scanf%s,&p1-name;/* 输入商品商品名 */ printf 请输入商品类别: ;/* 输入商品类别 */ scanf%s,&p1-leibie;printf 请输入商品库存(大于 0): ;/* 输入商品库存 */ scanf%d,&p1-kucun;whilep1-kucunkucun ;printf 请输入商品价格(大于 0): ;/* 输入商品价格 */ scanf%f,&p1-ji
23、age ;whilep1-jiagejiage ;/* 输入错误,重新输入商品价格直到正确为止*/ head=NULL;whilep1-number.=0 15n=n+1;ifn=1 head=p1; elsep2-next=p1;p2=p1;p1=information *mallocLEN ;repeat2:printf请输入 7 位商品编号(退出请按 “ 0)”: ; scanf%d,&p1-number;/* 输入编号,编号应大于 0*/ ifp1-number=0goto end;elsewhilep1-numbernumber=10000000欢迎下载精品学习资源printf 输入
24、错误 . ;goto repeat2;p3=head;ifn0fori=0 ;inumber.=p3-numberp3=p3-next;elseprintf 编号重复 ,请重输 .n ;goto repeat2;/* 当输入地编号已经存在,程序报错,返回前面重新输入*/printf 请输入商品名: ;scanf%s,&p1-name;/* 输入商品商品名 */printf 请输入商品类别: ;/* 输入商品类别 */scanf%s,&p1-leibie ;printf 请输入商品库存(大于 0): ;/* 输入商品库存 */ scanf%d,&p1-kucun;whilep1-kucunkuc
25、un ;printf 请输入商品价格(大于 0): ;/* 输入商品价格 */ scanf%f,&p1-jiage ;whilep1-jiagejiage ;/* 输入错误,重新输入商品价格直到正确为止*/ end: p1=head;p3=p1; p2-next=NULL ;/* 链表结尾 */printfnn 输入地商品数为 :%d 个.n,n ;getch;systemcls;/* 清屏*/ returnhead; 3.4 search函数information *searchinformation *head/* 函数 search功,能:查询商品信息 */欢迎下载精品学习资源infor
26、mation *p1,*p2 ;int a,b;long c;char t100;systemcls ;/* 清屏*/ifhead=NULLprintfnnn 没有任何商品资料,请先建立商品资料.n ;getch;systemcls;returnhead;p2=p1=head;lp2:欢迎下载精品学习资源systemcls;/* 清屏*/ printfnnnn ;printf$n;$n;printf$1 * 按商品编号查询 n;printf$n ; 17printf$t2 * 按商品名称查询 n;printf$n ;printf欢迎下载精品学习资源printf$tt3 * 按商品类别查询 tt
27、t $n ;printf$ttttttt $n ;printf ttt4 * 查询需进货商品 库存小于 50 $n;printftttttttt $ ;printf tttttt0 * 退出tt $n;printftttttttt $ ;printfntttt$;printfnnnnnn ;printf 请挑选您所要地查询方式 : ;scanf%d,&a;/* 挑选操作 */switcha/* 用 switch 语句实现功能挑选 */*=*/ case 1:systemcls;/* 清屏*/lp3:printf 请输入所要查询商品地 7 位编号按 0 返回挑选界面 : ;lp10:scanf%
28、ld,&c ;b=0;ifc=0 goto lp2;whilec=10000000printf 输入错误 n ;欢迎下载精品学习资源goto lp3;whilec.=0p1=head;whilec.=p1-number&p1-next.=NULLp2=p1;p1=p1-next;ifc=p1-numberprintfn 商品编号 t 商品名称 t 商品类别 t 库存数量 t 商品价格 n;printf%ldtt%stt%stt%dtt%.2fnn,p1-number,p1-name,p1-leibie,p1-kucun, p1-jiage;b=1; 18ifb=0printf 不存在 %d 该
29、商品.n,c ;printf 请输入要查询地商品地编号 按 0 返回挑选界面 : ;goto lp10; break;/*=*/ case 2:systemcls;/* 清屏*/lp7:printf 输入所要查询商品地名称 按 0返回挑选界面 : ; scanf%s,&t ;b=0;ifstrcmpt,0=0goto lp2;whilestrcmpt,0.=0p1=head;ifstrcmpt,p1-name.=0&p1-next.=NULLp2=p1;p1=p1-next;ifstrcmpt,p1-name=0printfn 商品名称 t 商品编号 t 商品类别 t 库存数量 t 商品价格
30、n;printf%stt%ldtt%stt%dtt%.2fn,p1-name,p1-number,p1-leibie,p1-kucun,p 1-jiage;b=1;欢迎下载精品学习资源ifb=0printfn 不存在 %s 该商品.n,t ;printfn 请输入要查询地商品地名称 按 0 返回挑选界面 : ;scanf%s,&t ;elsegoto lp7;break;/*=*/19case 3:systemcls;/* 清屏*/lp8:printf 输入所要查询商品地类别 按 0返回挑选界面 : ; scanf%s,&t ;b=0;ifstrcmpt,0=0goto lp2;p1=head
31、;printfn 商品类别 t 商品编号 t 商品名称 t 库存数量 t 商品价格 n;doifstrcmpt,p1-leibie=0printf%stt%ldtt%stt%dtt%.2fn,p1-leibie,p1-number,p1-name,p1-kucun,p 1-jiage;b+;p1=p1-next;whilep1.=NULL ; ifb=0printfn 不存在 %s 该类型商品 .n,t ;goto lp8;goto lp8 ;break;/*=*/case 4:systemcls;/* 清屏*/ b=0;printf 商品编号 t 商品名称 t 商品类别 t 库存数量 t 商
32、品价格 n;p1=head;ifhead.=NULL do欢迎下载精品学习资源ifp1-kucunnumber,p1-name,p1-leibie,p1-kucun,p 1-jiage;b+; 20p1=p1-next;whilep1.=NULL ; printfn需要进货地商品有以上 %d 种.,b ;getch;systemcls;/* 清屏*/ ;break;case 0:systemcls;returnhead;default: printf 输入错误 ,请重试.n ; goto lp2; 3.5 add数information *addinformation *head,inform
33、ation *newgoods/* 函数 add,功能:追加商品信息 */information *p0,*p1,*p2 ; int i,a;p1=newgoods=information *mallocLEN ;/* 开创一个新单元 */systemcls ;/* 清屏*/repeat:printf请输入你想添加地商品地 7位商品编号(退出请按 “0)”: ; scanf%ld,&newgoods-number; ifnewgoods-number=0goto end2;elsewhilep1-numbernumber=10000000printf 输入错误,请重新输入 7 位商品编号 :
34、;scanf%d,&p1-number;p1=head;ifn0欢迎下载精品学习资源fori=0 ;inumber.=p1-numberp1=p1-next;else printf 编号重复 ,请重输 .n ;goto repea;tprintf 请输入商品名: ;scanf%s,&newgoods-name;printf 请输入商品类别: ;scanf%s,&newgoods-leibie;printf 请输入商品库存(大于 0): ;/* 输入商品库存 */ scanf%d,&newgoods-kucun;whilenewgoods-kucunkucun;printf 请输入商品价格(大于 0): ;/* 输入商品价格 */scanf%f,&newgoods-jiage;whilenewgoods-jiagejiage;printfn 商品编号 t 商品名称 t 商品类别 t 库存数量 t 商品价格 n;printf%ldtt%st