广 州 大 学
实
验
报
告
学
院
商学院
专业、班级
电子商务
姓名、学号
课程名称
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 )