




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计超市管理系统目 录第1章 课程设计目的要求 1.1设计目的 .3 1.2 设计要求 .3 1.3设计思路 .3第2章 课程设计任务内容 2.1课程设计题目 .3 2.2课程设计任务 .4 2.2.1 设计内容 .4 2.2.2 各组员任务 .4第3章 详细设计说明 3.1 系统模块图.4 3.2 主要函数定义 .53.2.1主函数 .53.2.2其他函数.7 3.3结构体的建立和文件的使用 .8 3.3.1 结构体的建立.8 3.3.2文件的使用.9 第四章 课程设计心得与体会.10附录·程序源代码 参考文献第一章 课程设计目的要求设计“
2、超市管理系统”的主要目的是锻炼学生综合运用所学的 C 语言程序设计知识的能力,独自利用 C 语言知识编写承训解决实际问题的能力,培养同学严谨的工作态度和良好的程序设计习惯,让同学们认识到必须重视实践环节,多读程序,多编写程序,多上机实践。进一步培养结构化程序设计的思想,加深对高级语言要素和控制结构的理解。通过课程设计的训练,学生能够了解程序设计的基本开发过程,掌握编写、调试和测试 C 语言程序的基本过程,掌握程序设计的技巧的大体流程。本次程序设计主要侧重于知识的运用,把平时学到的运用到实践中去。1.1 设计目标:1. 熟悉c语言的编译连接和运行过程。2. 掌握c语言的数据类型,熟悉整型、实型、
3、字符型变量的定义方式及如何给它们赋值。3. 掌握if语句及switch语句的运用方法及嵌套应用方法。4. 掌握实现循环结构的三种语句while、 do-while.、for 的使用。5. 掌握函数的定义方法和调用方法。6. 能够采用模块化思想调试程序。7. 指针和文件的使用,结构体的使用1.2 设计要求: 1. 源程序要有适当的注释,使程序容易阅读。 2. 必须用结构体和文件等数据结构。3. 程序的运行结果要求使用文件作备份。4. 至少输出一份报表,鼓励自行增加新功能。第二章 课程设计任务内容2.1 课程设计题目 超市管理系统 2.2 课程设计任务 系统为超市管理系统,在此系统当中需要用到许多
4、函数,包括系统函数以及自定义的函数,在这个系统当中,总共分为五个模块:管理员登陆、客户信息管理、商品管理、购物结算、销售结算。 2.2.1 设计内容 本次实习中,主要用到的C语言知识有结构体、指针、文件、数组。层层镶嵌的思路将各个模块要实现的功能环环相扣。其中,在管理员登陆后,进入的是主菜单,在这个环节当中,我们将菜单设计为函数,并将菜单函数放入一个单独的C文件中管理,实现层层进入功能。主菜单函数又分为商品管理、客户管理、购物结算、销售结算等函数的管理,在此当中,主要采用结构体定义客户信息,文件访问等。2.2.2各组员任务 为保证设计在规定时间内完成,我们将各模块分工到个人。确保任务有质量有效
5、率的同时锻炼团队的团结协作能力。第三章 详细设计说明3.1 系统模块图(未完)添加用户修改用户删除用户查询用户进入超市管理系统主界面销售结算商品管理购物结算客户管理 3.2 主要函数定义3.2.1主函数主函数主要包含的是登陆界面并且设置登陆界面其中包含: 1. 登录 2. 关于我们 3. 退出系统实现其功能主要用到如下知识:一其中使用了多种系统自定义的头文件以及用户自定义的头文件如下: #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h>#inc
6、lude <math.h> #include “MyParams.h” #include “Mymenu.h” #include “common.h” #include “CustMan.h” #include “Goodsman.h”二使用了main()函数、aboutUs()函数,login()函数和pcontinue()函数 void main()char choice='3' /存储判断的选项dosystem("cls"); /清屏命令printf("nn*欢迎进入柠檬·5超市管理系统*nn");printf
7、("n请您选择操作选项:nn");printf("ttt1. 登录 n");printf("ttt2. 关于我们n");printf("ttt3. 退出系统n");printf("nn*nn");printf("n 请输入您的选项(1,2,3):");choice=getch(); void aboutUs()system("cls");BreakLine;printf("tt版权所有湖南工学院网络1101班柠檬·5nn");
8、printf("ttt柠檬·5专属,翻版必究nn");printf("tt技术扶持 Tellquot;);BreakLine;pcontinue(); int login() char upwd8; int i; system("cls"); for(i=1;i<4;i+) BreakLine; printf("请输入您的8位数密码"); scanf("%s",upwd); if(strcmp (upwd,realpassword)=0)return 1;prin
9、tf("您好,您的密码错误,请确认后重新输入n");printf("您还有%d次输入机会", (3-i); printf("n系统郑重提示,您不是合法用户,强制退出n"); exit(0); 在common.c定义void pcontinue()函数实现按任意键继续功能void pcontinue()printf("t按任意键继续n");getch();三清屏语句,Do while,宏定义等的使用清屏语句:system("cls");使用了Do While 循环实现了在进入关于我们部分时可以再次
10、返回登陆界面。使用了宏定义。在头文件MyParam.h中定义BreakLine #define BreakLine printf("nn*nn")使用了switch语句进行了选择并且在语句中使用了多种函数嵌套使功能完整。 switch(choice) case '1': if(login()=1) showMainMenu(); break; case '2': aboutUs(); break; case '0': printf("nn系统安全退出nn"); exit(0); break;在输入密码部分使
11、用了For循环,实现了在登陆三次密码不正确的情况下强制退出系统: for(i=1;i<4;i+) BreakLine; printf("请输入您的8位密码:"); scanf("%s",upwd); /数组名代表数组的首地址,所以不要& if(strcmp(upwd,realpassword)=0) return(1); /1表示登录成功 printf("n您好,您的密码错误,请确认后重新输入··n"); printf("n您还有第%d次输入机会",(3-i); printf(&q
12、uot;n系统郑重提示,您不是合法用户,强制退出···n"); pcontinue(); exit(0);3.2.2其他函数部分 void showMainMenu();再在 void showMainMenu();其中嵌套 void showGoodsMenu(); void showCustMenu(); void showShopMenu(); void showSaleMenu();在这些函数中也就是商品管理,客户信息管理,购物结算, 和销售结算四大功能模块。依照前面的嵌套方法一一实现他的功能。在四大模块菜单中有void addGoods();
13、void findGoodsAll(); void updateGoods();void delGoods();void addcust();void delcust();void updatecust();void findall();void saveAll();void saveall();实现了客户管理中:添加客户、查询客户、删除客户、修改客户、返回上一级商品管理中:添加商品、查询商品、删除商品、修改商品、返回上一级等部分的功能。在四大模块菜单中有void showVIP(); void Goodseffect(); void Goodssave(); void Birthdayper
14、son(); void showMymenue();void shopping();实现了购物结算中:商品交易信息、返回上一级 销售预算中: 显示最具有贡献精神VIP客户排行榜显示最具有影响力的商品排行榜显示库存商品量排行榜当月生日的客户 以及返回上一级等功能3.3 结构体的建立和文件的使用在实现添加功能时使用了结构体、指针等对现阶段我们来说较难理解的内容。3.3.1结构体语句的使用 我们会在程序中用到如下结构体语句:Struct date/日期int year/年int month/月int day/日Struct cust/客户信息int no/编号char name20姓名char se
15、x/性别int age/年龄struct date birthday/生日double expenditure/花费char tel/电话号码Struct goods/商品信息nt num/商品代码char name50/商品名字int sale/商品数量float price/商品单价int lacation/商品位置在整个程序中我们会如下用到结构体语句,不同的结构体类型:struct custint no;char name20;char sex;int age;struct date birthday;double expendituer;char tel20;cust1000;33.2
16、文件的使用 客户信息管理和商品管理都有用到文件,它于我们是重点也是难点1 定义文件FILE*fp; int i; if(fp=fopen("cust.dat","wb")=NULL) printf("n无法打开文件n"); return; for(i=0;i<total;i+) fwrite(&custi,sizeof(struct cust),1,fp); fclose(fp); 定义函数read_message()打开文件int read_message() FILE*fp; int i=0;/记数 /打开文件 if
17、(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;第四章 程序设计心得与体会通过为期两周的课程设计,我们不仅复习了课本上所学知识,还通过查阅资料、询
18、问老师同学学到了很多课本上没有的只是,从而启发我们:要想写好程序,在学好课本只是的同时还需要多阅读和专业有关的书记,同时还需要多动脑子,要有缜密的逻辑思维能力和综合应用能力。简而言之,我们要做到三心:编写代码要细心;检查错误要耐心;完成任务要恒心。除此,在学到知识的同时锻炼了我们的团结合作精神,也使得我们小组成员之间有更深的交流。所以,很感谢学校和老师给我们提供这样一个机会。在锻炼自己的同时让自己养成了良好的学习习惯。我希望自己能一直带着这份心态和习惯大步向前。 参考文献武爱平 卜耀华 孙东卫. C语言程序设计M. 长春:吉林大学出版社。附录 柠檬·5supermarket管理系统源
19、代码Source Files1. common.c void pcontinue();void pcontinue()printf("t按任意键继续n");getch();2. Main.c#include <stdio.h>#include <string.h> /字符串 <先到系统的库找,再到用户库 #include <conio.h>#include <stdlib.h>#include "MyParams.h"#include "common.h"#include &quo
20、t;mymenu.h"void aboutUs();int login();char realpassword8="ningmeng" /系统的真实登录密码void main() char choice='3' /存储判断的选项 do system("cls"); /清屏命令 /打印出程序欢迎界面 printf("nn*欢迎进入柠檬·5超市管理系统*nn"); printf("n请您选择操作选项:nn"); printf("ttt1. 登录 n"); prin
21、tf("ttt2. 关于我们n"); printf("ttt3. 退出系统n");printf("nn*nn"); /完成输入操作 printf("n 请输入您的选项(1,2,3):"); choice=getch(); /getch()从键盘输入一个字符 /判断 switch(变量) case 值1: xxx; break; default xxx; switch(choice) case '1': if(login()=1) showMymenue(); break; case '2
22、39;: aboutUs(); break; case '3': printf("nn系统安全退出nn"); exit(0); break; while(1);void aboutUs() system("cls"); BreakLine;printf("tt版权所有湖南工学院网络1101班柠檬·5nn"); printf("ttt柠檬·5专属,翻版必究nn"); printf("tt技术扶持 Tellquot;); BreakLine; pc
23、ontinue();int login() char upwd8; int i; system("cls"); for(i=1;i<4;i+) BreakLine; printf("请输入您的8位数密码:"); scanf("%s",upwd); if(strcmp (upwd,realpassword)=0)return 1;printf("您好,您的密码错误,请确认后重新输入n");printf("您还有%d次输入机会", (3-i);printf("n系统郑重提示,您不是合
24、法用户,为系统安全,强制退出n"); exit(0);3. mymenu.c#include <stdio.h>#include <string.h> #include <conio.h>#include <stdlib.h>#include "mymenu.h"#include "common.h"#include "MyParams.h"#include "CustMan.h"#include "Goodsman.h"void sho
25、wGoodsmenue();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.
26、 退出系统n"); BreakLine; printf("nn请输入您的选择(1,2,3,4,5):"); choice=getch();switch (choice) case'1': showGoodsmenue(); break; case'2': showCustmenue(); break;case'3': showSell(); break; case'4': showSales(); break; case'5':printf("nn系统安全退出nn"
27、); exit(0); break; default: printf("n您的输入有误,请检查后重新输入n"); pcontinue(); void showGoodsmenue() char choice='5' while(1) system("cls"); BreakLine; printf("tt1. 添加商品n"); printf("tt2. 查询商品n"); printf("tt3. 更新商品n"); printf("tt4. 删除商品n"); p
28、rintf("tt5. 返回上一级n"); BreakLine; printf("nn请输入您的选择(1,2,3,4,5):"); choice=getch();switch (choice) case'1': addgoods();break; case'2': findgoods();break; case'3': updategoods();break;case'4': delgoods();break;case'5': showMymenue();break;defa
29、ult: printf("n您的输入有误,请检查后重新输入n");pcontinue(); void showCustmenue() char choice='5' while(1) system("cls");BreakLine; printf("tt1. 添加客户n"); printf("tt2. 查找客户n"); printf("tt3. 修改客户n"); printf("tt4. 删除客户n"); printf("tt5. 返回上一级n&qu
30、ot;); BreakLine; printf("nn请输入您的选择(1,2,3,4,5):"); choice=getch();switch (choice) case'1': addcust();break; case'2': findall();break; case'3': updatecust();break; case'4': delcust();break; case'5': showMymenue();break;default: printf("n您的输入有误,请检查
31、后重新输入n"); pcontinue(); void showSales()char choice='5' while(1) system("cls");BreakLine; printf("tt1.显示最具有贡献精神VIP客户排行榜n");printf("tt2.显示最具有影响力的商品排行榜n");printf("tt3.显示库存商品量排行榜n");printf("tt4.当月生日的客户n");printf("tt5.返回上一级n");Break
32、Line;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("ntt您
33、的输入有误,请确认重新输入.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(); br
34、eak; case '2': showMymenue(); break; default: printf("ntt您的输入有误,请确认重新输入.n");pcontinue(); /调用按任意键继续 4. Custman.c#include <stdio.h>#include <string.h> #include <conio.h>#include <stdlib.h>#include "MyParams.h"#include "common.h"#include &qu
35、ot;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 birthday; /生日cust1000; /最多存1000个客户信息int total; /现在cust.dat文件中总的纪录条数void saveAll() FILE*fp; int i; if(fp=fo
36、pen("cust.dat","wb")=NULL) printf("n无法打开文件n"); return; for(i=0;i<total;i+)fwrite(&custi,sizeof(struct cust),1,fp); fclose(fp);/ 获取现有文件中客户的总人数 int read_message() FILE*fp; int i=0;/记数 /打开文件 if(fp=fopen("cust.dat","rb")=NULL)printf("n*暂无任何可读
37、消息,按任意键继续*n");getch();return 0; while(!feof(fp)fread(&custi,sizeof(struct cust), 1, fp);if(custi.no=0)break;else i+; /循环读取文件中的每一条记录fclose(fp);return i; /存到cust结构中 void addcust() /定义增加的struct cust newcust;char choice='y'FILE *fp;int i=0;dosystem("cls");BreakLine;printf(&quo
38、t;请输入客户的编号:");scanf("%d",&newcust.no);printf("n");printf("请输入客户的名字:");scanf("%s",);printf("n");printf("请输入客户消费:"); scanf("%lf",&newcust.expenditure);printf("n");printf("请输入客户的电话号码:");sc
39、anf("%s",newcust.tel);printf("n");printf("请输入客户的生日:(格式:1999-9-9)");scanf("%d-%d-%d",&newcust.birthday.year,&newcust.birthday.month,&newcust.birthday.day);printf("n");BreakLine;if(fp=fopen("cust.dat","ab")=NULL)printf(&
40、quot;n对不起,不能打开指定的文件n");return ;fwrite(&newcust,sizeof(struct cust),1,fp);fclose(fp);printf("您还要继续输入新客户信息吗?(y/n)");choice=getch(); while(choice='y');void findall() /定义查询所有的 int i; struct cust c; total= read_message(); system("cls");printf("n*客户信息*n"); pr
41、intf("n客户总数:%dn",total); if(total>0) printf("n*显示所有客户信息*n"); printf("n 编号 t 姓名 t消费 tt 电话 tt 生日"); for(i=0;i<total;i+) c=custi;printf("n %dt %st %lft %st %d-%d-%dtn",c.no,,c.expenditure,c.tel,c.birthday); printf("nnnnn"); else printf("
42、;n*系统中暂无任何客户信息*");pcontinue(); getch();void updatecust() int i; int toupdateno; /要更新的编号 int j; system("cls"); total=read_message(); / 读出信息 printf("n请输入您要更新的客户编号:"); scanf("%d",&toupdateno); /查找 for(i=0;i<total;i+) if(toupdateno=custi.no) break; /i里面记录了要更新的客户
43、的索引 if(i=total) printf("n没有找到要更新的客户n");printf("按任意键继续n");getch();return; printf("n*请更新用户信息*n"); printf("请输入客户姓名:"); scanf("%s",); printf("请输入客户消费:"); scanf("%d",&custi.expenditure); printf("请输客户电话:"); scanf
44、("%s",custi.tel); printf("请输入客户的生日(格式:1999-9-9):");scanf("%d-%d-%d",&custi.birthday.year,&custi.birthday.month,&custi.birthday.day); BreakLine; saveAll(); printf("n更新客户信息成功,按任意键继续n"); getch();void delcust()int i;int todelno;/删除客户的编号int j;char choic
45、e='n' /记录是否真正删除system("cls");total=read_message();/先读出数据printf("n请输入您要删除的客户的编号:");scanf("%d", &todelno);for(i=0;i<total;i+)if(todelno=custi.no)break;if(i=total)printf("n没有找到您要删除的客户n");pcontinue();getch(); return;printf("亲爱的管理员,删除后无法恢复,您确定要删
46、除吗?(y or n)");choice=getch();if (choice='n')printf("n放弃删除,返回上一级n");printf("n按任意键继续n");getch();return;/真正删除, 实际上是覆盖for(j=i;j<total;j+)custj=custj+1;total-=1;saveAll();printf("n删除客户数据成功n");printf("n按任意键继续n");getch();5. Goodsman.c#include <stdi
47、o.h>#include <string.h> #include <conio.h>#include <stdlib.h>#include "MyParams.h"#include "common.h"#include "mymenu.h"#include "Goodsman.h"struct dateint year;int month;int day;struct goods int no; /编码:char name20; /名称:struct date scday;
48、 /生产期 struct date:表示结构体类型date型 scday变量名 生日:-> struct dateint expenda; /原价:int expendb; /单价:int save; /库存量int sell; /出售量goods100000; /定义一个全局的结构体数组 100000int total;int read_Message()FILE *fp;int i=0;if(fp=fopen("goods.dat","rb")=NULL)printf("n*暂无任何可读信息,按任意键继续*");getch(
49、);return 0;while(feof(fp)!=1)fread(&goodsi,sizeof(struct goods),1,fp);if(goodsi.no=0)break;elsei+;fclose(fp);return i;void saveall() FILE*fp; int i; if(fp=fopen("goods.dat","wb")=NULL) printf("n无法打开文件n"); return; for(i=0;i<total;i+) fwrite(&goodsi,sizeof(stru
50、ct goods),1,fp); fclose(fp);void addgoods()struct goods newgoods; /新加入的结构体数组char choice='y' /是否继续录入信息FILE *fp; /文件指针,用它指向一个文件int i=0; /i是一个计数器,因为文件中最多存1000个数据 dosystem("cls");printf("n*添加商品信息*n");printf("请输入商品编码:");scanf("%d",&newgoods.no); /取地址因为它
51、是一个基本类型的数据BreakLine;printf("请输入商品名称:");scanf("%s",&); BreakLine; printf("请输入商品生产期:(格式如下:1999-9-9):");scanf("%d-%d-%d",&newgoods.scday.year,&newgoods.scday.month,&newgoods.scday.day); printf("请输入商品原价:");scanf("%d"
52、;,&newgoods.expenda); printf("请输入商品单价:");scanf("%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, fp);fclose(fp); /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论