收藏 分享(赏)

商品进销存出管理.doc

上传人:HR专家 文档编号:6239956 上传时间:2019-04-03 格式:DOC 页数:15 大小:63KB
下载 相关 举报
商品进销存出管理.doc_第1页
第1页 / 共15页
商品进销存出管理.doc_第2页
第2页 / 共15页
商品进销存出管理.doc_第3页
第3页 / 共15页
商品进销存出管理.doc_第4页
第4页 / 共15页
商品进销存出管理.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、该程序具有以下功能:(1)录入商品信息;(2)给定商品编号,修改该商品信息;(3)给定商品编号,删除该商品信息;(4)录入商品的进货与销售信息;(5)给定商品编号或商品名,查看该商品及库存信息;(6)统计功能:提供一些统计各类信息的功能#include#include #define NULL 0#define LEN sizeof(struct student)struct date int year;int month;int day;struct xuekeint pingshi;int shiyan;int kaoshi;float zchji;struct studentint nu

2、m;char name10;char sex;struct date birthday;struct xueke xk2;struct student *next; /*指向下一个结构体数据类型*/;typedef struct student score; /*用 score 来代替类型 struct student*/int n,k; /*n.k 为全局变量,n 表示结点个数,k 表示人数*/score *r=NULL; /*定义一个全局变量指针*/score *stu;/*菜单*/int caidan(k)int i;printf(“nnntttt 考试成绩管理系统n“);printf(

3、“ttt 作者:薛文波、魏文清、姚志浩n“);for(i=1;inum,q-name,q-sex,q-birthday.year,q-birthday.month,q-birthday.day); fprintf(fp,“%5d|%5d|%5d|%.1f|“,q-xk0.pingshi,q-xk0.shiyan,q-xk0.kaoshi,q-xk0.zchji);fprintf(fp,“%5d|%5d|%5d|%.1fn“,q-xk1.pingshi,q-xk1.shiyan,q-xk1.kaoshi,q-xk1.zchji);q=q-next; fclose(fp); /*关闭文件指针 fP

4、 指向的文件*/printf(“文件已保存n“);return(0); /*输入模块*/score *creat(void)score *head,*p1,*p2; /*定义一个头指针和两个工作点 */int i;head=NULL;n=0;p1=(struct student *)malloc(LEN); /*用 P1 开辟一个新单元*/printf(“1.请输入学生资料(输 0 退出):n“);printf(“a.请输入学生学号 (学号应大于 0):“);scanf(“%d“,while(p1-numnum);while(p1-num!=0) printf(“b.请输入学生的姓名:“);s

5、canf(“%s“,p1-name);printf(“请输入学生的性别(Mscanf(“ %c“,while(p1-sex!=Mscanf(“ %c“,printf(“c.请输入学生的生日 (年.月.日):“);scanf(“ %d.%d.%d“,printf(“d.请输入学生的成绩!n“);printf(“1.请输入 C 成绩(平时,实验,考试):“);scanf(“ %d,%d,%d“,p1-xk0.zchji=p1-xk0.pingshi*0.1+p1-xk0.shiyan*0.2+p1-xk0.kaoshi*0.7;printf(“2.请输入高数成绩(平时,实验,考试):“);scan

6、f(“ %d,%d,%d“,p1-xk1.zchji=p1-xk1.pingshi*0.1+p1-xk1.shiyan*0.2+p1-xk1.kaoshi*0.7; n=n+1; /*结点个数加一*/if(n=1) head=p2=p1; /*若为首结点,则头指针指向本结点*/else p2-next=p1;p2=p1; /*若不是首结点 则把本结点链接到尾部*/p1=(struct student *)malloc(LEN); printf(“*n“);printf(“1.请输入学生资料(输 0 退出):n“);printf(“a.请输入学生的学号 (学号应大于 0):“);scanf(“%

7、d“,while(p1-numnum);p2-next=NULL; /* 最后结点不指向任何地址*/free(p1); /*释放结点占用空间 */return(head); /*输出模块*/void print(score *head)score *q=head;printf(“n 输出%d 个学生的资料:n“,n);printf(“*n“);printf(“|学号| 姓名 |性别|生 日 |“);printf(“C(平时.实验.考试.综合)|“);printf(“高数( 平时 .实验.考试.综合)n“);printf(“*n“);if(head=NULL)printf(“n 没有这个学生的资

8、料!n“);return;while(q!=NULL)printf(“|%4d|%4s|%4c|%4d-%2d-%2d|“,q-num,q-name,q-sex,q-birthday.year,q-birthday.month,q-birthday.day); printf(“%5d|%5d|%5d|%.1f|“,q-xk0.pingshi,q-xk0.shiyan,q-xk0.kaoshi,q-xk0.zchji);printf(“%5d|%5d|%5d|%.1f n“,q-xk1.pingshi,q-xk1.shiyan,q-xk1.kaoshi,q-xk1.zchji);q=q-next

9、; /*q 指针依次向下扫描*/printf(“n*n“);/*统计模块*/score *tongji(score *head)score *q=head,*max,*min;int i,k12=0,0,k22=0,0,k32=0,0; /*将人数统计值的初始值赋为 0*/float czong=0,gzong=0,caver,gaver;q=head; /*工作点首先指向头指针*/max=q;min=q;while(q!=NULL)czong+=q-xk0.zchji; /*P1 指向学生总成绩*/gzong+=q-xk1.zchji;for(i=0;ixki.zchjimax-xki.zc

10、hji) max=q; /*将最大值的地址赋给 P1*/if(q-xki.zchjixki.zchji)min=q; if(q-xki.zchji=80) k1i+; /*k1i+为人数的统计*/else if(q-xki.zchji=60) k2i+;else k3i+; /*分段成绩的人数统计*/ q=q-next; caver=czong/n; /*计算 C 的平均成绩*/gaver=gzong/n; /*计算 math 平均成绩*/printf(“C 语言成绩的总分为:%.2f C 语言成绩的平均分为 :%.2fn“,czong,caver);printf(“C 语言成绩的最高分为:%

11、.2f C 语言成绩的最低分为:%.2fn“,max-xk0.zchji,min-xk0.zchji);printf(“C 语言成绩优秀的人数为:%dn“,k10);printf(“C 语言成绩良好的成绩为:%dn“,k20);printf(“C 语言成绩及格的人数为:%dn“,k10+k20);printf(“C 语言成绩不及格的人数为:%dn“,k30);printf(“高数成绩的总分为:%.2f 高数成绩的平均分为:%.2fn“,gzong,gaver);printf(“高数成绩的最高分为:%.2f 高数成绩的最低分为:%.2fn“,max-xk1.zchji,min-xk1.zchji

12、);printf(“高数成绩优秀的人数为:%dn“,k11);printf(“高数成绩良好的人数为:%dn“,k21);printf(“高数成绩及格的人数为:%dn“,k11+k21);printf(“高数成绩不及格的人数为:%dn“,k31); return(head); /*按学号查询模块*/void chaxun2(score *head)score *q=head;int sss=0; char name10;printf(“请输入要查询的学生姓名:“);scanf(“%s“,name);while(q!=NULL)if(strcmp(name,q-name)=0) /*通过字符串的比

13、较按姓名查找 */printf(“*n“);printf(“|学号| 姓名 |性别|生 日 |“);printf(“C(平时.实验.考试.综合)|“);printf(“高数( 平时 .实验.考试.综合)n“);printf(“*n“);printf(“|%4d|%4s|%4c|%4d-%2d-%2d|“,q-num,q-name,q-sex,q-birthday.year,q-birthday.month,q-birthday.day); printf(“%5d|%5d|%5d|%.1f|“,q-xk0.pingshi,q-xk0.shiyan,q-xk0.kaoshi,q-xk0.zchji

14、);printf(“%5d|%5d|%5d|%.1fn“,q-xk1.pingshi,q-xk1.shiyan,q-xk1.kaoshi,q-xk1.zchji);printf(“*n“); sss=3; /*定义变量不等于初始值则退出循环体*/q=q-next; if(sss=0) printf(“没有这个学生的资料!nn“); /*按学号查询*/void chaxun1(score *head)score *q=head;int num,sss=0;printf(“请输入要查询的学生学号:“);scanf(“%d“,while(q!=NULL)if(num=q-num)printf(“*n

15、“);printf(“|学号| 姓名 |性别|生 日 |“);printf(“C(平时.实验.考试.综合)|“);printf(“高数( 平时 .实验.考试.综合)n“);printf(“*n“);printf(“|%4d|%4s|%4c|%4d-%2d-%2d|“,q-num,q-name,q-sex,q-birthday.year,q-birthday.month,q-birthday.day); printf(“%5d|%5d|%5d|%.1f|“,q-xk0.pingshi,q-xk0.shiyan,q-xk0.kaoshi,q-xk0.zchji);printf(“%5d|%5d|%

16、5d|%.1fn“,q-xk1.pingshi,q-xk1.shiyan,q-xk1.kaoshi,q-xk1.zchji);printf(“*n“); sss=3;q=q-next;if(sss=0) printf(“没有这个学生的资料!nn“); /*查询二级菜单*/chaxun_cd()int m=0,i;while(m=0)printf(“查询学生的资料n“);printf(“1.按学号查询n“);printf(“2.按姓名查询n“);printf(“请选择你所要操作的选项(按 0 退出):“);scanf(“%d“,switch(i)case 1:chaxun1(r);break;

17、/*break 表示跳出循环结构结束循环退出包含 break 语句的那层循环体*/case 2:chaxun2(r);break;case 0:m=1;break;default:printf(“错误,重新选择:“);break; /*按学号删除*/score *del1(score *head)score *p1,*p2;int num;printf(“请输入要删除学生的学号:“);scanf(“%d“,if(head=NULL)printf(“没有这个学生的资料!nn“);return(head);p2=p1=head;while(num!=p1-nump1=p1-next; if(num

18、=p1-num)if(head=p1)head=head-next; else p2-next=p1-next;free(p1);p1=p2; printf(“第%d 学生的资料已删除完毕!nn“,num);else printf(“没有这个学生的资料! nn“);return(head); /*/score *del2(score *head)score *p1,*p2;char name10;printf(“请输入要删除学生的姓名:“);scanf(“%s“,name);if(head=NULL)printf(“没有这个学生的资料!nn“);return(head); p2=p1=head

19、;while(strcmp(name,p1-name)!=0p1=p1-next; if(strcmp(name,p1-name)=0)if(head=p1)head=head-next; else p2-next=p1-next;free(p1);p1=p2;printf(“名字叫%s 的学生的资料已被删除!nn“,name);else printf(“没有这个学生的资料! nn“);return(head);/*/del_cd()int m=0,i;while(m=0)printf(“删除学生的资料n“);printf(“1.按学号删除n“);printf(“2.按姓名删除n“);prin

20、tf(“3.查看删除结果n“);printf(“请选择你所要操作的选项(按 0 退出):“);scanf(“%d“,switch(i)case 1:r=del1(r);break;case 2:r=del2(r);break;case 3:print(r);break;case 0:m=1;break;default:printf(“错误,重新选择:“);break;/*按学号排序*/score *paixu2(score *head)score *p1,*p2,*k,h;int i;if(head=NULL)printf(“没有任何学生的资料!“);return(head);p1=head;

21、p2=head-next;k=p1;for(i=0;inump2-num)k=p2;p2=p2-next; if(k!=p1)h=*k;*k=*p1;*p1=h;h.next=k-next;k-next=p1-next;p1-next=h.next;p1=p1-next;p2=p1-next;k=p1; printf(“排序成功!nn“);return(head);/*/score *paixu1(score *head)score *p1,*p2,*k,h;int i;if(head=NULL)printf(“没有任何学生的资料!“);return(head);p1=head;p2=head

22、-next;k=p1;for(i=0;ixk0.zchjip2-xk0.zchji)k=p2;p2=p2-next;if(k!=p1)h=*k;*k=*p1;*p1=h;h.next=k-next;k-next=p1-next;p1-next=h.next;p1=p1-next;p2=p1-next;k=p1;printf(“排序成功!nn“);return(head); /*/paixu_cd()int m=0,i;while(m=0) printf(“对学生的资料进行排序n“);printf(“1.按 C 语言成绩排序n“);printf(“2.按学号排序n“);printf(“请选择你所

23、要操作的选项(按 0 退出):“);scanf(“%d“,switch(i)case 1:r=paixu1(r);break;case 2:r=paixu2(r);break;case 0:m=1;break;default:printf(“错误,重新选择:“);break;/*按 C 成绩插入 */score *charu1(score *head,score *stu)score *p1,*p2;int i;p1=head;r=paixu1(r);stu=(score*)malloc(LEN); /*开辟一个新单元,用于保存要插入的信息 */printf(“请输入要增加的学生资料:n“);

24、printf(“请输入要增加的学生学号:“);scanf(“%d“,while(stu-numnum);printf(“b.请输入要增加的学生姓名:“);scanf(“%s“,stu-name);printf(“请输入要增加的学生性别(F 或 M):“);scanf(“ %c“,while(stu-sex!=Mscanf(“ %c“,printf(“c.请输入要增加的学生生日(年.月.日):“);scanf(“ %d.%d.%d“,printf(“d.请输入要增加的学生成绩!n“);printf(“1.请输入要增加的学生 C 语言成绩(平时,实验,考试):“);scanf(“ %d,%d,%d

25、“,stu-xk0.zchji=stu-xk0.pingshi*0.1+stu-xk0.shiyan*0.2+stu-xk0.kaoshi*0.7;printf(“2.请输入要增加的学生高数成绩(平时,实验,考试):“);scanf(“ %d,%d,%d“,stu-xk1.zchji=stu-xk1.pingshi*0.1+stu-xk1.shiyan*0.2+stu-xk1.kaoshi*0.7;if(head=NULL) /*判断头指针是否为空*/head=stu;stu-next=NULL; /*如果为空,直接插入头上*/n+; /*人数加一*/return(head); while(p

26、1-xk0.zchjixk0.zchjip1=p1-next; if(stu-xk0.zchjixk0.zchji)if(p1=head) /*如果 p1 指向头指针 */head=stu;stu-next=p1;n+;elsestu-next=p2-next;p2-next=stu;n+;elsep1-next=stu;stu-next=NULL; n+;printf(“增加学生资料成功!n“);return(head);/*按学号插入*/score *charu2(score *head,score *stu)score *p1,*p2;int i=0;p1=head;r=paixu2(r

27、); /*调用排序函数*/stu=(score*)malloc(LEN); /*开辟一个新单元,用于保存要插入的信息 */ printf(“请输入要增加的学生资料:n“);printf(“请输入要增加的学生学号:“);scanf(“%d“,while(stu-numnum);printf(“b.请输入要增加的学生姓名:“);scanf(“%s“,stu-name);printf(“请输入要增加的学生性别(F 或 M):“);scanf(“ %c“,while(stu-sex!=Mscanf(“ %c“,printf(“c.请输入要增加的学生生日(年.月.日):“);scanf(“ %d.%d.

28、%d“,printf(“d.请输入要增加的学生的成绩!n“);printf(“1.请输入要增加的学生 C 语言成绩(平时,实验,考试):“);scanf(“ %d,%d,%d“,stu-xk0.zchji=stu-xk0.pingshi*0.1+stu-xk0.shiyan*0.2+stu-xk0.kaoshi*0.7;printf(“2.请输入要增加的学生高数的成绩(平时,实验,考试):“);scanf(“ %d,%d,%d“,stu-xk1.zchji=stu-xk1.pingshi*0.1+stu-xk1.shiyan*0.2+stu-xk1.kaoshi*0.7; if(head=NU

29、LL) /*判断头指针是否为空*/head=stu;stu-next=NULL; n+; return(head); while(p1-numnump1=p1-next; if(stu-numnum)if(p1=head) head=stu;stu-next=p1;n+;elsestu-next=p2-next;p2-next=stu;n+; else p1-next=stu;stu-next=NULL;n+; printf(“增加学生资料成功!n“);printf(“n“);return(head); /*返回头指针*/*插入的二级菜单*/charu_cd()int m=0,i;while(m=0)printf(“增加学生的人数n“);printf(“n1.按 C 语言成绩增加n“);printf(“2.按学号增加n“);printf(“请选择你所要操作的选项(按 0 退出):“);scanf(“%d“,switch(i)case 1:r=charu1(r,stu);break;case 2:r=charu2(r,stu);break;case 0:m=1;break;default:printf(“错误,重新选择:“);break;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报