广 州 大 学
实 验 报 告
学 院 商学院
专业、班级 电子商务
姓名、学号
课程名称 C程序设计
项目名称 设计性实验
实验时间: 2012 年 6 月 12 日
设计性实验 实验报告
开课实验室:
2012年6月12日
第1页
学院
商
年级、专业、班
11电子商务
姓名
陈梓君
成绩
课程
名称
C程序设计
实验项目
名 称
设计性实验
指导教师
签名
一、实验目的
掌握各种程序设计技术的综合应用方法;
掌握对实际应用中的一个具体问题进行需求分析的方法;
掌握采用结构化方法进行简单的系统分析与设计的方法;
培养学生设计一个完整的小应型用系统的能力。
实验原理(算法分析(包括流程图))
运用结构体、指针和调用函数对仓库的数据进行管理。
Sum函数运用:
订 线 装
订
线
装
shanchu函数运用:
shanchu函数运用:
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];
};
第2页
第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)
{
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)
第19页