综合性实验实验报告

 广 州 大 学

 实

  验

  报

  告

 学

 院

 商学院

  专业、班级

  电子商务

 姓名、学号

 课程名称

 C 程序设计

  项目名称

 设计性实验

  实验时间:

 2012

 年

 6 月

 12

  日

 设计性实验

 实验报告 开课实验室:

 2 0 1 2 年 6 月 1 2 日

 第1页 学院 商 年级、专业、班 11 电子商务 姓名 陈梓君 成绩

 课程 名称 C 程序设计 实验项目 名

 称 设计性实验 指导教师 签名

 一、实验目的 1. 掌握各种程序设计技术的综合应用方法; 2. 掌握对实际应用中的一个具体问题进行需求分析的方法; 3. 掌握采用结构化方法进行简单的系统分析与设计的方法; 4. 培养学生设计一个完整的小应型用系统的能力。

 二、 实验原理( 算法分 析(包括流程图)

 ) 运用结构体、指针和调用函数对仓库的数据进行管理。

 Sum 函数运用:

  输入i=0,z=0,ni<nz=z+huo[i].jiage*huo[i].shuliang;YN

  第2页 shanchu 函数运用:

 输入要删除的产品名称确定删除信息删除n=n-1i=i-1YN Zengjia 函数首先要确定增加产品的数目;最后要 return(n+m); 三、实验过程原始记录(数据、图表、计算等)

 #include "stdafx.h" #include <conio.h> #include <stdlib.h> #include<stdio.h> #include<string.h> struct chanpin

 {

 int huowuhao;

 char huowuming[20];

 char changjia[20];

 float jiage;

 int shuliang;

 char shengchanriqi[80];

 char jinhuoriqi[80]; }; 装 订 线

 第3页 struct chanpin huo[];

 int input(struct chanpin huo[]);

  int sum(struct chanpin huo[],int n);

 void save(struct chanpin huo[],int n);

  int Load(struct chanpin huo[],int n=0);

  int Load1(struct chanpin huo[],int n=0);

  int shanchu(struct chanpin huo[],int n);

  int xiugai(struct chanpin huo[],int n);

  int zengjia(struct chanpin huo[],int n);

  void list(struct chanpin huo[],int n);

 void main() {

 struct chanpin huo[50];

 char ch;

 int length;

 while(1)

  {

  system("cls");

  printf("1. 输入货物信息:\n");

  printf("2. 货物的总价值:\n");

  printf("3. 储存厂商信息:\n");

  printf("4. 删除产品信息:\n");

  printf("5. 修改产品信息:\n");

  printf("6. 增加产品信息:\n");

  printf("7.打印列表:\n");

  printf("8.

 退出\n");

  ch=getch();

 //#include<conio.h>

  if(ch=="8")

 break;

  system("cls"); //#include<stdlib.h>

  switch(ch)

  {

  case "1":

 save (huo,input(huo));

 break;

 case "2":

  length=Load(huo);

 sum(huo,length);

 break;

  case "3":

 length=Load(huo);

 save(huo,length);

 break;

 case"4":

  length=Load(huo);

 length=shanchu(huo,length);

 save(huo,length);

  break;

 case"5":

  length=Load(huo);

 length=xiugai(huo,length);

 save(huo,length);

  break;

  case"6":

 length=Load(huo);

 length=zengjia(huo,length);

 save(huo,length);

  break;

 case"7":

 list(huo, Load(huo));

 break;

  }

 } }

  int input(chanpin huo[]) {

 int i,n;

  system("cls");

  printf("\n 请输入要输入的产品数目:\n");

  scanf("%d",&n); printf("输入厂商信息:\n 货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n"); for(i=0;i<n;i++)

 scanf("%d %s %s %f %d %s %s",&huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,&huo[i].jiage,

 &huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi);

 return (n); 装 订 线

 } int sum(chanpin huo[],int n) {

 float z;

 int i;

 for(i=0,z=0;i<n;i++)

  z=z+huo[i].jiage*huo[i].shuliang;

 printf("货物的总价值:%f\n",z);

 getch();

 return 0; }

 int Load(chanpin huo[],int n) {

 FILE *fp;

  if((fp=fopen("huo.txt","a+"))==NULL)

  {

 printf("不能打开文件!\n");

 exit(1); }

  while(fread(&huo[n],sizeof(struct chanpin),1,fp)) n++;

 fclose(fp);

  printf("从文件中成功读出记录!!!\n");

  return n;

 } int Load1(chanpin huo[],int n) {

 FILE *fp;

  if((fp=fopen("bkhuo.txt","a+"))==NULL)

  {

 printf("不能打开文件!\n");

 exit(1); }

  while(fread(&huo[n],sizeof(struct chanpin),1,fp)) n++;

  fclose(fp);

  printf("从文件中成功读出记录!!!\n");

  return n;

 }

  void save(struct chanpin huo[],int n) {

 FILE*fp;

 int i;

 if((fp=fopen("huo.txt","wb"))==NULL)

 {

  printf("cannot open file\n");

  return;

 }

 for(i=0;i<n;i++)

  if(fwrite(&huo[i],sizeof(struct chanpin ),1,fp)!=1)

 printf("file write error\n");

  printf("储存成功!!\n");

  fclose(fp); } int shanchu(chanpin huo[],int n) {

 char s[20];

  char ch;

  int i,j,flag=0;

  system("cls");

  printf("请输入要删除的产品名称\n");

  scanf("%s",s);

  for(i=0;i<n;i++)

 {

  if(strcmp(s,huo[i].huowuming)==0)

 {

 flag=1;

  system("cls");

  printf("\n\n 要删除的产品信息如下:\n");

  printf("\n");

  printf("货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

  printf("%d %s %s %f %d %s %s\n",huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,huo[i].jiage,

 huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi);

  printf ("\n");

  printf("确定删除仓库信息吗?(Y/N)\n");

  ch=getchar();

  ch=getchar();

  if(ch=="Y"||ch=="y")

 {

  for(j=i;j<n-1;j++) huo[j]=huo[j+1];

 n=n-1;

 i--;

 printf ("删除成功.\n");

  }

 }

  }

  if(flag==0)

  printf("要删除的产品不存在!!\n");

  getch();

  return n; } int xiugai(chanpin huo[],int n) {

 int i,flag=0;

  char s[20],ch;

  system("cls");

  printf("请输入要修改的产品名称\n");

  scanf("%s",s);

  for(i=0;i<n;i++)

  {

  if(strcmp(s,huo[i].huowuming)==0)

  {

 flag=1;

  system("cls");

  printf("\n 要删除的产品信息如下:\n");

 printf("\n");

  printf("货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

 {

  printf("%d %s %s %f %d %s %s\n",huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,huo[i].jiage,

 huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi); }

  printf ("\n");

  printf("确定修改产品信息吗?(Y/N)\n");

  ch=getchar();

  ch=getchar();

  if(ch=="y"||ch=="Y")

  {

  system("cls");

  printf("请输入修改后的信息:\n");

 printf("请输入产品新的名称:");

  scanf("%s",huo[i].huowuming);

  printf("请输入%s 产品新的货物号:",huo[i].huowuming);

  scanf("%d",&huo[i].huowuhao);

  printf("请输入%s 产品新的生产厂家:",huo[i].huowuming);

  scanf("%s",&huo[i].changjia);

  printf("请输入%s 产品新的价格:",huo[i].huowuming);

  scanf("%f",&huo[i].jiage);

  printf("请输入%s 产品新的数量:",huo[i].huowuming);

  scanf("%d",&huo[i].shuliang);

  printf("请输入%s 产品新的生产日期:",huo[i].huowuming);

  scanf("%s",huo[i].shengchanriqi);

  printf("请输入%s 产品新的进货日期:",huo[i].huowuming);

  scanf("%s",huo[i].jinhuoriqi); } }

 }

  if(flag==0)

  printf("要修改的产品不存在!!\n");

  getchar();

  return n; } int zengjia(chanpin huo[],int n) {

  int i,m;

 system("cls");

  printf("\n 请输入再增加的产品数:\n");

  scanf("%d",&m);

  printf("开始追加记录\n");

  for(i=n;i<n+m;i++)

 { system("cls");

  printf("\n 第%d 个产品的货物号:",i+1);

  scanf("%d",&huo[i].huowuhao);

  printf("第%d 个货物的货物名:",i+1);

  scanf("%s",huo[i].huowuming);

  printf("第%d 个生产厂家:",i+1);

  scanf("%s",&huo[i].changjia);

 printf("第%d 个产品的价格:",i+1);

  scanf("%f",&huo[i].jiage);

  printf("第%d 个产品的数量:",i+1);

  scanf("%d",&huo[i].shuliang);

 printf("第%d 个产品的生产日期:",i+1);

  scanf("%s",huo[i].shengchanriqi);

  printf("第%d 个产品的进货日期:",i+1);

  scanf("%s",huo[i].jinhuoriqi);

 }

 return (n+m);

 } void list(chanpin huo[],int n) {

 int i;

  printf("货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

 for(i=0;i<n;i++) {

  printf("%d %s %s %f %d %s %s\n",huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,huo[i].jiage,

 huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi); }

  printf ("\n"); getchar(); } 四、实验结果及分析 1 程序启动:

 2 输入产品信息:

  3 计算产品总价值:

 打印产品列表:

 4 删除产品信息:

 1.

 产品列表:

 按 N,信息没有删除。

 2

 产品列表:

  产品信息成功删除。

 5 增加产品信息:

 产品列表:

 6 修改产品信息:

  产品列表:

 7 退出程序:

 “ 在写调用函数声明的前面“{ } “后要加上“;“否则出现错误“error C2236: unexpected "struct" "chanpin’ ” 五、附录( 自己实现的源代码) #include "stdafx.h" #include <conio.h> #include <stdlib.h> #include<stdio.h> #include<string.h> struct chanpin

 {

 int huowuhao;

 char huowuming[20];

 char changjia[20];

 float jiage;

 int shuliang;

 char shengchanriqi[80];

 char jinhuoriqi[80]; };

  struct chanpin huo[];

 int input(struct chanpin huo[]);

  int sum(struct chanpin huo[],int n);

 void save(struct chanpin huo[],int n);

  int Load(struct chanpin huo[],int n=0);

  int Load1(struct chanpin huo[],int n=0);

  int shanchu(struct chanpin huo[],int n);

  int xiugai(struct chanpin huo[],int n);

  int zengjia(struct chanpin huo[],int n);

  void list(struct chanpin huo[],int n);

 void main()

 {

 struct chanpin huo[50];

 char ch;

 int length;

 while(1)

 {

  system("cls");

  printf("1. 输入货物信息:\n");

  printf("2. 货物的总价值:\n");

  printf("3. 储存厂商信息:\n");

  printf("4. 删除产品信息:\n");

  printf("5. 修改产品信息:\n");

  printf("6. 增加产品信息:\n");

  printf("7.打印列表:\n");

  printf("8.

 退出\n");

  ch=getch();

 //#include<conio.h>

  if(ch=="8")

 break;

  system("cls"); //#include<stdlib.h>

  switch(ch)

  {

  case "1":

 save (huo,input(huo));

 break;

  case "2":

  length=Load(huo);

 sum(huo,length);

 break;

  case "3":

 length=Load(huo);

 save(huo,length);

 break;

 case"4":

  length=Load(huo);

 length=shanchu(huo,length);

 save(huo,length);

  break;

 case"5":

  length=Load(huo);

 length=xiugai(huo,length);

 save(huo,length);

  break;

  case"6":

  length=Load(huo);

 length=zengjia(huo,length);

 save(huo,length);

  break;

 case"7":

 list(huo, Load(huo));

 break;

  }

 }

 }

  int input(chanpin huo[]) {

 int i,n;

  system("cls");

  printf("\n 请输入要输入的产品数目:\n");

  scanf("%d",&n);

  printf("输入厂商信息:\n 货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

  for(i=0;i<n;i++)

 scanf("%d %s %s %f %d %s %s",&huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,&huo[i].jiage,

 &huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi);

 return (n); }

 int sum(chanpin huo[],int n) {

 float z;

 int i;

 for(i=0,z=0;i<n;i++)

  z=z+huo[i].jiage*huo[i].shuliang;

 printf("货物的总价值:%f\n",z);

 getch();

 return 0; }

 int Load(chanpin huo[],int n) {

 FILE *fp;

  if((fp=fopen("huo.txt","a+"))==NULL)

  {

 printf("不能打开文件!\n");

 exit(1); }

  while(fread(&huo[n],sizeof(struct chanpin),1,fp)) n++;

 fclose(fp);

  printf("从文件中成功读出记录!!!\n");

  return n;

 } int Load1(chanpin huo[],int n) {

 FILE *fp;

  if((fp=fopen("bkhuo.txt","a+"))==NULL)

  {

 printf("不能打开文件!\n");

 exit(1); }

  while(fread(&huo[n],sizeof(struct chanpin),1,fp)) n++;

  fclose(fp);

  printf("从文件中成功读出记录!!!\n");

  return n;

 }

 void save(struct chanpin huo[],int n) {

 FILE*fp;

 int i;

 if((fp=fopen("huo.txt","wb"))==NULL)

 {

  printf("cannot open file\n");

  return;

 }

 for(i=0;i<n;i++)

  if(fwrite(&huo[i],sizeof(struct chanpin ),1,fp)!=1)

 printf("file write error\n");

  printf("储存成功!!\n");

  fclose(fp); } int shanchu(chanpin huo[],int n) {

 char s[20];

  char ch;

  int i,j,flag=0;

 system("cls");

  printf("请输入要删除的产品名称\n");

  scanf("%s",s);

  for(i=0;i<n;i++)

 {

  if(strcmp(s,huo[i].huowuming)==0)

 {

 flag=1;

  system("cls");

  printf("\n\n 要删除的产品信息如下:\n");

  printf("\n");

  printf("货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

  printf("%d %s %s %f %d %s %s\n",huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,huo[i].jiage,

 huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi);

  printf ("\n");

  printf("确定删除仓库信息吗?(Y/N)\n");

  ch=getchar();

  ch=getchar();

  if(ch=="Y"||ch=="y")

  {

  for(j=i;j<n-1;j++) huo[j]=huo[j+1];

 n=n-1;

 i--;

 printf ("删除成功.\n");

  }

 }

  }

  if(flag==0)

  printf("要删除的产品不存在!!\n");

  getch();

  return n; } int xiugai(chanpin huo[],int n) {

 int i,flag=0;

  char s[20],ch;

  system("cls");

  printf("请输入要修改的产品名称\n");

  scanf("%s",s);

  for(i=0;i<n;i++)

  {

  if(strcmp(s,huo[i].huowuming)==0)

  {

 flag=1;

  system("cls");

  printf("\n 要删除的产品信息如下:\n");

 printf("\n");

  printf("货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

 {

  printf("%d %s %s %f %d %s %s\n",huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,huo[i].jiage,

 huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi); }

  printf ("\n");

  printf("确定修改产品信息吗?(Y/N)\n");

  ch=getchar();

  ch=getchar();

  if(ch=="y"||ch=="Y")

  {

  system("cls");

  printf("请输入修改后的信息:\n");

  printf("请输入产品新的名称:");

  scanf("%s",huo[i].huowuming);

  printf("请输入%s 产品新的货物号:",huo[i].huowuming);

  scanf("%d",&huo[i].huowuhao);

  printf("请输入%s 产品新的生产厂家:",huo[i].huowuming);

  scanf("%s",&huo[i].changjia);

  printf("请输入%s 产品新的价格:",huo[i].huowuming);

  scanf("%f",&huo[i].jiage);

  printf("请输入%s 产品新的数量:",huo[i].huowuming);

  scanf("%d",&huo[i].shuliang);

  printf("请输入%s 产品新的生产日期:",huo[i].huowuming);

  scanf("%s",huo[i].shengchanriqi);

  printf("请输入%s 产品新的进货日期:",huo[i].huowuming);

  scanf("%s",huo[i].jinhuoriqi);

  }

 }

 }

  if(flag==0)

  printf("要修改的产品不存在!!\n");

  getchar();

  return n; } int zengjia(chanpin huo[],int n)

 第19页

  {

  int i,m;

 system("cls");

  printf("\n 请输入再增加的产品数:\n");

  scanf("%d",&m);

  printf("开始追加记录\n");

  for(i=n;i<n+m;i++)

 { system("cls");

  printf("\n 第%d 个产品的货物号:",i+1);

  scanf("%d",&huo[i].huowuhao);

  printf("第%d 个货物的货物名:",i+1);

  scanf("%s",huo[i].huowuming);

 printf("第%d 个生产厂家:",i+1);

  scanf("%s",&huo[i].changjia);

 printf("第%d 个产品的价格:",i+1);

  scanf("%f",&huo[i].jiage);

  printf("第%d 个产品的数量:",i+1);

 scanf("%d",&huo[i].shuliang);

 printf("第%d 个产品的生产日期:",i+1);

  scanf("%s",huo[i].shengchanriqi);

 printf("第%d 个产品的进货日期:",i+1);

  scanf("%s",huo[i].jinhuoriqi);

 }

 return (n+m);

 } void list(chanpin huo[],int n) {

 int i;

  printf("货物号

 货物名

 生产厂家

 价格

 数量

 生产日期

 进货日期\n");

 for(i=0;i<n;i++) {

  printf("%d %s %s %f %d %s %s\n",huo[i].huowuhao,huo[i].huowuming,huo[i].changjia,huo[i].jiage,

 huo[i].shuliang,huo[i].shengchanriqi,huo[i].jinhuoriqi); }

  printf ("\n"); getchar(); }

 六、联系方式(e-mail )