神一样的程序——超市模拟找零系统_C#简易版
- 格式:doc
- 大小:37.00 KB
- 文档页数:3
实验题目:超市管理系统一、实验目的1.熟悉 c 语言的编译连接和运行过程。
2.掌握 c 语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if 语句及switch 语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while 、do-while. 、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入商品资料,并保存于文件。
每件商品包含信息如:商品号、商品名、商品类别、商品总量、商品上限和下限、商品价格、进货日期、生产日期、保质期等。
3.对已存入的商品信息进行更新操作,包括添加一件商品信息、删除某件商品信息和修改商品信息。
4.通过按商品名、商品种类、商品进货量的方式查询商品信息。
5.输入某商品号后对其利润进行统计、对进货价格相同的商品进行统计。
6 对商品的库存量和利润进行排序。
7.最后输出商品信息,供需要时打印。
二、需求分析1.该程序可用于对商品的基本信息的存储、更新、查询、输出、统计、排序等操作,以实现管理者对商品的管理和消费者对商品的了解。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多件商品信息,也可对个别商品信息进行适当的删除或修改。
以便随时更新商品信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某件商品信息,并且可根据三种不同的方法查询:按商品名查询、按商品种类查询和按商品进货量查询。
以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:超市管理管理系统查询模块排序模块退出系统退出系统查询模块排序模块统计模块*更新模块*输出信息¥录入信息按商品名查询利润排行库存量排行退出系统第二类商品第一类商品退出系统2 •功能模块说明:对各个模块进行功能的描述(1).输入模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
/*----------------------------------------------------------------|| 名称:超市储物柜模拟系统| | 学校:广西交通职业技术学院| | 系:信息工程系| | 专业:电子信息工程技术| | 设计者:杨旭涛| | QQ:237155875 | | * 仅供研究,不得用于商业用途!* | |----------------------------------------------------------------*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code LCD_Display_Common_i[16]={"Welcome To Use! "};uchar code LCD_Display_Common_j[16]={"Design By Mr.Tom"};uchar code LCD_Display_Full_i[16]= {" All Full! "};uchar code LCD_Display_Full_j[16]= {" Plese Wait! "};uchar code LCD_Display_GetPassw_i[16]= {"Your Password: "};uchar code LCD_Display_Box1Password_i[16]= {"Box1 Password: "};uchar code LCD_Display_Box2Password_i[16]= {"Box2 Password: "};uchar code LCD_Display_Box3Password_i[16]= {"Box3 Password: "};uchar code LCD_Display_Box4Password_i[16]= {"Box4 Password: "};uchar LCD_Display_i[16];uchar LCD_Display_j[16];sbit a=P2^0; //定义3x4键盘端口,发送a,b,c,d,扫描x,y,zsbit b=P2^1; //sbit c=P2^2; //sbit d=P2^3; //sbit x=P2^4; //sbit y=P2^5; //sbit z=P2^6; //sbit Box1=P3^0; //define Box(x) Port 定义箱子继电器端口sbit Box2=P3^1;sbit Box3=P3^2;sbit Box4=P3^3;sbit Key_Box1=P1^4; //定义箱子的取物按键端口sbit Key_Box2=P1^5; //sbit Key_Box3=P1^6; //sbit Key_Box4=P1^7; //sbit Cus_In=P3^7; //进超市人数+sbit Cus_Out=P3^6; //出超市人数-sbit Bee=P3^4; //蜂鸣器输出端口sbit Shock=P3^5; //震动输入端口sbit LCD_E=P1^0; //define 1602 Esbit LCD_RW=P1^1; //define 1602 RWsbit LCD_RS=P1^2; //define 1602 RSuchar temp_a,temp_b,temp_c,temp_d,temp_e,temp_f; //输入密码暂存变量uchar Num,Interface,Customer; //定义各种标志位uchar Passw_Box1_a,Passw_Box1_b,Passw_Box1_c,Passw_Box1_d,Passw_Box1_e,Passw_Box1_f;//各箱子的密码移位暂存位uchar Passw_Box2_a,Passw_Box2_b,Passw_Box2_c,Passw_Box2_d,Passw_Box2_e,Passw_Box2_f;//uchar Passw_Box3_a,Passw_Box3_b,Passw_Box3_c,Passw_Box3_d,Passw_Box3_e,Passw_Box3_f;//uchar Passw_Box4_a,Passw_Box4_b,Passw_Box4_c,Passw_Box4_d,Passw_Box4_e,Passw_Box4_f;//uchar Show_P_a,Show_P_b,Show_P_c,Show_P_d,Show_P_e,Show_P_f;/*----------------------------------------------------------------|| 延时子函数||----------------------------------------------------------------*/void delay(uint t){while(t--);}/*----------------------------------------------------------------|| 定时器初始化子函数||----------------------------------------------------------------*/void Timer0_Init(){TMOD=0x01; //方式选择TH0=(65535-100)/256; //TL0=(65535-100)%256; //初值设定ET0=1;//开定时器T0的中断EA =1;//开总中断TR0=1;//启动T0}/*----------------------------------------------------------------|| LCD子函数||----------------------------------------------------------------*/void Write_Bit_Com(uchar com) //*********写命令*********//{LCD_E=0; //关闭使能端LCD_RW=0; //写命令LCD_RS=0; //表示选择命令P0=com; //将命令赋给P0口delay(10); //等待命令赋完LCD_E=1; //给以上升沿开始写命令delay(10); //等待命令写完LCD_E=0; //关闭使能端}void Write_Bit_Date(uchar date) //*********写数据********//{LCD_E=0; //关闭使能端LCD_RW=0; //写数据LCD_RS=1; //表示选择数据P0=date; //将数据赋给P0口delay(10); //等待数据赋完LCD_E=1; //给以上升沿开始写命令delay(10); //等待数据写完LCD_E=0; //关闭使能端}void Init_LCD() //********初始化液晶*******//{LCD_E=0; //关闭使能Write_Bit_Com(0x38); //设置显示模式Write_Bit_Com(0x0c); //开显示,示显示光标,光标不闪烁(不显示不闪烁为0x0d)Write_Bit_Com(0x06); //设置显示移动自加1Write_Bit_Com(0x01); //清屏}void Display_Common() //常态显示,欢迎语,进出人数计数{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Common_i[i]);delay(100);}LCD_Display_j[0]=0x30+Customer/10;LCD_Display_j[1]=0x30+Customer%10;LCD_Display_j[2]=' ';LCD_Display_j[3]=' ';LCD_Display_j[4]=' ';LCD_Display_j[5]=' ';LCD_Display_j[6]=' ';LCD_Display_j[7]=' ';LCD_Display_j[8]=' ';LCD_Display_j[9]=' ';LCD_Display_j[10]=' ';LCD_Display_j[11]=' ';LCD_Display_j[12]=' ';LCD_Display_j[13]=' ';LCD_Display_j[14]=' ';LCD_Display_j[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_j[j]);delay(100);}}void Display_Input_Box1() //box 1 password input 箱子一密码输入界面{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box1Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_Input_Box2() //box 2 password input 箱子二密码输入界面{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box2Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_Input_Box3() //box 3 password input{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box3Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_Input_Box4() //box 4 password input {uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box4Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_GetPassw() //获取密码显示界面{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_GetPassw_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+Show_P_f;LCD_Display_i[6]=0x30+Show_P_e;LCD_Display_i[7]=0x30+Show_P_d;LCD_Display_i[8]=0x30+Show_P_c;LCD_Display_i[9]=0x30+Show_P_b;LCD_Display_i[10]=0x30+Show_P_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}delay(60000); //密码显示时间,延时6ms*3delay(60000);delay(60000);Interface=0; //返回常态界面}void Display_BoxFull() //满箱显示{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Full_i[i]);delay(100);}Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_Full_j[j]);delay(100);}delay(60000);delay(60000);delay(60000);Interface=0; //返回常态界面}/*----------------------------------------------------------------|| 键盘扫描子函数||----------------------------------------------------------------*/void Key_Scanf() //temp_a的量表示键值,默认为0,键值移位后才改变{a=1,b=1,c=1,d=0;x=1,y=1,z=1;if(z==0){delay(200);if(z==0){while(z==0);{ if(Box1==0){Box1=1;Interface=1;Passw_Box1_a=Num%10;Passw_Box1_b=Num/10%1 0;delay(1);Passw_Box1_c=Num%10;delay(2);Passw_Box1_d=Num/100%10;delay(4);Passw_Box1_ e=Num%10;delay(6);Passw_Box1_f=Num/10%10;Show_P_a=Passw_Box1_a;Show_P_b=Passw_Box1_b;Show_P_c=Passw_Box1_c;Show_P_d=Pass w_Box1_d;Show_P_e=Passw_Box1_e;Show_P_f=Passw_Box1_f;} //若Box1空,则弹出继电器;定时器取值做为密码,显示获取密码界面elseif(Box2==0){Box2=1;Interface=1;Passw_Box2_a=Num%10;Passw_Box2_b=Num/10%10;delay(3);Passw_Box2_c=Num%10;delay(1);Passw_Box2_d=Num/100%10;delay(2);Passw_Box2_e=Num%10 ;delay(5);Passw_Box2_f=Num/10%10;Show_P_a=Passw_Box2_a;Show_P_b=Passw_Box2_b;Show_P_c=Passw_Box2_c;Show_P_d=Pass w_Box2_d;Show_P_e=Passw_Box2_e;Show_P_f=Passw_Box2_f;} //若Box2空,则弹出继电器elseif(Box3==0){Box3=1;Interface=1;Passw_Box3_a=Num%10;Passw_Box3_b=Num/10%10;delay(7);P assw_Box3_c=Num%10;delay(3);Passw_Box3_d=Num/100%10;delay(5);Passw_Box3_e=Num%10 ;delay(2);Passw_Box3_f=Num/10%10;Show_P_a=Passw_Box3_a;Show_P_b=Passw_Box3_b;Show_P_c=Passw_Box3_c;Show_P_d=Pass w_Box3_d;Show_P_e=Passw_Box3_e;Show_P_f=Passw_Box3_f;} //若Box3空,则弹出继电器elseif(Box4==0){Box4=1;Interface=1;Passw_Box4_a=Num%10;Passw_Box4_b=Num/10%10;delay(3);P assw_Box4_c=Num%10;delay(2);Passw_Box4_d=Num/100%10;delay(4);Passw_Box4_e=Num%10 ;delay(5);Passw_Box4_f=Num/10%10;Show_P_a=Passw_Box4_a;Show_P_b=Passw_Box4_b;Show_P_c=Passw_Box4_c;Show_P_d=Pass w_Box4_d;Show_P_e=Passw_Box4_e;Show_P_f=Passw_Box4_f;} //若Box4空,则弹出继电器else {Interface=2;}}}} //否则出现满箱提示!if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=7;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=3;delay(10);}}}a=1,b=1,c=0,d=1;x=1,y=1,z=1;if(z==0){delay(100);if(z==0){while(z==0);{//if((Interface==3)&(Passw_Box1_a==temp_a)&(Passw_Box1_b==temp_b)&(Passw_Box1_c==temp _c)&(Passw_Box1_d==temp_d)&(Passw_Box1_e==temp_e)&(Passw_Box1_f==temp_f)){Box1=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c )|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}} //密码正确后,弹箱;否则Bee短响警告if((Interface==4)&(Passw_Box2_a==temp_a)&(Passw_Box2_b==temp_b)&(Passw_Box2_c==temp _c)&(Passw_Box2_d==temp_d)&(Passw_Box2_e==temp_e)&(Passw_Box2_f==temp_f)){Box2=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c)|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}}if((Interface==5)&(Passw_Box3_a==temp_a)&(Passw_Box3_b==temp_b)&(Passw_Box3_c==temp _c)&(Passw_Box3_d==temp_d)&(Passw_Box3_e==temp_e)&(Passw_Box3_f==temp_f)){Box3=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c )|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}}if((Interface==6)&(Passw_Box4_a==temp_a)&(Passw_Box4_b==temp_b)&(Passw_Box4_c==temp _c)&(Passw_Box4_d==temp_d)&(Passw_Box4_e==temp_e)&(Passw_Box4_f==temp_f)){Box4=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c )|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}}delay(10);}}}if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=8;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=4;delay(10);}}}a=1,b=0,c=1,d=1;x=1,y=1,z=1;if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=9;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=5;delay(10);}}}if(z==0){delay(200);if(z==0){while(z==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c; temp_c=temp_b;temp_b=temp_a;temp_a=1;delay(10);}}}a=0,b=1,c=1,d=1;x=1,y=1,z=1;if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=0;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=6;delay(10);}}}if(z==0){delay(200);if(z==0){while(z==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c; temp_c=temp_b;temp_b=temp_a;temp_a=2;delay(10);}}}if(Key_Box1==0){if(Box1==1){Interface=3;}}if(Key_Box2==0){if(Box1==1){Interface=4;}}if(Key_Box3==0){if(Box1==1){Interface=5;}}if(Key_Box4==0){if(Box1==1){Interface=6;}}if(Cus_In==1){delay(100);if(Cus_In==1){while(Cus_In==1);{Customer++;if(Customer==100)Cu stomer=0;}}} //人数出入超市判断,进入则变量Customer+if(Cus_Out==1){delay(100);if(Cus_Out==1){while(Cus_Out==1);{if(Customer>1)Customer--;}}} //人数出入超市判断,进入则变量Customer-if(Shock==1){Bee=1; delay(60000);}else Bee=0;}/*----------------------------------------------------------------|| 主函数||----------------------------------------------------------------*/void main(){Init_LCD(); //Init the lcd1602Timer0_Init(); //Init the timer of s52Box1=0; //make the box is emptyBox2=0; //Box3=0; //Box4=0; //Bee=0; //Shock=0; //shock port isBee=1; //bee init,bee some timedelay(60000); //Bee=0; //while(1){Key_Scanf();//if(Interface==0)Display_Common(); //Common welcome interfaceif(Interface==1)Display_GetPassw(); //When get a password interfaceif(Interface==2)Display_BoxFull(); //When box all of full interfaceif(Interface==3)Display_Input_Box1(); //When user input passwordif(Interface==4)Display_Input_Box2();if(Interface==5)Display_Input_Box3();if(Interface==6)Display_Input_Box4();}}void t0time(void) interrupt 1{TR0=0; //TH0=(65535-100)/256; //write primitive value to timer TL0=(65535-100)%256; //TR0=1;Num++;if(Num==65530)Num=123; //don't change the value }。
c语言课程设计超市收银系统一、教学目标本课程旨在通过超市收银系统的设计与实现,让学生掌握C语言编程的基本语法、数据结构及算法,培养学生的实际编程能力和问题解决能力。
通过本课程的学习,学生应能熟练运用C语言进行简单应用程序的开发,理解面向对象编程的基本概念,掌握基本的调试技巧。
在技能目标方面,学生应掌握C语言的基本语法,包括数据类型、运算符、控制结构等;能运用函数进行模块化编程;了解并使用面向对象编程思想,包括类、对象、继承、封装等;掌握基本的算法设计和分析方法,能够编写并调试简单的C 语言程序。
在情感态度价值观目标方面,通过超市收银系统的设计与实现,使学生体验到编程的乐趣,增强对计算机科学的兴趣;培养学生的团队合作意识,提高学生解决实际问题的能力;培养学生勇于探索、创新的精神,以及对编程工作的敬业精神和责任感。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、面向对象编程和算法设计。
具体包括以下几个部分:1.C语言基本语法:数据类型、变量、运算符、控制结构(循环、分支)、函数等。
2.数据结构:数组、链表、栈、队列等。
3.面向对象编程:类与对象、继承与封装、多态性等。
4.算法设计与分析:排序算法、查找算法、常用算法思想等。
5.超市收银系统的设计与实现:需求分析、系统设计、编码实现、测试与调试等。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
1.讲授法:用于讲解C语言的基本语法、数据结构、面向对象编程和算法设计等理论知识。
2.案例分析法:通过分析具体的编程案例,使学生更好地理解编程思想和方法。
3.实验法:让学生通过动手实践,完成超市收银系统的各个模块的设计与实现,提高实际编程能力。
4.小组讨论法:在课程进行过程中,学生进行小组讨论,培养团队合作精神和问题解决能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C++ Primer》等。
/*—-——-———-—-—-———-——--——--—--———-—--—-——时间:2015—7—1 16:44:21吴俊龙C语言专周设计超市收银系统--————--——-—---—-——-———-————---—--—-—--*/#include 〈stdio.h>#include <windows。
h〉#include 〈string。
h>int menu1(void);//主页面int menu2(void);//商品管理页面int menu3(void);//退出页面int menu4(void);//添加商品信息int menu5(void);//商品信息浏览int menu6(void);//商品信息修改int menu7(void);//商品信息查询int menu8(void);//商品信息删除int menu9(void);//结账页面int sign(void);//欢迎页面struct ima{int id;//商品编号char name[20];//商品的名称char produce[30]; //商品的产地int number; //商品的数量int money; //商品的价格};int len = 0;struct ima thing[50];struct ima *p;int menu1(void)//主页面{int n;system("cls");printf(”\n\n\n");printf(”\t\t —--—-------——-—-—-—--————--—-———-—-—---—— \n");printf(”\t\t| 欢迎使用结账管理系统|\n”);printf("\t\t|---—-—-—--—-—---—————------—--—----———---|\n");printf(”\t\t| |\n");printf("\t\t| 1。
超市收银c语言课程设计一、课程目标知识目标:1. 学生能理解C语言在超市收银系统中的应用,掌握基本的数据类型、变量、运算符和语法结构。
2. 学生能掌握结构体和数组的使用,实现对商品信息和收银数据的存储与管理。
3. 学生能运用函数和模块化编程思想,实现超市收银系统的各个功能模块。
技能目标:1. 学生能运用C语言编写简单的超市收银系统程序,具备基本的编程能力。
2. 学生能通过调试和修改程序,解决超市收银系统中的常见问题,提高问题解决能力。
3. 学生能运用所学知识,对超市收银系统进行优化和扩展,提高系统性能。
情感态度价值观目标:1. 学生通过课程学习,认识到编程在现实生活中的应用价值,激发对计算机编程的兴趣和热情。
2. 学生在团队协作中学会沟通、分享和合作,培养良好的团队精神。
3. 学生在课程实践中,体验编程带来的成就感,增强自信心,培养积极向上的学习态度。
本课程针对高年级学生,结合C语言学科特点,注重理论与实践相结合。
在教学过程中,关注学生的个体差异,激发学生的兴趣和潜能,培养学生编程思维和实际操作能力。
课程目标明确,分解为具体学习成果,便于后续教学设计和评估。
通过本课程的学习,使学生能够掌握C语言编程技能,为实际应用打下坚实基础。
二、教学内容1. C语言基础语法:数据类型、变量定义、运算符、表达式、输入输出语句。
- 教材章节:第一章至第三章- 进度安排:2课时2. 控制结构:顺序结构、选择结构、循环结构。
- 教材章节:第四章- 进度安排:3课时3. 函数:函数定义、调用、参数传递、递归。
- 教材章节:第五章- 进度安排:3课时4. 结构体与数组:结构体定义、数组应用、结构体数组。
- 教材章节:第六章、第七章- 进度安排:4课时5. 文件操作:文件打开、读写、关闭。
- 教材章节:第十章- 进度安排:2课时6. 超市收银系统设计:需求分析、模块划分、代码编写、系统测试。
- 教材章节:综合应用- 进度安排:5课时教学内容依据课程目标进行选择和组织,注重科学性和系统性。
超市购物c 程序课程设计一、教学目标本课程的教学目标是使学生掌握超市购物的程序设计方法,能够运用编程语言实现简单的购物场景模拟。
具体包括以下三个方面的目标:1.知识目标:学生需要了解和掌握购物程序设计的基本概念、原理和方法,包括编程语言的选择、数据结构的使用、算法的设计等。
2.技能目标:学生能够运用所学的知识,独立完成一个简单的购物程序设计项目,能够进行调试和优化,提高程序的运行效率和可靠性。
3.情感态度价值观目标:学生在学习过程中,能够培养对编程和计算机科学的兴趣和热情,增强问题解决能力和创新意识,培养团队合作和沟通交流的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.编程语言的选择和使用:介绍常用的编程语言,如Python、Java等,以及它们在购物程序设计中的应用。
2.数据结构的使用:讲解购物程序中常用的数据结构,如数组、链表、栈、队列等,以及如何选择合适的数据结构来优化程序。
3.算法的设计:介绍购物程序中常用的算法,如排序、查找、贪心算法等,以及如何设计和实现这些算法。
4.购物程序的设计与实现:通过具体的案例,讲解如何设计和实现一个简单的购物程序,包括用户界面设计、业务逻辑处理、数据存储管理等。
三、教学方法为了达到本课程的教学目标,我们将采用以下几种教学方法:1.讲授法:通过教师的讲解,使学生了解和掌握购物程序设计的基本概念、原理和方法。
2.案例分析法:通过分析具体的购物程序案例,使学生了解和掌握购物程序的设计和实现方法。
3.实验法:通过学生的实际操作,使学生掌握编程语言的使用、数据结构的应用和算法的实现。
4.小组讨论法:通过学生的分组讨论和合作,培养学生的团队协作能力和问题解决能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择合适的编程语言和计算机科学教材,作为学生学习的基本参考资料。
2.多媒体资料:制作和收集相关的教学PPT、视频、动画等,丰富学生的学习体验。
C语言超市收银管理系统实现引言:随着社会经济的发展,超市作为一种新型的购物场所,逐渐取代了传统市场的地位,成为人们购物的首选。
超市管理面临诸多的挑战,因此,使用计算机技术来实现超市收银管理系统具有重要意义。
本文将介绍如何使用C语言实现超市收银管理系统。
1.系统需求分析:超市收银管理系统的主要功能包括商品信息管理、销售管理、库存管理和报表管理等。
这些功能对于超市管理人员来说是非常重要的,因此,我们需要分析每个功能所需的具体要求。
(1)商品信息管理:记录商品的信息,包括商品编号、商品名称、商品数量、商品价格等。
这些信息可以使用文件来存储和读取。
(2)销售管理:记录每次销售的详细信息,包括销售时间、销售员、商品名称、销售数量和销售金额等。
此外,还需要实时更新商品的库存信息。
(3)库存管理:根据销售信息实时更新商品的库存数量,当库存数量低于设定的预警值时,系统应发出警报。
(4)报表管理:生成各种销售报表,包括每日销售额、每月销售额、每类商品的销售情况等。
这些报表可以帮助管理人员了解超市的销售情况并进行分析。
2.系统设计:(1)数据结构设计:根据系统需求,我们需要设计一些数据结构来存储不同的数据,比如商品信息、销售信息和库存信息等。
可以使用结构体来表示每个数据项,同时可以使用链表或数组来保存多个数据项。
(2)功能模块设计:根据系统需求,我们可以把系统功能分为不同的模块,比如商品信息管理模块、销售管理模块、库存管理模块和报表管理模块等。
每个模块可以对应一个函数来实现相应的功能。
(3)界面设计:为了方便用户使用,我们可以设计一个简单的控制台界面,用户通过输入相应的命令来调用功能模块。
比如用户输入"add"可以调用商品信息管理模块来添加商品信息。
3.系统实现:(1)商品信息管理模块:实现商品信息的添加、删除、修改和查询功能。
可以使用文件来存储商品信息。
(2)销售管理模块:实现销售信息的记录和销售金额的计算功能。
超市购物c 程序课程设计一、课程目标知识目标:1. 让学生掌握超市购物流程中的基本环节,如商品选择、价格比较、计算总价等。
2. 帮助学生理解编程语言中循环结构、条件判断等基本概念在解决实际购物问题中的应用。
3. 让学生学会运用所学知识编写简单的购物程序,实现购物车功能。
技能目标:1. 培养学生运用计算机编程解决问题的能力,提高逻辑思维能力。
2. 培养学生通过编写程序,解决实际生活中购物问题的能力。
3. 培养学生团队协作、沟通表达的能力,学会在项目中分工合作。
情感态度价值观目标:1. 培养学生热爱生活、关注社会热点问题的态度,增强对日常消费活动的认识。
2. 培养学生面对问题时,勇于尝试、积极探究的精神,增强自信心。
3. 培养学生认识到计算机编程在生活中的广泛应用,激发学习兴趣和动力。
本课程针对小学高年级学生设计,结合学生好奇心强、动手能力逐步提高的特点,以超市购物为背景,引导学生通过编程解决实际问题。
课程注重培养学生的实际操作能力、团队协作能力和创新思维,旨在让学生在轻松愉快的氛围中掌握编程知识,提高综合素质。
二、教学内容1. 理解超市购物流程:介绍超市购物的各个环节,包括商品选择、价格识别、结账付款等,结合教材中相关案例进行分析。
2. 编程语言基础:回顾编程语言中循环结构、条件判断等基础知识,通过实例讲解其在购物程序中的应用。
3. 购物程序设计:a. 设计购物车类,实现添加商品、删除商品、计算总价等功能;b. 利用循环结构和条件判断实现商品价格比较,选择性价比最高的商品;c. 设计结账付款环节,模拟现实中的购物流程。
4. 项目实践:分组进行项目实践,让学生动手编写购物程序,培养团队协作和实际操作能力。
5. 教学内容安排和进度:a. 第一课时:介绍超市购物流程,回顾编程语言基础知识;b. 第二课时:讲解购物程序设计思路,分析实例;c. 第三课时:分组进行项目实践,编写购物程序;d. 第四课时:项目展示、评价和总结。
c语言课程设计超市购物系统一、教学目标本课程的目标是使学生掌握C语言编程的基本知识,能够运用C语言设计并实现一个简单的超市购物系统。
在知识目标方面,要求学生掌握C语言的基本语法、数据类型、运算符、控制结构等。
在技能目标方面,要求学生能够熟练使用C语言进行程序设计,具备解决实际问题的能力。
在情感态度价值观目标方面,要求学生培养对编程的兴趣和热情,培养团队合作意识和自主学习能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等。
具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点及应用领域。
2.第二章:基本数据类型和运算符,介绍整型、浮点型、字符型数据及其运算符。
3.第三章:控制结构,介绍顺序结构、选择结构、循环结构。
4.第四章:函数,介绍函数的定义、声明、调用及返回值。
5.第五章:数组和字符串,介绍一维数组、多维数组、字符串的基本操作。
6.第六章:指针,介绍指针的概念、运算及应用。
7.第七章:结构体和联合体,介绍结构体、联合体的定义和应用。
8.第八章:文件操作,介绍文件的基本操作及其应用。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法。
在讲授法中,教师通过讲解、示范等方式传授知识;在案例分析法中,教师通过分析实际案例,引导学生运用所学知识解决问题;在实验法中,学生通过动手实践,加深对知识的理解和运用。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
教材选用《C程序设计原理与应用》,多媒体资料包括教学PPT、视频教程等,实验设备包括计算机、网络设备等。
这些资源将有助于学生更好地学习C语言,提高编程能力。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
平时表现主要评估学生的课堂参与度、提问回答、团队合作等情况,占总评的30%。
作业主要评估学生的编程能力和理解力,占总评的30%。
考试分为期中考试和期末考试,期中考试占40%,期末考试占60%,考试内容主要包括理论知识及编程实践。
程序设计——超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计1)需求分析:设计题目:超市管理系统设计要求:有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统系统功能需求分析:1.保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。
2.计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。
3.统计:统计输出库存量低于100的货号及类别。
统计输出有两种以上(含两种)商品库存量低于100的商品类别。
2)概要设计:系统总体设计框架:系统功能模块图:3)详细设计:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。
1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别工作流程图:4)主要源程序代码:#include "stdio.h" /*输入,输出头文件*/ #include "stdlib.h" /*申请空间头文件*/#include "string.h" /*对字符串加工头文件*/ #include "conio.h" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/char c[5]="elec"; /*定义字符数组类型*/ char d[5]="comm"; /*定义字符数组类型*/char e[5]="food"; /*定义字符数组类型*/char f[5]="offi"; /*定义字符数组类型*/struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;struct good *createlist() /*创建链表函数*/{struct good *head1,*p1,*p2; /*定义结构体指针类型*/if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/ {printf("can not open the file");exit(0); /*结束程序*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p1=head1;p2=head1;printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p 1->quantity); /*输入商品信息*/printf("____________________\n");p1->next=NULL;fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品信息写入文件*/while(1){p1=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d",&p1->num);if(p1->num==-1) /*申请空间结束条件*/{printf("____________________\n\n");fprintf(fp,"%d",-1);fclose(fp);return head1; /*返回头指针*/}scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity); /*输入商品信息*/printf("________________\n");fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品信息写入文件*/p1->next=NULL;p2->next=p1;p2=p1;}}struct good *paixu(struct good*head2) /*链表排序函数*/struct good *p6,*p7,*r,*s; /*定义结构体指针类型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;}p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL) /*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*判断循环结束条件*/{if((p7->next->price)>(r->next->price)) /*判断是否调换*/r=p7;p7=p7->next;}if(p6!=r) /*判断循环结束条件*/s=r->next; /*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释放第一个无效空间*/return head2;}void jisuan(){p1=head;do{if(strcmp(p1->kind,c)==0) /*判断是否为电器类型*/{sum[0]=sum[0]+(p1->price)*(p1->quantity); /*求电器总价*/ a[0]=a[0]+p1->quantity; /*求电器总件数*/}if(strcmp(p1->kind,d)==0) /*判断是否为日用品类型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity); /*求日用品总价*/ a[1]=a[1]+p1->quantity; /*求日用品总件数*/}if(strcmp(p1->kind,e)==0) /*判断是否为办公用品类型*/{sum[2]=sum[2]+(p1->price)*(p1->quantity); /*求办公用品总价*/ a[2]=a[2]+p1->quantity; /*求办公用品总件数*/}if(strcmp(p1->kind,f)==0) /*判断是否为食品类型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity); /*求食品总价*/a[3]=a[3]+p1->quantity; /*求食品总件数*/}p1=p1->next;}while (p1!=NULL); /*遍历链表结束条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i]; /*求每类商品平均价*/printf("****************************************************\n"); printf("商品类型\t 平均价\t 总库存量\n");printf("****************************************************\n");printf("____________________________________________________\n"); printf("电器总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]); printf("____________________________________________________\n"); printf("日用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]); printf("____________________________________________________\n"); printf("食品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]); printf("____________________________________________________\n"); printf("办公用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n");}void shuchu() /*输出商品信息函数*/{do{struct good *p3,*p4,*p5; /*定义结构体指针类型*/int n=0,p=0,q=0,r=0;printf("所有商品信息:\n");printf("编号,名称,类型,价格,单位,数目\n");printf("**********************************\n");if((fp=fopen("goods message.txt","rb+"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p3=head;fscanf(fp,"%d %s %s %f %s %d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);/*从文件中写到链表*/while(1){p4=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/fscanf(fp,"%d ",&p4->num);if(p4->num!=-1) /*判断循环结束条件*/{fscanf(fp,"%s %s %f %s %d",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*从文件中写到链表*/ p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclose(fp); /*关闭文件*/p3=head;while(p3!=NULL){printf(" %d %s %s %0.1f %s %d\n\n",p3->num,p3->name,p3->kin d,p3->price,p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("//////////////////////////////////\n");while(n!=4){p3=head;printf("**********************************\n");printf("1 添加商品信息\n");printf("2 删除某商品信息\n");printf("3 修改某商品信息\n");printf("4 返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)\n");printf("**********************************\n");scanf("%d",&n);if(n==1) /*添加商品信息*/{printf("请输入商品编号名称类型价格单位数目\n");printf("**********************************\n");p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p 4->quantity); /*输入商品信息*/p4->next=NULL;while(p3->next!=NULL) /*判断循环结束条件*/{p3=p3->next;}p3->next=p4;p3=head;if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}while(p3!=NULL){fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity) ;/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==2) /*删除商品*/{printf("**********************************\n");printf("请输入需要删除的商品编号\n");printf("**********************************\n");scanf("%d",&p);printf("**********\n");printf("1 确认删除\n2 取消删除\n");printf("**********\n");scanf("%d",&r);if(r==1){if((head->num)==p){head=head->next;free(p3); /*释放空间*/}else{p4=head;p3=p4->next;while(p3!=NULL) /*判断循环结束条件*/ {if((p3->num)==p){p5=p3->next;free(p3); /*释放空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/}if(r==2)continue; /*继续循环*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==3) /*修改某商品信息*/{printf("请输入需要修改的商品编号\n");scanf("%d",&q);while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==q) /*判断是否为所需要修改的商品*/{printf("请输入商品单价与库存量(如果单价不变请输入原来的单价)\n");scanf("%f %d",&p3->price,&p3->quantity); /*输入商品价格与库存量*/}p3=p3->next;}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==4) /*退出*/break;}printf("**********\n");printf("1 继续修改\n---------\n2 返回\n");printf("**********\n");scanf("%d",&p);if(p==1)continue; /*继续循环*/if(p==2)break; /*跳出循环*/}while(n!=2);fclose(fp); /*关闭文件*/}void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,c)==0) /*判断商品类型是否为电器类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出电器类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf1(struct good *p) /*遍历链表并打印日用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,d)==0) /*判断商品类型是否为日用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出日用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出办公用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并打印食品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0) /*判断商品类型是否为食品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出食品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void shunxudayin(){for(i=0;i<4;i++)g[i]=aver[i]; /*将平均价赋给新数组*/for(j=0;j<3;j++) /*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品平均价格排序表(从高到低)\n");printf("****************************\n");printf("________________________________________________\n");printf("编号\t名称\t类别\t单价\t单位\t数量\n");printf("________________________________________________\n"); for(j=0;j<4;j++)for(i=0;i<4;i++){if (aver[i]==g[j]) /*判断每类商品平均价格的先后顺序*/switch(i){case 0:printf0(head); /*调用遍历链表并打印电器类商品函数*/break;case 1:printf1(head); /*调用遍历链表并打印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并打印办公用品类商品函数*/break;case 3:printf3(head); /*调用遍历链表并打印食品类商品函数*/break;}}void tongji1(){p1=head;printf("\n************************\n");printf("库存量低于100的货名及类别\n");printf("************************\n");printf("________________________\n");printf("商品名称\t商品类型\n");printf("________________________\n");while(p1!=NULL) /*判断遍历链表循环结束条件*/{if(p1->quantity<100) /*判断库存量是否小于100*/{printf("%s\t%s\n",p1->name,p1->kind); /*输出商品名称及类别*/ printf("________________________\n");}p1=p1->next;}}void tongji2()printf("\n**********************************************\n");printf("商品库存量有2种以上(含2种)低于100的商品类别:\n");printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2)) /*判断电器类库存量是否为2种以上(含2种)低于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2)) /*判断日用品类库存量是否为2种以上(含2种)低于100*/{printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2)) /*判断食品类库存量是否为2种以上(含2种)低于100*/{printf("食品\n");printf("________\n");if((a[3]<100)&&(a[3]>=2)) /*判断办公用品类库存量是否为2种以上(含2种)低于100*/{printf("办公用品\n");printf("________\n");}}int main(int argc, char* argv[]){struct good *p1,*p2; /*定义结构体指针类型*/while(1){printf("***********************************************\n");printf("1 ----------输出查看或者修改已存信息-----------\n");printf("-----------------------------------------------\n");printf("2 -----重新输入新信息(并且删除原有信息)------\n");printf("-----------------------------------------------\n");printf("3 统计商品信息(如果您还没有查看过信息请先按1)\n");printf("-----------------------------------------------\n");printf("4 -------------------退出---------------------\n");printf("***********************************************\n");scanf("%d",&m);if(m==1)shuchu(); /*调用输出信息函数*/if(m==2){system("cls");head=createlist(); /*调用建立链表函数*/}if(m==3){printf("统计结果如下\n");head=paixu(head); /*调用链表排序函数*/ jisuan(); /*调用计算函数*/ shunxudayin(); /*调用顺序打印函数*/ tongji1(); /*调用统计1函数*/tongji2(); /*调用统计2函数*/}if(m==4){p1=head;while(p1!=NULL) /*判断遍历链表结束条件*/ {p2=p1->next;free(p1); /*释放空间*/p1=p2;}break;}}return 0; /*结束程序*/ }5)调试分析过程描述:测试数据:01 milk drink 2.5 box 502 apple fruit 3 kilo 2测试输出结果:存在问题的思考:源代码出错,漏了一些分号导致程序频频出错,在进行编写时注意小地方别出错!否则会影响大局!6)总结:学习体会与收获:通过这个超市管理系统程序设计实验,我从理论知识跨越到实践上,感到收效良多,从崇拜计算机到学会控制计算机,在心理上不再觉得计算机是万能的,人的大脑才是万能的,算法才是万能的数学才是万能的,在这次实验中,实现一个完整的程序大大加深了我对C语言课程的兴趣!对C语言课程设计的认识以及自己的建议:C语言课程设计就是通过编译实现需要的功能的一种程序的设计,建议自己以后在这方面多下功夫,真正实现自己编译以个完整的C程序,实现自己的梦想和未来!。