鱼C论坛

 找回密码
 立即注册
查看: 2501|回复: 11

[已解决]c语言做管理系统怎么输出html文件

[复制链接]
发表于 2017-7-13 10:47:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*
西南石油大学计算机科学学院
课程:程序设计综合实践
教师:周永  梁宗文
编程者:张悦颖  张若曦
编程日期: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[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total

//定义商品信息结构体
struct commdity
{
    int num;/*编号*/
    char name[15];/*商品名称*/
    double price;/*单价*/
    double count;/*数量*/
    double total;/*总金额*/
};

struct commdity comm[50];/*定义结构体数组*/

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;
                case  8:
                        if (i == 0)
                                printf("还没有可以导出的数据!\n");
            exportToHtmlFile();
                        break;

        default:break;
        }
        getch();
        menu();  
                //执行完功能再次显示菜单界面
        scanf("%d",&n);
    }
}



//录入商品信息
void in()
{
    int i,m=0;/*m是记录的条数*/
    char ch[2];
    FILE *fp;
        //定义文件指针
    if((fp=fopen("data","ab+"))==NULL)
                //打开指定文件
    {
        printf("不能打开文件!\n");
        return;
    }
    while(!feof(fp))
    {
        if(fread(&comm[m] ,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[i] ,LEN,1,fp);
        //向指定的磁盘文件写入信息
    printf("是否输入?(y/n):");
    scanf("%s",ch);
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    //判断是否要录入新信息
    {
        printf("编号:");
        scanf("%d",&comm[m].num);/*输入学生学号*/
        for(i=0;i<m;i++)
            if(comm[i].num == comm[m].num)
            {
                printf("该记录已经存在,按任意键继续!");
                getch();
                fclose(fp);
                return;
            }
            printf("商品名:");
            scanf("%s",comm[m].name);   /*输入学生姓名*/
            printf("单价:");
            scanf("%lf",&comm[m].price);   /*输入商品单价*/
            printf("数量:");
            scanf("%lf",&comm[m].count);   /*输入商品数量*/
            comm[m].total=comm[m].price * comm[m].count;  /*计算出总金额*/
            if(fwrite(&comm[m],LEN,1,fp)!=1)  
                        //将新录入的信息写入指定的磁盘文件
            {
                printf("不能保存!");
                getch();
            }
            else
            {
                printf("%s 已经保存!\n",comm[m].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[m] ,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[m] ,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[i].total < comm[j].total)
                {
                    t=comm[i];
                    comm[i]=comm[j];
                    comm[j]=t;
                }
                if((fp=fopen("data","wb"))==NULL)
                {
                    printf("不能打开\n");
                    return;
                }
                for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
                    if(fwrite(&comm[i] ,LEN,1,fp)!=1)
                    {
                        printf("%s 不能保存!\n");
                        getch();
                    }
                    fclose(fp);
                    printf("保存成功\n");
}



//自定义删除函数
void del()
{
    FILE *fp;
    int snum,i,j,m=0;
    char ch[2];
    if((fp=fopen("data","ab+"))==NULL)
    {
        printf("不能打开文件\n");
        return;
    }
    while(!feof(fp))  
        if(fread(&comm[m],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[i].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[j] = comm[j+1];/*将后一个记录移到前一个记录的位置*/
                m--;/*记录的总个数减1*/
                printf("成功删除!\n");
            }
            if((fp=fopen("data","wb"))==NULL)
            {
                printf("不能打开!\n");
                return;
            }
            for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
                if(fwrite(&comm[j] ,LEN,1,fp)!=1)
                {
                    printf("不能保存!\n");
                    getch();
                }
                fclose(fp);
               
}






//自定义查找函数
void search()
{
    FILE *fp;
    int snum,i,m=0;
    char ch[2];
    if((fp=fopen("data","ab+"))==NULL)
    {
        printf("不能打开文件\n");
        return;
    }
    while(!feof(fp))
        if(fread(&comm[m],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[i].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[2];

    if((fp=fopen("data","ab+"))==NULL)
    {
        printf("不能打开文件!\n");
        return;
    }
    while(!feof(fp))  
        if(fread(&comm[m],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[i].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[i].name);/*输入名字*/
                    printf("\n单价:");
                    scanf("%lf",&comm[i].price);/*输入商品单价*/
                    printf("\n数量:");
                    scanf("%lf",&comm[i].count);/*输入商品数量*/
                    comm[i].total = comm[i].price  * comm[i].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[j] ,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[m],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[i].num)
                                break;
                        for(j=m-1;j>i;j--)
                                comm[j+1] = comm[j];
                        //从最后一条记录开始均向后移一位
                        printf("现在输入新的信息.\n");
                        printf("编号:");
                        scanf("%d",&comm[i+1].num);
                        for(k=0;k<m;k++)
                                if(comm[k].num==comm[i+1].num && k!=i+1)
                                {
                                        printf("已经存在该编号,按任意键继续!");
                                        getch();
                                        fclose(fp);
                                        return;
                                }
                       
                                printf("商品名:");
                                scanf("%s",comm[i+1].name);
                                printf("单价:");
                                scanf("%lf",&comm[i+1].price);
                                printf("数量:");
                                scanf("%lf",&comm[i+1].count);
                            comm[i+1].total = comm[i+1].price * comm[i+1].count;
                                if((fp=fopen("data","wb"))==NULL)
                                {
                                        printf("不能打开文件\n");
                                        return;
                                }
                                for(k=0;k<=m;k++)
                                        if(fwrite(&comm[k] ,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[m],LEN,1,fp)==1)
            m++;/*统计记录个数即记录个数*/
        if(m==0)
        {
            printf("没有记录!\n");
            fclose(fp);
            return;
        }
        printf("一共有 %d 条记录!\n",m);/*将统计的个数输出*/
        fclose(fp);
}




//打印网页

void   exportToHtmlFile()
{
        struct  commdity;
        FILE  *fp;
        int  iCounter=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[i].num);
        fprintf(fp,"\t<td width=30%%>%s</td>\n",    comm[i].name);
        fprintf(fp,"\t<td width=15%%>%.1f</td>\n",  comm[i].price);
        fprintf(fp,"\t<td width=15%%>%.1f</td>\n",  comm[i].count);
        fprintf(fp,"\t<td width=15%%>%.1f</td>\n",  comm[i].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("                 ◥████████☆ C  P  P ☆█████◤\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 14:52:03
只是需要输出html文件的话,你可以按照html的格式进行文件写入(就是文件操作)。
如果不是输出html文本,而是一个webserver的哈,首先不建议使用c,c++这类语言;如果真需要使用这种语言的话,可以先编程一个简单的webserver(遵循http协议),然后将用户需求的信息,按照协议write给用户。

我自己做的程序我已经输入三个数据了可是就是在html页面文件中不存在数据

我自己做的程序我已经输入三个数据了可是就是在html页面文件中不存在数据
as.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-13 10:47:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-13 11:36:46 | 显示全部楼层
本帖最后由 ba21 于 2017-7-13 11:58 编辑

2017-07-13_113515.png
 /*
西南石油大学计算机科学学院
课程:程序设计综合实践
教师:周永  梁宗文
编程者:张悦颖  张若曦
编程日期: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[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total

//定义商品信息结构体
struct commdity
{ 
    int num;/*编号*/
    char name[15];/*商品名称*/
    double price;/*单价*/
    double count;/*数量*/
    double total;/*总金额*/
};

struct commdity comm[50];/*定义结构体数组*/

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[2];
    FILE *fp;
        //定义文件指针
    if((fp=fopen("data","ab+"))==NULL)
                //打开指定文件
    { 
        printf("不能打开文件!\n");
        return;
    }
    while(!feof(fp)) 
    { 
        if(fread(&comm[m] ,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[i] ,LEN,1,fp);
        //向指定的磁盘文件写入信息
    printf("是否输入?(y/n):");
    scanf("%s",ch);
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    //判断是否要录入新信息
    {
        printf("编号:");
        scanf("%d",&comm[m].num);/*输入学生学号*/
        for(i=0;i<m;i++)
            if(comm[i].num == comm[m].num)
            {
                printf("该记录已经存在,按任意键继续!");
                getch();
                fclose(fp);
                return;
            }
            printf("商品名:");
            scanf("%s",comm[m].name);   /*输入学生姓名*/
            printf("单价:");
            scanf("%lf",&comm[m].price);   /*输入商品单价*/
            printf("数量:");
            scanf("%lf",&comm[m].count);   /*输入商品数量*/
            comm[m].total=comm[m].price * comm[m].count;  /*计算出总金额*/
            if(fwrite(&comm[m],LEN,1,fp)!=1)  
                        //将新录入的信息写入指定的磁盘文件
            {
                printf("不能保存!"); 
                getch(); 
            }
            else
            { 
                printf("%s 已经保存!\n",comm[m].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[m] ,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[m] ,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[i].total < comm[j].total)
                { 
                    t=comm[i];
                    comm[i]=comm[j];
                    comm[j]=t;
                }
                if((fp=fopen("data","wb"))==NULL)
                { 
                    printf("不能打开\n");
                    return;
                }
                for(i=0;i<m;i++)/*将重新排好序的内容重新写入指定的磁盘文件中*/
                    if(fwrite(&comm[i] ,LEN,1,fp)!=1)
                    { 
                        printf("%s 不能保存!\n"); 
                        getch();
                    }
                    fclose(fp);
                    printf("保存成功\n");
}



//自定义删除函数
void del() 
{
    FILE *fp;
    int snum,i,j,m=0;
    char ch[2];
    if((fp=fopen("data","ab+"))==NULL)
    { 
        printf("不能打开文件\n");
        return;
    }
    while(!feof(fp))  
        if(fread(&comm[m],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[i].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[j] = comm[j+1];/*将后一个记录移到前一个记录的位置*/
                m--;/*记录的总个数减1*/
                printf("成功删除!\n");
            }
            if((fp=fopen("data","wb"))==NULL)
            { 
                printf("不能打开!\n");
                return;
            }
            for(j=0;j<m;j++)/*将更改后的记录重新写入指定的磁盘文件中*/
                if(fwrite(&comm[j] ,LEN,1,fp)!=1)
                { 
                    printf("不能保存!\n");
                    getch();
                }
                fclose(fp);
                
}






//自定义查找函数
void search() 
{ 
    FILE *fp;
    int snum,i,m=0;
    char ch[2];
    if((fp=fopen("data","ab+"))==NULL)
    { 
        printf("不能打开文件\n");
        return;
    }
    while(!feof(fp)) 
        if(fread(&comm[m],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[i].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[2];

    if((fp=fopen("data","ab+"))==NULL)
    { 
        printf("不能打开文件!\n");
        return;
    }
    while(!feof(fp))  
        if(fread(&comm[m],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[i].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[i].name);/*输入名字*/
                    printf("\n单价:");
                    scanf("%lf",&comm[i].price);/*输入商品单价*/
                    printf("\n数量:");
                    scanf("%lf",&comm[i].count);/*输入商品数量*/
                    comm[i].total = comm[i].price  * comm[i].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[j] ,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[m],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[i].num)
                                break;
                        for(j=m-1;j>i;j--)
                                comm[j+1] = comm[j];
                        //从最后一条记录开始均向后移一位
                        printf("现在输入新的信息.\n");
                        printf("编号:");
                        scanf("%d",&comm[i+1].num);
                        for(k=0;k<m;k++)
                                if(comm[k].num==comm[i+1].num && k!=i+1)
                                {
                                        printf("已经存在该编号,按任意键继续!");
                                        getch();
                                        fclose(fp);
                                        return;
                                }
                        
                                printf("商品名:");
                                scanf("%s",comm[i+1].name);
                                printf("单价:");
                                scanf("%lf",&comm[i+1].price);
                                printf("数量:");
                                scanf("%lf",&comm[i+1].count);
                            comm[i+1].total = comm[i+1].price * comm[i+1].count;
                                if((fp=fopen("data","wb"))==NULL)
                                { 
                                        printf("不能打开文件\n");
                                        return;
                                }
                                for(k=0;k<=m;k++)
                                        if(fwrite(&comm[k] ,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[m],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;
        int  iCounter=0,i;  //建议最好内存中,有一个变量,一直维护二进制文件中的记录数。免得每次统计。

                //读取数据
                fp=fopen("data","ab+"); //打开数据文件
                while(!feof(fp))
                {
                 if(fread(&comm[iCounter] ,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[i].num);
        fprintf(fh,"\t<td width=30%%>%-15s</td>\n", comm[i].name);
        fprintf(fh,"\t<td width=15%%>%-12.1lf</td>\n", comm[i].price);
        fprintf(fh,"\t<td width=15%%>%-12.1lf</td>\n", comm[i].count);
        fprintf(fh,"\t<td width=15%%>%-12.1lf</td>\n", comm[i].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("                 ◥████████☆ C  P  P ☆█████◤\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");
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-7-13 14:52:03 | 显示全部楼层    本楼为最佳答案   
只是需要输出html文件的话,你可以按照html的格式进行文件写入(就是文件操作)。
如果不是输出html文本,而是一个webserver的哈,首先不建议使用c,c++这类语言;如果真需要使用这种语言的话,可以先编程一个简单的webserver(遵循http协议),然后将用户需求的信息,按照协议write给用户。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 17:29:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 17:31:28 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-13 20:01:33 | 显示全部楼层

主要是C币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-13 20:02:35 | 显示全部楼层

什么我不是最佳。。人家几行字说写文件,我连代码都给你搞上去了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 20:43:30 | 显示全部楼层
ba21 发表于 2017-7-13 20:02
什么我不是最佳。。人家几行字说写文件,我连代码都给你搞上去了。

不是,我看错了我以为我嗯的你是最佳,,,我错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-13 20:46:04 | 显示全部楼层

怎么给你c币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-13 20:55:00 | 显示全部楼层


我也不知道

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +2 收起 理由
無聊 + 5 + 5 + 2 替楼主给C币, 虽然少了点

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-13 20:56:37 | 显示全部楼层

我对不起  你就是最佳  我摁错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表