




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计超市管理统目录第一章 课程设计目的要求1.1 设计目的 31.2 设计要求 31.3 设计思路 3第二章 课程设计任务内容2.1 课程设计题目 32.2 课程设计任务 42.2.1 设计内容 4222 各组员任务4第三章详细设计说明3.1 系统模块图43.2 主要函数定义553.3 结构体的建立和文件的使用 83.3.1 结构体的建立8第四章 课程设计心得与体会 10附录程序源代码参考文献第一章课程设计目的要求设计“超市管理系统”的主要目的是锻炼学生综合运用所学的 C语言程序 设计知识的能力,独自利用 C语言知识编写承训解决实际问题的能力,培养同 学严谨的工作态度和良好的程序设
2、计习惯,让同学们认识到必须重视实践环节, 多读程序,多编写程序,多上机实践。进一步培养结构化程序设计的思想,加深 对高级语言要素和控制结构的理解。通过课程设计的训练,学生能够了解程序设 计的基本开发过程,掌握编写、调试和测试C语言程序的基本过程,掌握程序设计的技巧的大体流程。本次程序设计主要侧重于知识的运用,把平时学到的运 用到实践中去。1.1设计目标:1. 熟悉c语言的编译连接和运行过程。2. 掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及 如何给它们赋值。3. 掌握if语句及switch语句的运用方法及嵌套应用方法。4. 掌握实现循环结构的三种语句 while、do-whil
3、e. 、for的使用。5. 掌握函数的定义方法和调用方法。6. 能够采用模块化思想调试程序。7. 指针和文件的使用,结构体的使用1.2设计要求:1. 源程序要有适当的注释,使程序容易阅读。2. 必须用结构体和文件等数据结构。3. 程序的运行结果要求使用文件作备份。4. 至少输出一份报表,鼓励自行增加新功能。第二章 课程设计任务内容2.1课程设计题目超市管理系统2.2课程设计任务系统为超市管理系统,在此系统当中需要用到许多函数,包括系统 函数以及自定义的函数,在这个系统当中,总共分为五个模块:管理员登 陆、客户信息管理、商品管理、购物结算、销售结算。2.2.1 设计内容本次实习中,主要用到的C语
4、言知识有结构体、指针、文件、数组。层层镶嵌的思路将各个模块要实现的功能环环相扣。其中,在管理员登陆后,进入的是主菜单,在这个环节当中,我们将菜单设计为函数,并将菜 单函数放入一个单独的C文件中管理,实现层层进入功能。主菜单函数又 分为商品管理、客户管理、购物结算、销售结算等函数的管理,在此当中, 主要采用结构体定义客户信息,文件访问等。为保证设计在规定时间内完成,我们将各模块分工到个人。确保任务 有质量有效率的同时锻炼团队的团结协作能力。第三章详细设计说明3.1系统模块图(未完)#in elude #in elude“MyParamsH#include“ Mymenu.h”#include“
5、common.h”#include“ CustMan.h”#include“Goodsman.h”二使用了 main() 函数、 aboutUs() 函数 ,login()函数和 pcontinue() 函数 void main()char choice=3; / 存储判断的选项dosystem(cls); / 清屏命令printf(nn*欢迎进入柠檬 5 超市管理系统 *nn);printf(n 请您选择操作选项: nn);printf(ttt1.登录 n);printf(ttt2.关于我们 n);printf(ttt3.退出系统 n);printf(nn*nn);printf(n 请输入您
6、的选项 (1,2,3):);choice=getch(); void aboutUs() system(cls);BreakLine;prin tf(tt版权所有型南工学院网络1101班柠檬 5nn);printf(ttt 柠檬 5专属,翻版必究nn);printf(tt技术扶持 Tell:);BreakLine;pcontinue(); int login()char upwd8;int i;system(cls);for(i=1;i4;i+)BreakLine;printf( 请输入您的 8位数密码 );scanf(%s,upwd);if(strcmp (upwd,realpassword
7、)=0)return 1;printf( 您好,您的密码错误,请确认后重新输入 n);printf(您还有d次输入机会, (3-i);printf(n 系统郑重提示,您不是合法用户,强制退出 n);exit(0); 在common.c定义void pcontinue()函数实现按任意键继续功能void pcontinue()按任意键继续 n);printf(tgetch();三清屏语句, Do while ,宏定义等的使用 清屏语句: system(cls);使用了 Do While 循环实现了在进入关于我们部分时可以再次返回登陆界面使用了宏定义。在头文件 MyParam.h中定义BreakL
8、ine #define BreakLineprintf(nn*nn)使用了 switch 语句进行了选择并且在语句中使用了多种函数嵌套使功能完整。switch(choice)case 1:if(login()=1)showMainMenu();break;case 2: aboutUs(); break;case 0: printf(nn系统安全退出 nn);exit(0);break;在输入密码部分使用了 For 循环,实现了在登陆三次密码不正确的情况下强制 退出系统:for(i=1;i4;i+)BreakLine;printf( 请输入您的 8位密码 :);scanf(%s,upwd);
9、/数组名代表数组的首地址,所以不要 &if(strcmp(upwd,realpassword)=0)return(1); /1 表示登录成功prin tf(n您好,您的密码错误,请确认后重新输入 n);printf(n您还有第c次输入机会,(3-i);printf(n系统郑重提示,您不是合法用户,强制退出npcontinue();exit(0);void showMainMenu();再在 void showMainMenu(); 其中嵌套void showGoodsMenu();void showCustMenu();void showShopMenu();void showSaleMenu
10、();和销在这些函数中也就是商品管理,客户信息管理,购物结算 , 售结算四大功能模块。依照前面的嵌套方法一一实现他的功能。 在四大模块菜单中有void addGoods();void findGoodsAll();void updateGoods();voiddelGoods();voidaddcust();voiddelcust();voidupdatecust();voidfindall();voidsaveAll();voidsaveall();实现了客户管理中:添加客户、查询客户、删除客户、修改客户、返回上一级 商品管理中:添加商品、查询商品、删除商品、修改商品、返回上一级 等部分的功
11、能。在四大模块菜单中有void showVIP();void Goodseffect();void Goodssave();void Birthdayperson();void showMymenue();void shopping(); 实现了购物结算中:商品交易信息、返回上一级 销售预算中: 显示最具有贡献精神 VIP 客户排行榜 显示最具有影响力的商品排行榜 显示库存商品量排行榜 当月生日的客户 以及返回上一级等功能3.3 结构体的建立和文件的使用在实现添加功能时使用了结构体、指针等对现阶段我们来说较难理解 的内容。我们会在程序中用到如下结构体语句:Struct date/ 日期int
12、year/ 年 int month/ 月 int day/ 日 Struct cust/ 客户信息 int no/ 编号 char name20 姓名 char sex/ 性别 int age/ 年龄 struct date birthday/生日double expenditure/ 花费char tel/ 电话号码Struct goods/ 商品信息nt num/ 商品代码char name50/ 商品名字int sale/ 商品数量float price/ 商品单价int lacation/ 商品位置在整个程序中我们会如下用到结构体语句,不同的结构体类型:struct custint n
13、o;char name20;char sex;int age; struct date birthday; double expendituer; char tel20; cust1000;3 3.2 文件的使用客户信息管理和商品管理都有用到文件,它于我们是重点也是难点 定义文件FILE*fp;int i;if(fp=fopen(cust.dat,wb)=NULL)printf(n 无法打开文件 n);return;for(i=0;itotal;i+) fwrite(&custi,sizeof(struct cust),1,fp);fclose(fp); 定义函数 read_message()
14、 打开文件i nt read_message()FILE*fp;int i=0;/ 记数/ 打开文件if(fp=fopen(cust.dat,rb)=NULL)printf(n* 暂无任何可读消息 , 按任意键继续 *n); getch();return 0; / 循环读取文件中的每一条记录 (3)结合循环语句,关闭文件while(!feof(fp)fread(&custi,sizeof(struct cust), 1, fp);if(custi.no=0)break;else i+;fclose(fp);return i;第四章 程序设计心得与体会 通过为期两周的课程设计,我们不仅复习了课本
15、上所学知识,还通过查阅 资料、询问老师同学学到了很多课本上没有的只是, 从而启发我们: 要想写好程 序,在学好课本只是的同时还需要多阅读和专业有关的书记, 同时还需要多动脑 子,要有缜密的逻辑思维能力和综合应用能力。简而言之,我们要做到三心:编 写代码要细心;检查错误要耐心;完成任务要恒心。除此,在学到知识的同时锻 炼了我们的团结合作精神,也使得我们小组成员之间有更深的交流。所以,很感谢学校和老师给我们提供这样一个机会。在锻炼自己的同时让 自己养成了良好的学习习惯。我希望自己能一直带着这份心态和习惯大步向前。参考文献1武爱平 卜耀华 孙东卫 C语言程序设计M.长春:吉林大学出版社。附录柠檬 5
16、supermarket管理系统源代码Source Files1. com mon .cvoid pcontinue();void pcontinue()printf(t 按任意键继续 n);getch();2. Main.c#include #include / 字符串 先到系统的库找,再到用户库#include #include #include MyParams.h#include common.h#include mymenu.hvoid aboutUs();int login();char realpassword8=ningmeng; / 系统的真实登录密码void main()ch
17、ar choice=3; / 存储判断的选项dosystem(cls); / 清屏命令/ 打印出程序欢迎界面printf(nn*欢迎进入柠檬 5超市管理系统*nn);printf(n 请您选择操作选项: nn);printf(ttt1.登录 n);printf(ttt2.关于我们n);printf(ttt3.退出系统n);printf(nn*nn); /完成输入操作printf(n请输入您的选项(1,2,3):);choice=getch(); /getch()从键盘输入一个字符/ 判断 switch( 变量) case值 1: xxx; break; default xxx;switch(c
18、hoice)case 1: if(login()=1)showMymenue(); break;case 2: aboutUs();break;case 3: printf(nn系统安全退出 nn);exit(0);break; while(1);void aboutUs()system(cls);BreakLine;prin tf(tt 版权所有型南工学院网络1101班柠檬 5nn); printf(ttt柠檬 5专属,翻版必究nn);printf(tt技术扶持 Tell:);BreakLine;pcontinue();int login()char upwd8;int i;system(c
19、ls);for(i=1;i4;i+)BreakLine;printf( 请输入您的 8位数密码 :);scanf(%s,upwd); if(strcmp (upwd,realpassword)=0) return 1;printf( 您好,您的密码错误,请确认后重新输入 n); printf(您还有d次输入机会, (3-i);printf(n 系统郑重提示, 您不是合法用户, 为系统安全, 强制退出 n); exit(0);3. mymenu.c#include #include #include #include #include mymenu.h#include common.h #inc
20、lude MyParams.h #include CustMan.h#include Goodsman.h void showGoodsmenue(); void showCustmenue(); void showSales(); void showSell();void showMymenue()char choice=5;while(1)system(cls);BreakLine;printf(tt1.商品管理 n);printf(tt2.客户管理 n);printf(tt3.购物预算 n);printf(tt4.销售预算 n);printf(tt5.退出系统 n);BreakLine;
21、printf(nn 请输入您的选择 (1,2,3,4,5):);choice=getch();switch (choice)case1: showGoodsmenue(); break;case2: showCustmenue(); break;case3: showSell(); break;case4: showSales(); break;case5:printf(nn 系统安全退出 nn); exit(0);break;default: printf(n 您的输入有误,请检查后重新输入 n);pcontinue();void showGoodsmenue()char choice=5;
22、while(1)system(cls);BreakLine;printf(tt1.添加商品 n);printf(tt2.查询商品 n);printf(tt3.更新商品 n);printf(tt4.删除商品 n);printf(tt5.返回上一级 n);BreakLine;printf(nn请输入您的选择 (1,2,3,4,5):choice=getch();switch (choice)case1: addgoods();break;case2: findgoods();break;case3: updategoods();break;case4: delgoods();break;case5
23、: showMymenue();break;default: printf(n您的输入有误,请检查后重新输入 n);pcontinue();void showCustmenue()char choice=5;while(1) system(cls); BreakLine;printf(tt1.printf(tt2.添加客户 n); 查找客户 n);printf(tt3.printf(tt4. printf(tt5. BreakLine;修改客户 n); 删除客户 n); 返回上一级 n);printf(nn请输入您的选择 (1,2,3,4,5):);choice=getch();switch
24、(choice)case1: addcust();break;case2: findall();break;case3: updatecust();break;case4: delcust();break;case5: showMymenue();break;default: printf(n您的输入有误,请检查后重新输入 n);pcontinue();void showSales()char choice=5;while(1) system(cls);BreakLine;printf(tt1.printf(tt2.printf(tt3.显示最具有贡献精神VIP客户排行榜n); 显示最具有影响
25、力的商品排行榜 n); 显示库存商品量排行榜 n);printf(tt4. printf(tt5. BreakLine;当月生日的客户 n);返回上一级 n);printf(ntt请输入您的选择 (1,2,3,4,5):);choice=getch();switch(choice)case 1: showVIP(); break;case 2: Goodseffect(); break;case 3: Goodssave(); break;case 4: Birthdayperson(); break;case 5: showMymenue(); break;default: printf(n
26、tt您的输入有误, 请确认重新输入 .n);pcontinue();/ 调用按任意键继续void showSell()char choice=2;while(1)system(cls);BreakLine;printf(tt1.商品交易信息 n);printf(tt2.返回上一级 n);BreakLine;printf(ntt 请输入您的选择 (1,2,):); choice=getch();switch(choice)case 1: shopping(); break;case 2: showMymenue(); break;default: printf(ntt您的输入有误, 请确认重新输
27、入 .n);pcontinue(); / 调用按任意键继续4. Custman.c#include #include #include #include #include MyParams.h#include common.h#include mymenu.h#include CustMan.h read_message();struct dataint year; int month;int day; ; struct custint no; / 编号char name20; /名字double expenditure;/总花费char tel20;/电话号码struct data birt
28、hday;/生日cust1000; / 最多存 1000 个客户信息int total; / 现在 cust.dat 文件中总的纪录条数 void saveAll()FILE*fp;int i;if(fp=fopen(cust.dat,wb)=NULL) printf(n 无法打开文件 n);return; for(i=0;i0)printf(n*显示所有客户信息 *n);printf(n 编号 t 姓名 t 消费 tt 电话 tt 生日 );for(i=0;itotal;i+) c=custi;printf(n %dt %st %lft %st %d-%d-%dtn,c.no,,
29、c.expenditure,c.tel,c.birthday);printf(nnnnn);elseprintf(n* 系统中暂无任何客户信息 *); pcontinue();getch();void updatecust()int i;int toupdateno; /要更新的编号int j;system(cls);total=read_message(); / 读出信息 printf(n 请输入您要更新的客户编号 :); scanf(%d,&toupdateno); / 查找 for(i=0;itotal;i+)if(toupdateno=custi.no)break; /i 里面记录了要
30、更新的客户的索引 if(i=total)printf(n 没有找到要更新的客户 n); printf( 按任意键继续 n);getch();return;printf(n*请更新用户信息 *n);printf( 请输入客户姓名 :);scanf(%s,); printf( 请输入客户消费 :);scanf(%d,&custi.expenditure);printf( 请输客户电话 :);scanf(%s,custi.tel);printf( 请输入客户的生日 ( 格式: 1999-9-9):);scanf(%d-%d-%d,&custi.birthday.year,&cus
31、ti.birthday.month,&custi.birthday.day);BreakLine;saveAll();printf(n 更新客户信息成功,按任意键继续 n);getch();void delcust()int i;int todelno;/ 删除客户的编号int j;char choice=n; / 记录是否真正删除 system(cls);total=read_message();/ 先读出数据printf(n 请输入您要删除的客户的编号 :); scanf(%d, &todelno);for(i=0;itotal;i+)if(todelno=custi.no)break;i
32、f(i=total)printf(n 没有找到您要删除的客户 n); pcontinue();getch();return;(y or n);printf( 亲爱的管理员,删除后无法恢复,您确定要删除吗? choice=getch();if (choice=n)printf(n 放弃删除,返回上一级 n); printf(n 按任意键继续 n);getch();return;/ 真正删除, 实际上是覆盖 for(j=i;jtotal;j+)custj=custj+1;total-=1;saveAll();printf(n 删除客户数据成功 n); printf(n 按任意键继续 n);getc
33、h();5. Goodsman.c#include #include #include #include #include MyParams.h#include common.h#include mymenu.h#include Goodsman.hstruct date int year;int month; int day;J,struct goodsint no; /编码:char name20; / 名称:struct date scday; /生产期 struct date:表示结构体类型 date 型scday 变量名 生日 :-struct dateint expenda;/ 原
34、价 :int expendb;/ 单价:int save; /库存量int sell; /出售量goods100000; / 定义一个全局的结构体数组 100000 int total;int read_Message()FILE *fp;int i=0;if(fp=fopen(goods.dat,rb)=NULL)printf(n* 暂无任何可读信息, 按任意键继续 *); getch();return 0;while(feof(fp)!=1) fread(&goodsi,sizeof(struct goods),1,fp); if(goodsi.no=0)break;elsei+; fcl
35、ose(fp);return i;void saveall()FILE*fp;int i; if(fp=fopen(goods.dat,wb)=NULL) printf(n 无法打开文件 n);return; for(i=0;itotal;i+) fwrite(&goodsi,sizeof(struct goods),1,fp); fclose(fp);void addgoods()struct goods newgoods; / 新加入的结构体数组 char choice=y; / 是否继续录入信息FILE *fp; / int i=0; /i do文件指针,用它指向一个文件是一个计数器,因
36、为文件中最多存 1000 个数据system(cls);printf(n*添加商品信息 *n);printf( 请输入商品编码 :);scanf(%d,&newgoods.no); / 取地址因为它是一个基本类型的数据 BreakLine;printf(请输入商品名称 :);scanf(%s,&);BreakLine;printf( 请输入商品生产期 :( 格式如下 :1999-9-9):); scanf(%d-%d-%d,&,&,&;printf( 请输入商品原价 :);scanf(%d,&newgoods.expenda);printf( 请输入商品单价 :);s
37、canf(%d,&newgoods.expendb);printf( 请输入商品出售量 :);scanf(%d,&newgoods.sell);printf( 请输入商品库存量 :);scanf(%d,&newgoods.save);/ 以上完成了输入客户信息的操作;/ 将 newcust 结构体中的数据保存到一个磁盘文件中if(fp=fopen(goods.dat,ab)=NULL)printf( 无法打开文件 );return; / 如果打得开文件 / 要保存数据的地址 这个数据类型的长度 几个数组文件指针 fwrite(&newgoods, sizeof(struct goods), 1
38、, fp);fclose(fp); / 重新确认是否继续录入 printf(n 还要继续;录入商品信息吗 ?(y/n); choice=getch();while(choice=y);void delgoods()int i,j;int todelno;char choice=n;system(cls);total=read_Message();printf(n 请输入你要删除的商品的编码 :);scanf(%d,&todelno);for(i=0;itotal;i+)if(todelno=goodsi.no)break; / 如果,没有找到要删除的商品if(i=total)printf(n没
39、有找到您想删除的商品 n);printf(n按任意键继续 n);getch();return;(y/n);printf( 亲爱的管理员,删除后无法恢复,您确定要删除吗? choice=getch();if(choice=n)printf(n 放弃删除,返回上一级 n);printf(n 按任意键继续 n);getch();return;for(j=i;jtotal;j+)goodsj=goodsj+1 ;total-=1;saveall();printf(n 删除商品数据成功 n); pcontinue();getch();void updategoods()int i;int todelno
40、;struct goods gx;char choice=n;system(cls); total=read_Message(); printf(n 请输入你要更新的商品的编号 :); scanf(%d,&todelno); for(i=0;i0)printf(n* 显示所有商品信息 *n);printf(n编号t名称t生产期tt 原价t单价t出售量t库存量 n);for(i=0;itotal;i+)c=goodsi;printf(n%dt%st%d-%d-%dt%dt%dt%dt%dn,c.no,,c.expenda,c.expendb,c.sell,c.save);BreakL
41、ine;elseprintf(n*系统中暂无任何商品信息 *n);printf(n 按任意键继续 n);getch();6. Save.c#include #include #include Save.h#include common.h#include MyParams.h#include mymenu.hint read_message();int read_Message();struct dataint year;int month;int day;struct custint no;/编号char name20;/名字char tel20;/电话号码生日struct data birthday; /cust1000; /int total; /现在 cust.dat 文件中总的纪录条数最多存 1000 个客户信息struct goodsint no;/编码:char name20;/名称:struct data scday;/生产期 struct date: 表示结构体类型date 型 scday 变量名生日 :- struct dateint expenda;/原价:int expendb;/单价:int save;/库存量int sel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务运营策略案例分析试题及答案
- 交通运输物流企业信息化建设指南
- 防性防侵害安全教育小班
- 金属材料的热处理技术指南
- 铁路工务新职工培训
- 酒店餐饮述职报告
- 2025年钢琴演奏级考试模拟试卷:钢琴演奏级考试备考攻略与实战试题
- 2025年大学统计学期末考试:基础概念题高分策略试卷
- 单片机应用技术-基于STC15系列单片机 课件 4.2 简易数字钟
- 2025年高尔夫球教练职业能力测试卷:高尔夫球运动市场分析与营销策略试题
- 手足口病培训课件(ppt)
- VISIO图标大全(完整版)
- 《测量管理体系》ppt课件
- 第十一章环境及理化因素损伤
- 国家专项计划报考资格申报表
- 五年级下册猜字谜(课堂PPT)
- 青岛市社会团体换届工作规范
- 临时用电日常巡查记录参考表
- 浅谈新课改理念下农村幼儿园教育活动创新模式-最新资料
- 柔性接口给水管道支墩计算程序(基于《10S505》)beta2
- 水中桩基、承台施工平台方案
评论
0/150
提交评论