张悦颖 发表于 2017-7-13 10:47:29

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");
}

张悦颖 发表于 2017-7-13 10:47:59

{:10_266:}

ba21 发表于 2017-7-13 11:36:46

本帖最后由 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");
}

json 发表于 2017-7-13 14:52:03

只是需要输出html文件的话,你可以按照html的格式进行文件写入(就是文件操作)。
如果不是输出html文本,而是一个webserver的哈,首先不建议使用c,c++这类语言;如果真需要使用这种语言的话,可以先编程一个简单的webserver(遵循http协议),然后将用户需求的信息,按照协议write给用户。

张悦颖 发表于 2017-7-13 17:29:36

ba21 发表于 2017-7-13 11:36


谢谢呐

张悦颖 发表于 2017-7-13 17:31:28

ba21 发表于 2017-7-13 11:36


谢谢呐

ba21 发表于 2017-7-13 20:01:33

张悦颖 发表于 2017-7-13 17:29
谢谢呐

主要是C币

ba21 发表于 2017-7-13 20:02:35

张悦颖 发表于 2017-7-13 17:29
谢谢呐

什么我不是最佳。。人家几行字说写文件,我连代码都给你搞上去了。

张悦颖 发表于 2017-7-13 20:43:30

ba21 发表于 2017-7-13 20:02
什么我不是最佳。。人家几行字说写文件,我连代码都给你搞上去了。

不是,我看错了{:10_266:}我以为我嗯的你是最佳,,,我错了 {:10_266:}

张悦颖 发表于 2017-7-13 20:46:04

ba21 发表于 2017-7-13 20:01
主要是C币

怎么给你c币{:10_266:}

ba21 发表于 2017-7-13 20:55:00

张悦颖 发表于 2017-7-13 20:46
怎么给你c币

{:10_306:}{:10_247:}{:10_305:}
我也不知道

张悦颖 发表于 2017-7-13 20:56:37

ba21 发表于 2017-7-13 20:55
我也不知道

{:10_306:}我对不起你就是最佳我摁错了
页: [1]
查看完整版本: c语言做管理系统怎么输出html文件