c语言做管理系统怎么输出html文件
/*西南石油大学计算机科学学院
课程:程序设计综合实践
教师:周永梁宗文
编程者:张悦颖张若曦
编程日期:2017.7.8
程序功能:商品信息管理系统*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#define LEN sizeof(struct commdity)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA comm.num,comm.name,comm.price,comm.count,comm.total
//定义商品信息结构体
struct commdity
{
int num;/*编号*/
char name;/*商品名称*/
double price;/*单价*/
double count;/*数量*/
double total;/*总金额*/
};
struct commdity comm;/*定义结构体数组*/
void in();/*录入商品信息*/
void show();/*显示商品信息*/
void order();/*按总金额排序*/
void del();/*删除商品信息*/
void modify();/*修改商品息*/
void menu();/*主菜单*/
void insert();/*插入商品信息*/
void total();/*计算总商品数*/
void search();/*查找商品信息*/
void printLogo();
void exportToHtmlFile();
//主函数
void main()
{
int n,i;
printLogo();
menu();
scanf("%d",&n);
//输入选择功能的编号
while(n)
{
switch(n)
{
case 1:
in(); /*调用录入商品信息过程*/
break;
case 2:
search(); /*查找商品信息过程*/
break;
case 3:
del(); /*调用删除商品信息的过程*/
break;
case 4:
modify(); /*调用修改商品信息的过程*/
break;
case 5:
insert(); /*调用插入数据的过程*/
break;
case 6:
order(); /*调用排序过程*/
break;
case 7:
total(); /*计算总数*/
break;
case8:
if (i == 0)
printf("还没有可以导出的数据!\n");
exportToHtmlFile();
break;
default:break;
}
getch();
menu();
//执行完功能再次显示菜单界面
scanf("%d",&n);
}
}
//录入商品信息
void in()
{
int i,m=0;/*m是记录的条数*/
char ch;
FILE *fp;
//定义文件指针
if((fp=fopen("data","ab+"))==NULL)
//打开指定文件
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm ,LEN,1,fp)==1)
m++;
//统计当前记录条数
}
fclose(fp);
if(m==0)
printf("没有找到!\n");
else
{
system("cls");
show();/*调用show函数,显示原有信息*/
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
for(i=0;i<m;i++)
fwrite(&comm ,LEN,1,fp);
//向指定的磁盘文件写入信息
printf("是否输入?(y/n):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
//判断是否要录入新信息
{
printf("编号:");
scanf("%d",&comm.num);/*输入学生学号*/
for(i=0;i<m;i++)
if(comm.num == comm.num)
{
printf("该记录已经存在,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("商品名:");
scanf("%s",comm.name); /*输入学生姓名*/
printf("单价:");
scanf("%lf",&comm.price); /*输入商品单价*/
printf("数量:");
scanf("%lf",&comm.count); /*输入商品数量*/
comm.total=comm.price * comm.count;/*计算出总金额*/
if(fwrite(&comm,LEN,1,fp)!=1)
//将新录入的信息写入指定的磁盘文件
{
printf("不能保存!");
getch();
}
else
{
printf("%s 已经保存!\n",comm.name);
m++;
}
printf("是否继续?(y/n):");
//是否继续
scanf("%s",ch);
}
fclose(fp);
printf("OK!\n");
}
//显示商品信息
void show()
{
FILE *fp;
int i,m=0;
fp=fopen("data","ab+");
while(!feof(fp))
{
if(fread(&comm ,LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("编号 商品名称 单价 数量 总金额\t\n");
for(i=0;i<m;i++)
{
printf(FORMAT,DATA);
//将信息按指定格式打印
}
}
//自定义函数实现菜单功能
void menu()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t\t|-------------------商品管理系统-----------------|\n");
printf("\t\t|\t 0. 退出 |\n");
printf("\t\t|\t 1. 录入记录 |\n");
printf("\t\t|\t 2. 查找记录 |\n");
printf("\t\t|\t 3. 删除记录 |\n");
printf("\t\t|\t 4. 修改记录 |\n");
printf("\t\t|\t 5. 插入记录 |\n");
printf("\t\t|\t 6. 排序记录 |\n");
printf("\t\t|\t 7. 统计记录 |\n");
printf("\t\t|\t 8. 网页保存数据 |\n");
printf("\t\t|------------------------------------------------|\n\n");
printf("\t\t\t选择(0-8):");
}
//自定义排序函数
void order()
{
FILE *fp;
struct commdity t;
int i=0,j=0,m=0;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm ,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++) /*双重循环实现总金额比较并交换*/
if(comm.total < comm.total)
{
t=comm;
comm=comm;
comm=t;
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开\n");
return;
}
for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
if(fwrite(&comm ,LEN,1,fp)!=1)
{
printf("%s 不能保存!\n");
getch();
}
fclose(fp);
printf("保存成功\n");
}
//自定义删除函数
void del()
{
FILE *fp;
int snum,i,j,m=0;
char ch;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
printf("请输入编号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm.num)
break;
if(i==m)
{
printf("没有找到!");
getchar();
return;
}
printf("已经找到该记录,是否删除?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
{
for(j=i;j<m;j++)
comm = comm;/*将后一个记录移到前一个记录的位置*/
m--;/*记录的总个数减1*/
printf("成功删除!\n");
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开!\n");
return;
}
for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
if(fwrite(&comm ,LEN,1,fp)!=1)
{
printf("不能保存!\n");
getch();
}
fclose(fp);
}
//自定义查找函数
void search()
{
FILE *fp;
int snum,i,m=0;
char ch;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
printf("请输入编号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum == comm.num)
//查找输入的编号是否在记录中
{
printf("已经找到该记录,是否显示?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("编号 商品名称 单价 数量 总金额 \t\n");
printf(FORMAT,DATA);
//将查找出的结果按指定格式输出
break;
}
else
return;
}
if(i==m)
printf("没有找到相应的记录!\n");/*未找到要查找的信息*/
}
//自定义修改函数
void modify()
{
FILE *fp;
int i,j,m=0,snum;
char ch;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("请输入要修改的记录信息的编号!\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm.num)
//检索记录中是否有要修改的信息
break;
if(i<m)
{
printf("已经找到该记录,是否修改?(y/n)\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("商品名:\n");
scanf("%s",comm.name);/*输入名字*/
printf("\n单价:");
scanf("%lf",&comm.price);/*输入商品单价*/
printf("\n数量:");
scanf("%lf",&comm.count);/*输入商品数量*/
comm.total = comm.price* comm.count;
printf("保存成功!");
}
else
return;
}
else
{
printf("没有找到!");
getchar();
return;
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
for(j=0;j<m;j++)
if(fwrite(&comm ,LEN,1,fp)!=1)
{
printf("不能保存!");
getch();
}
//将新修改的信息写入指定的磁盘文件中
fclose(fp);
}
//自定义插入函数
void insert()
{
FILE *fp;
int i,j,k,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("请输入要插入的位置\n");
scanf("%d",&snum);/*输入要插入的位置*/
for(i=0;i<m;i++)
if(snum == comm.num)
break;
for(j=m-1;j>i;j--)
comm = comm;
//从最后一条记录开始均向后移一位
printf("现在输入新的信息.\n");
printf("编号:");
scanf("%d",&comm.num);
for(k=0;k<m;k++)
if(comm.num==comm.num && k!=i+1)
{
printf("已经存在该编号,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("商品名:");
scanf("%s",comm.name);
printf("单价:");
scanf("%lf",&comm.price);
printf("数量:");
scanf("%lf",&comm.count);
comm.total = comm.price * comm.count;
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件\n");
return;
}
for(k=0;k<=m;k++)
if(fwrite(&comm ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
{
printf("不能保存!");
getch();
}
fclose(fp);
}
//统计
void total()
{
FILE *fp;
int m=0;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开记录!\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;/*统计记录个数即记录个数*/
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("一共有 %d 条记录!\n",m);/*将统计的个数输出*/
fclose(fp);
}
//打印网页
void exportToHtmlFile()
{
structcommdity;
FILE*fp;
intiCounter=0,i;//建议最好内存中,有一个变量,一直维护二进制文件中的记录数。免得每次统计。
fp=fopen("export.html", "w");//以写的方式打开文件
if (fp==NULL)
{
printf("导出文件失败。请将当前可执行程序拷贝到具有写权限的磁盘位置。\n");
return;
}
//第一步,写入网页的开头部分
fprintf(fp,"<!--版权所有201631064204张若曦 201631064206张悦颖 -->\n");
fprintf(fp,"<html>\n");
fprintf(fp,"<head><title>商品信息管理</title></head>\n"); //浏览器标题栏显示的文字
fprintf(fp,"<body>\n");
fprintf(fp,"<center><h2>商品信息管理</h2><hr></center>\n"); //网页正文中的标题文字
fprintf(fp,"<div align=center>\n");
fprintf(fp,"<table border=1 width=80%%>\n");//特备注意:网页代码中的%,在fprintf的双引号之内,要变成%%
//第二步,写入表格的表头部分。要写入的信息,在双引号中。
fprintf(fp,"<tr>\n");
fprintf(fp,"\t<td width=25%%><b>编号</b></td>\n");
fprintf(fp,"\t<td width=30%%><b>名称</b></td>\n");
fprintf(fp,"\t<td width=15%%><b>单价</b></td>\n");
fprintf(fp,"\t<td width=15%%><b>数量</b></td>\n");
fprintf(fp,"\t<td width=15%%><b>总金额</b></td>\n");
fprintf(fp,"</tr>\n");
//第三步,通过循环,写入表格的数据部分。
for(i=0;i++;i<100)
{
fprintf(fp,"<tr>\n");
fprintf(fp,"\t<td width=25%%>%s</td>\n", comm.num);
fprintf(fp,"\t<td width=30%%>%s</td>\n", comm.name);
fprintf(fp,"\t<td width=15%%>%.1f</td>\n",comm.price);
fprintf(fp,"\t<td width=15%%>%.1f</td>\n",comm.count);
fprintf(fp,"\t<td width=15%%>%.1f</td>\n",comm.total);
fprintf(fp,"</tr>\n");
iCounter++;
}
//第四步,写入网页的结束部分。
fprintf(fp,"</table>\n");
fprintf(fp,"</div>\n");
fprintf(fp," <center><h5>201631064204张若曦 201631064206张悦颖 于201707《程序设计综合实践》实现的网页导出功能</h5><center>\n");
fprintf(fp,"</body></html>\n");
//关闭文件
fclose(fp);
//打印成功消息
printf("成功导出%d数据到当前目录下的export.html文件中\n",iCounter);
printf("\a");//用蜂鸣声提醒
}
//编程者
void printLogo()
{
system("color FB");
printf(" . ☆∵ ∴∵ ∴∵∴ ∵╭ ∵╭ ∴╭ ☆╭ ∴ ★∵∴\n");
printf(" . . ∵ ∴★. ∴∵∴ ╭ ╯ ╭ ╯ ╭ ╯ ╭ ╯ ∴∵∴∵∴\n");
printf(" . ☆. ☆∴∵. ∴∵∴▍▍ ▍▍ ▍▍ ▍▍ ☆ ★∵∴\n");
printf(" ▍. ∴∵∴∵. ∴▄███████████☆ ★ ∵\n");
printf(" ◥█▆▆▆▆███▆█▆█▆█▆█▆█▆███◤\n");
printf(" ◥████████☆ CPP ☆█████◤\n");
printf(" .. .. ◥█████████████████◤\n");
printf("\n");
printf(" ╭───────────────────────────────╮\n");
printf(" │ ╔═╦═╗╔═╦═╗╔═╦═╗╔═╦═╗╔═╦═╗╔═╦═╗│\n");
printf(" │ ║ ║║ ║║ ║║ ║║║║║ ║│\n");
printf(" │ ╠商╣╠品╣╠管╣╠理╣╠系╣╠统╣│\n");
printf(" │ ║ ║║ ║║ ║║ ║║ ║║ ║│\n");
printf(" │ ╚═╩═╝╚═╩═╝╚═╩═╝╚═╩═╝╚═╩═╝╚═╩═╝│\n");
printf(" └───-◎◎─────────────◎◎───────────┘\n");
printf("\n");
printf(" ████████████████████████ \n");
printf(" * * \n");
printf(" * ┏╮╱╱ 作者: * \n");
printf(" * ╰★╮ * \n");
printf(" * ╱╱╰┛ 张若曦 * \n");
printf(" * *\n");
printf(" * 张悦颖 * \n");
printf(" * * \n");
printf(" * 西南石油大学 * \n");
printf(" * * \n");
printf(" * 计算机科学学院 * \n");
printf(" * *\n");
printf(" * 物联网工程 * \n");
printf(" * * \n");
printf(" * ☆╭~~~╮(o^.^o)☆ * \n");
printf(" * * \n");
printf(" ████████████████████████ \n");
Sleep(3000);
system("cls");
}
{:10_266:} 本帖最后由 ba21 于 2017-7-13 11:58 编辑
/*
西南石油大学计算机科学学院
课程:程序设计综合实践
教师:周永梁宗文
编程者:张悦颖张若曦
编程日期:2017.7.8
程序功能:商品信息管理系统*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#define LEN sizeof(struct commdity)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA comm.num,comm.name,comm.price,comm.count,comm.total
//定义商品信息结构体
struct commdity
{
int num;/*编号*/
char name;/*商品名称*/
double price;/*单价*/
double count;/*数量*/
double total;/*总金额*/
};
struct commdity comm;/*定义结构体数组*/
void in();/*录入商品信息*/
void show();/*显示商品信息*/
void order();/*按总金额排序*/
void del();/*删除商品信息*/
void modify();/*修改商品息*/
void menu();/*主菜单*/
void insert();/*插入商品信息*/
void total();/*计算总商品数*/
void search();/*查找商品信息*/
void printLogo();
void exportToHtmlFile();
//主函数
void main()
{
int n;
printLogo();
menu();
scanf("%d",&n);
//输入选择功能的编号
while(n)
{
switch(n)
{
case 1:
in(); /*调用录入商品信息过程*/
break;
case 2:
search(); /*查找商品信息过程*/
break;
case 3:
del(); /*调用删除商品信息的过程*/
break;
case 4:
modify(); /*调用修改商品信息的过程*/
break;
case 5:
insert(); /*调用插入数据的过程*/
break;
case 6:
order(); /*调用排序过程*/
break;
case 7:
total(); /*计算总数*/
break;
case 8:
exportToHtmlFile();
break;
default:break;
}
getch();
menu();
//执行完功能再次显示菜单界面
scanf("%d",&n);
}
}
//录入商品信息
void in()
{
int i,m=0;/*m是记录的条数*/
char ch;
FILE *fp;
//定义文件指针
if((fp=fopen("data","ab+"))==NULL)
//打开指定文件
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm ,LEN,1,fp)==1)
m++;
//统计当前记录条数
}
fclose(fp);
if(m==0)
printf("没有找到!\n");
else
{
system("cls");
show();/*调用show函数,显示原有信息*/
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
for(i=0;i<m;i++)
fwrite(&comm ,LEN,1,fp);
//向指定的磁盘文件写入信息
printf("是否输入?(y/n):");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
//判断是否要录入新信息
{
printf("编号:");
scanf("%d",&comm.num);/*输入学生学号*/
for(i=0;i<m;i++)
if(comm.num == comm.num)
{
printf("该记录已经存在,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("商品名:");
scanf("%s",comm.name); /*输入学生姓名*/
printf("单价:");
scanf("%lf",&comm.price); /*输入商品单价*/
printf("数量:");
scanf("%lf",&comm.count); /*输入商品数量*/
comm.total=comm.price * comm.count;/*计算出总金额*/
if(fwrite(&comm,LEN,1,fp)!=1)
//将新录入的信息写入指定的磁盘文件
{
printf("不能保存!");
getch();
}
else
{
printf("%s 已经保存!\n",comm.name);
m++;
}
printf("是否继续?(y/n):");
//是否继续
scanf("%s",ch);
}
fclose(fp);
printf("OK!\n");
}
//显示商品信息
void show()
{
FILE *fp;
int i,m=0;
fp=fopen("data","ab+");
while(!feof(fp))
{
if(fread(&comm ,LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("编号 商品名称 单价 数量 总金额\t\n");
for(i=0;i<m;i++)
{
printf(FORMAT,DATA);
//将信息按指定格式打印
}
}
//自定义函数实现菜单功能
void menu()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t\t|-------------------商品管理系统-----------------|\n");
printf("\t\t|\t 0. 退出 |\n");
printf("\t\t|\t 1. 录入记录 |\n");
printf("\t\t|\t 2. 查找记录 |\n");
printf("\t\t|\t 3. 删除记录 |\n");
printf("\t\t|\t 4. 修改记录 |\n");
printf("\t\t|\t 5. 插入记录 |\n");
printf("\t\t|\t 6. 排序记录 |\n");
printf("\t\t|\t 7. 统计记录 |\n");
printf("\t\t|\t 8. 网页保存数据 |\n");
printf("\t\t|------------------------------------------------|\n\n");
printf("\t\t\t选择(0-8):");
}
//自定义排序函数
void order()
{
FILE *fp;
struct commdity t;
int i=0,j=0,m=0;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm ,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++) /*双重循环实现总金额比较并交换*/
if(comm.total < comm.total)
{
t=comm;
comm=comm;
comm=t;
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开\n");
return;
}
for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
if(fwrite(&comm ,LEN,1,fp)!=1)
{
printf("%s 不能保存!\n");
getch();
}
fclose(fp);
printf("保存成功\n");
}
//自定义删除函数
void del()
{
FILE *fp;
int snum,i,j,m=0;
char ch;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
printf("请输入编号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm.num)
break;
if(i==m)
{
printf("没有找到!");
getchar();
return;
}
printf("已经找到该记录,是否删除?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判断是否要进行删除*/
{
for(j=i;j<m;j++)
comm = comm;/*将后一个记录移到前一个记录的位置*/
m--;/*记录的总个数减1*/
printf("成功删除!\n");
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开!\n");
return;
}
for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
if(fwrite(&comm ,LEN,1,fp)!=1)
{
printf("不能保存!\n");
getch();
}
fclose(fp);
}
//自定义查找函数
void search()
{
FILE *fp;
int snum,i,m=0;
char ch;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("没有记录!\n");
return;
}
printf("请输入编号:");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum == comm.num)
//查找输入的编号是否在记录中
{
printf("已经找到该记录,是否显示?(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("编号 商品名称 单价 数量 总金额 \t\n");
printf(FORMAT,DATA);
//将查找出的结果按指定格式输出
break;
}
else
return;
}
if(i==m)
printf("没有找到相应的记录!\n");/*未找到要查找的信息*/
}
//自定义修改函数
void modify()
{
FILE *fp;
int i,j,m=0,snum;
char ch;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("请输入要修改的记录信息的编号!\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
if(snum==comm.num)
//检索记录中是否有要修改的信息
break;
if(i<m)
{
printf("已经找到该记录,是否修改?(y/n)\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("商品名:\n");
scanf("%s",comm.name);/*输入名字*/
printf("\n单价:");
scanf("%lf",&comm.price);/*输入商品单价*/
printf("\n数量:");
scanf("%lf",&comm.count);/*输入商品数量*/
comm.total = comm.price* comm.count;
printf("保存成功!");
}
else
return;
}
else
{
printf("没有找到!");
getchar();
return;
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
for(j=0;j<m;j++)
if(fwrite(&comm ,LEN,1,fp)!=1)
{
printf("不能保存!");
getch();
}
//将新修改的信息写入指定的磁盘文件中
fclose(fp);
}
//自定义插入函数
void insert()
{
FILE *fp;
int i,j,k,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("请输入要插入的位置\n");
scanf("%d",&snum);/*输入要插入的位置*/
for(i=0;i<m;i++)
if(snum == comm.num)
break;
for(j=m-1;j>i;j--)
comm = comm;
//从最后一条记录开始均向后移一位
printf("现在输入新的信息.\n");
printf("编号:");
scanf("%d",&comm.num);
for(k=0;k<m;k++)
if(comm.num==comm.num && k!=i+1)
{
printf("已经存在该编号,按任意键继续!");
getch();
fclose(fp);
return;
}
printf("商品名:");
scanf("%s",comm.name);
printf("单价:");
scanf("%lf",&comm.price);
printf("数量:");
scanf("%lf",&comm.count);
comm.total = comm.price * comm.count;
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件\n");
return;
}
for(k=0;k<=m;k++)
if(fwrite(&comm ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
{
printf("不能保存!");
getch();
}
fclose(fp);
}
//统计
void total()
{
FILE *fp;
int m=0;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开记录!\n");
return;
}
while(!feof(fp))
if(fread(&comm,LEN,1,fp)==1)
m++;/*统计记录个数即记录个数*/
if(m==0)
{
printf("没有记录!\n");
fclose(fp);
return;
}
printf("一共有 %d 条记录!\n",m);/*将统计的个数输出*/
fclose(fp);
}
//打印网页
void exportToHtmlFile()
{
FILE *fh;
FILE *fp;
intiCounter=0,i;//建议最好内存中,有一个变量,一直维护二进制文件中的记录数。免得每次统计。
//读取数据
fp=fopen("data","ab+"); //打开数据文件
while(!feof(fp))
{
if(fread(&comm ,LEN,1,fp)==1)
iCounter++;
}
fclose(fp);//关闭数据文件
if(iCounter == 0)
{
printf("还没有可以导出的数据!");
return;
}
fh=fopen("export.html", "w");//以写的方式打开html文件
if (fh==NULL)
{
printf("导出文件失败。请将当前可执行程序拷贝到具有写权限的磁盘位置。\n");
return;
}
//第一步,写入网页的开头部分
fprintf(fh,"<!--版权所有201631064204张若曦 201631064206张悦颖 -->\n");
fprintf(fh,"<html>\n");
fprintf(fh,"<head><title>商品信息管理</title></head>\n"); //浏览器标题栏显示的文字
fprintf(fh,"<body>\n");
fprintf(fh,"<center><h2>商品信息管理</h2><hr></center>\n"); //网页正文中的标题文字
fprintf(fh,"<div align=center>\n");
fprintf(fh,"<table border=1 width=80%%>\n");//特备注意:网页代码中的%,在fprintf的双引号之内,要变成%%
//第二步,写入表格的表头部分。要写入的信息,在双引号中。
fprintf(fh,"<tr>\n");
fprintf(fh,"\t<td width=25%%><b>编号</b></td>\n");
fprintf(fh,"\t<td width=30%%><b>名称</b></td>\n");
fprintf(fh,"\t<td width=15%%><b>单价</b></td>\n");
fprintf(fh,"\t<td width=15%%><b>数量</b></td>\n");
fprintf(fh,"\t<td width=15%%><b>总金额</b></td>\n");
fprintf(fh,"</tr>\n");
//第三步,通过循环,写入表格的数据部分。
for(i=0;i<iCounter;i++)
{
fprintf(fh,"<tr>\n");
fprintf(fh,"\t<td width=25%%>%-8d</td>\n", comm.num);
fprintf(fh,"\t<td width=30%%>%-15s</td>\n", comm.name);
fprintf(fh,"\t<td width=15%%>%-12.1lf</td>\n", comm.price);
fprintf(fh,"\t<td width=15%%>%-12.1lf</td>\n", comm.count);
fprintf(fh,"\t<td width=15%%>%-12.1lf</td>\n", comm.total);
fprintf(fh,"</tr>\n");
}
//第四步,写入网页的结束部分。
fprintf(fh,"</table>\n");
fprintf(fh,"</div>\n");
fprintf(fh," <center><h5>201631064204张若曦 201631064206张悦颖 于201707《程序设计综合实践》实现的网页导出功能</h5><center>\n");
fprintf(fh,"</body></html>\n");
//关闭文件
fclose(fh);
//打印成功消息
printf("成功导出%d数据到当前目录下的export.html文件中\n",iCounter);
printf("\a");//用蜂鸣声提醒
}
//编程者
void printLogo()
{
system("color FB");
printf(" . ☆∵ ∴∵ ∴∵∴ ∵╭ ∵╭ ∴╭ ☆╭ ∴ ★∵∴\n");
printf(" . . ∵ ∴★. ∴∵∴ ╭ ╯ ╭ ╯ ╭ ╯ ╭ ╯ ∴∵∴∵∴\n");
printf(" . ☆. ☆∴∵. ∴∵∴▍▍ ▍▍ ▍▍ ▍▍ ☆ ★∵∴\n");
printf(" ▍. ∴∵∴∵. ∴▄███████████☆ ★ ∵\n");
printf(" ◥█▆▆▆▆███▆█▆█▆█▆█▆█▆███◤\n");
printf(" ◥████████☆ CPP ☆█████◤\n");
printf(" .. .. ◥█████████████████◤\n");
printf("\n");
printf(" ╭───────────────────────────────╮\n");
printf(" │ ╔═╦═╗╔═╦═╗╔═╦═╗╔═╦═╗╔═╦═╗╔═╦═╗│\n");
printf(" │ ║ ║║ ║║ ║║ ║║║║║ ║│\n");
printf(" │ ╠商╣╠品╣╠管╣╠理╣╠系╣╠统╣│\n");
printf(" │ ║ ║║ ║║ ║║ ║║ ║║ ║│\n");
printf(" │ ╚═╩═╝╚═╩═╝╚═╩═╝╚═╩═╝╚═╩═╝╚═╩═╝│\n");
printf(" └───-◎◎─────────────◎◎───────────┘\n");
printf("\n");
printf(" ████████████████████████ \n");
printf(" * * \n");
printf(" * ┏╮╱╱ 作者: * \n");
printf(" * ╰★╮ * \n");
printf(" * ╱╱╰┛ 张若曦 * \n");
printf(" * *\n");
printf(" * 张悦颖 * \n");
printf(" * * \n");
printf(" * 西南石油大学 * \n");
printf(" * * \n");
printf(" * 计算机科学学院 * \n");
printf(" * *\n");
printf(" * 物联网工程 * \n");
printf(" * * \n");
printf(" * ☆╭~~~╮(o^.^o)☆ * \n");
printf(" * * \n");
printf(" ████████████████████████ \n");
Sleep(3000);
system("cls");
} 只是需要输出html文件的话,你可以按照html的格式进行文件写入(就是文件操作)。
如果不是输出html文本,而是一个webserver的哈,首先不建议使用c,c++这类语言;如果真需要使用这种语言的话,可以先编程一个简单的webserver(遵循http协议),然后将用户需求的信息,按照协议write给用户。 ba21 发表于 2017-7-13 11:36
谢谢呐 ba21 发表于 2017-7-13 11:36
谢谢呐 张悦颖 发表于 2017-7-13 17:29
谢谢呐
主要是C币 张悦颖 发表于 2017-7-13 17:29
谢谢呐
什么我不是最佳。。人家几行字说写文件,我连代码都给你搞上去了。 ba21 发表于 2017-7-13 20:02
什么我不是最佳。。人家几行字说写文件,我连代码都给你搞上去了。
不是,我看错了{:10_266:}我以为我嗯的你是最佳,,,我错了 {:10_266:} ba21 发表于 2017-7-13 20:01
主要是C币
怎么给你c币{:10_266:} 张悦颖 发表于 2017-7-13 20:46
怎么给你c币
{:10_306:}{:10_247:}{:10_305:}
我也不知道 ba21 发表于 2017-7-13 20:55
我也不知道
{:10_306:}我对不起你就是最佳我摁错了
页:
[1]