当前位置: 首页 > news >正文

ps企业网站模板免费下载基于拍卖的拍卖网站开发

ps企业网站模板免费下载,基于拍卖的拍卖网站开发,网站备案字号,自助建站平台设计器1 C初识 1.1 常量 C定义常量两种方式 1.#define宏常量#xff1a; #define 常量名 常量值 2.const修饰的变量 const 数据类型 常量名 常量值 2 数据类型 2.1 内存 sizeof( 数据类型 /变量 ) 输出所占内存 2.2 字符串 C数据类型#xff08;整型、浮点型、字符型、字…1 C初识 1.1 常量 C定义常量两种方式 1.#define宏常量 #define 常量名 常量值 2.const修饰的变量 const 数据类型 常量名 常量值 2 数据类型 2.1 内存 sizeof( 数据类型 /变量 ) 输出所占内存 2.2 字符串 C数据类型整型、浮点型、字符型、字符串型、布尔型_c字符型-CSDN博客 #includeiostream #includestring.h using namespace std;int main(){//C风格字符串char str[]Hello world;coutstrendl;//C风格字符串string str2Hello world;coutstr2endl;system(pause);return 0; }3 运算符 4 程序流程结构 4.1 三目运算符 //判断真假?表达式1:表达式2 a b ? a : b4.2 siwch语句 C switch 语句 | 菜鸟教程 (runoob.com) #includeiostream using namespace std; int main(){int a;cina;switch (a){case 1:cout1endl;break;case 2:cout2endl;//break;case 3:cout3endl;break;default:cout0endl;}system(pause);return 0; }当被测试的变量等于 case 中的常量时case 后跟的语句将被执行直到遇到 break 语句为止。case里尽量不用变量 4.3 do…while循环语句 与while的区别在于会先执行一次循环语句再判断循环条件 4.4 goto语句 C goto 语句 | 菜鸟教程 (runoob.com) 5 数组 6 函数 6.1 参数 #includeiostream using namespace std;int d(int a,int b20){return ab; }int main(){int a,b;cinab;coutd(a)endl;coutd(0,b)endl;coutd(a,b)endl; }6.2 函数的分文件编写 [C 函数的分文件编写_c函数的分文件编写-CSDN博客](https://blog.csdn.net/qq_37796444/article/details/107016831#:~:textC%2B%2B 函数的分文件编写 1 创建.h 后缀名的头文件 2 创建.cpp后缀名的源文件,3 在头文件中写函数的声明 4 在源文件中写函数的定义 5、最后就是在main中进行测试就OK了。 同时注意这里也需要加入头文件---- %23incude “swap.h”) 【c语言】无法找到头文件fatal error: .h: No such file or directory_10: fatal error: ot_common.h: no such file or dire_StudentWang_的博客-CSDN博客 7 指针 7.1 定义指针 #includeiostream using namespace std;int main(){//指针定义的语法 数据类型 * 指针变量名:int a 10;int * p;//让指针p记录a的地址p a;//使用指针*p 1000;coutaendl;return 0; }7.2 指针内存 不论是什么数据类型 在32操作系统下占用4个字节空间 在64操作系统下占用8个字节空间 7.3 空指针 用途初始化指针变量 注意空指针指向的内存是不可访问的 int * p NULL; 7.4 野指针 指针变量指向非法的内存空间 int * p (int *)0x1100; //16进制的数 7.5 const修饰指针 1.常量指针const int * p a; 特定指针的指向可以改但是指针指向的值不可以改 *p 20; 错误 p b; 正确 2.指针常量int * const p a; 特点指针的指向不可以改指针指向的值可以改 *p 20; 正确 p b; 错误 3.常量既修饰指针和常量 const int * const p a; 特点指针的指向不可以改指针指向的值也不可以改 7.6 指针和数组 #includeiostream using namespace std;int main(){int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int *p arr; //arr就是数组首地址for(int i1;i10;i){cout*pendl;p;}return 0; }7.7 指针和函数 #includeiostream using namespace std;void swap(int *p1,int *p2){int temp*p1;*p1*p2;*p2temp; }int main(){int a10;int b20;swap(a,b);coutaendl;coutbendl;return 0; }8 结构体 8.1 结构体指针 #includeiostream using namespace std;struct node{int a;int b; };int main(){node s{10,20};node *ps;coutp-b;return 0; }9 通讯录管理系统 标准答案 #includeiostream #includestring using namespace std; #define MAX 1000 //最大人数//联系人结构体 struct Person {string m_Name;int m_Sex; //性别1男 2女int m_Age;string m_Phone;string m_Addr; };//通讯录结构体 struct Addressbooks {struct Person personArray[MAX]; //通讯录中保存的联系人数组int m_Size; //通讯录中人员个数 };//添加联系人 void addPerson(Addressbooks * abs) {//判断联系人是否满了if (abs-m_Size MAX){cout 通讯录已满无法添加 endl;return;}else{string name;cout 请输入姓名 endl;cin name;abs-personArray[abs-m_Size].m_Name name;cout 请输入性别 endl;cout 1 -- 男 endl;cout 2 -- 女 endl;int sex 0;while (true){cin sex;if (sex 1 || sex 2){abs-personArray[abs-m_Size].m_Sex sex;break;}cout 输入有误请重新输入 endl;}cout 请输入年龄 endl;int age 0;cin age;abs-personArray[abs-m_Size].m_Age age;cout 请输入联系电话 endl;string phone ;cin phone;abs-personArray[abs-m_Size].m_Phone phone;cout 请输入家庭住址 endl;string address;cin address;abs-personArray[abs-m_Size].m_Addr address;//更新通讯录人数abs-m_Size;cout 添加成功 endl;system(pause);system(cls);} }//显示联系人 void showPerson(Addressbooks * abs) {if (abs-m_Size 0){cout 暂时没有联系人 endl;}else{for (int i 0; i abs-m_Size; i){cout 姓名 abs-personArray[i].m_Name \t;cout 性别 (abs-personArray[i].m_Sex 1 ? 男 : 女) \t;cout 年龄 abs-personArray[i].m_Age \t;cout 电话 abs-personArray[i].m_Phone \t;cout 住址 abs-personArray[i].m_Addr endl;}}system(pause);system(cls); }//判断是否存在查询的人员存在返回在数组中索引位置不存在返回-1 int isExist(Addressbooks * abs ,string name) {for (int i 0; i abs-m_Size; i){if (abs-personArray[i].m_Name name){return i;}}return -1; }//删除联系人 void deletePerson(Addressbooks * abs) {cout 请输入您要删除的联系人 endl;string name;cin name;int ret isExist(abs, name);if (ret ! -1){for (int i ret; i abs-m_Size; i){abs-personArray[i] abs-personArray[i];}abs-m_Size--;cout 删除成功 endl;}else{cout 查无此人 endl;}system(pause);system(cls); }//查找联系人 void findPerson(Addressbooks * abs) {cout 请输入您要查找的联系人 endl;string name;cin name;int ret isExist(abs, name);if (ret ! -1){cout 姓名 abs-personArray[ret].m_Name \t;cout 性别 abs-personArray[ret].m_Sex \t;cout 年龄 abs-personArray[ret].m_Age \t;cout 电话 abs-personArray[ret].m_Phone \t;cout 住址 abs-personArray[ret].m_Addr endl;}else{cout 查无此人 endl;}system(pause);system(cls);}//修改联系人 void modifyPerson(Addressbooks* abs) {cout 请输入你要修改的联系人 endl;string name;cin name;int ret isExist(abs, name);if (ret ! -1){cout 请输入姓名 endl;string name;cin name;abs-personArray[ret].m_Name name;cout 请输入性别 endl;int sex;while (true){cin sex;if (sex 1 || sex 2){abs-personArray[ret].m_Sex sex;break;}cout 输入有误请重新输入 endl;}cout 请输入年龄 endl;int age;cin age;abs-personArray[ret].m_Age age;cout 请输入联系电话 endl;string phone;cin phone;abs-personArray[ret].m_Phone phone;cout 请输入家庭住址 endl;string address;cin address;abs-personArray[ret].m_Addr address;cout 修改成功 endl;}else{cout 查无此人 endl;}system(pause);system(cls); }//清空联系人 void cleanPerson(Addressbooks * abs) {abs-m_Size 0;cout 通讯录已清空 endl;system(pause);system(cls); }//菜单界面 void showMenu() {cout *************************** endl;cout ***** 1、添加联系人 ***** endl;cout ***** 2、显示联系人 ***** endl;cout ***** 3、删除联系人 ***** endl;cout ***** 4、查找联系人 ***** endl;cout ***** 5、修改联系人 ***** endl;cout ***** 6、清空联系人 ***** endl;cout ***** 0、退出通讯录 ***** endl;cout *************************** endl; }int main() {int select 0;//创建通讯录Addressbooks abs;//初始化通讯录中的人数abs.m_Size 0;while (true){showMenu();cin select;switch (select){case 1: //添加联系人addPerson(abs);break;case 2: //显示联系人showPerson(abs);break;case 3: //删除联系人deletePerson(abs);break;case 4: //查找联系人findPerson(abs);break;case 5: //修改联系人modifyPerson(abs);break;case 6: //清空联系人cleanPerson(abs);break;case 0: //退出通讯录cout 欢迎下次使用 endl;system(pause);return 0;break;default:break;}}system(pause);return 0; }自习代码 #includebits/stdc.h using namespace std; #define MAX 1000 struct node{string name; //姓名int numb; //电话 }; struct Address{struct node people[MAX];int size; };void show(){cout**************************\n;cout***** 1、添加联系人 *****\n;cout***** 2、显示联系人 *****\n;cout***** 3、删除联系人 *****\n;cout***** 4、查找联系人 *****\n;cout***** 5、修改联系人 *****\n;cout***** 6、清空联系人 *****\n;cout***** 0、退出通讯录 *****\n;cout**************************; } int isExist(Address *p,string x){for(int i0;ip-size;i){if(p-people[i].namex)return i;}return -1; } void add(Address *p){cout请输入名字;string s;cins;p-people[p-size].names;cout请输入电话;int x;cinx;p-people[p-size].numbx;p-size; } void display(Address *p){for(int i0;ip-size;i){cout姓名:\np-people[i].name\n;cout电话:\np-people[i].numb\n\n;} } void delect(Address *p){cout请输入想要删除的人的名字\n;string s;cins;int misExist(p,s);if(m-1)cout没有这个人\n;else{for(int im;ip-size;i){p-people[i].namep-people[i1].name;p-people[i].numbp-people[i1].numb;}p-size--;cout删除成功\n;} } int main(){Address abs;abs.size0;int x;while(true){show();cinx;switch(x){case(1):add(abs);break;case(2):display(abs);break;case(3):delect(abs);break;case(0):cout退出成功;return 0;default:break;}system(pause);system(cls);} }C核心编程 1 内存分区模型 1.1 概述 C程序在执行时将内存大方向划分为4个区域 代码区 存放函数体的二进制代码由操作系统进行管理 全局区 存放全局变量和静态变量以及常量 栈区 由编译器自动分配释放, 存放函数的参数值、局部变量等 堆区 由程序员分配和释放若程序员不释放程序结束时由操作系统回收 内存四区的意义 不同区域存放的数据赋予不同的生命周期, 给我们更大的灵活编程。 1.2 new操作符 C 涨知识new和delete知识总结(全面详细)_c delete用法-CSDN博客 C中利用new操作符在堆区开辟数据。堆区开辟的数据由程序员手动开辟手动释放释放利用操作符delete。 new操作符的语法new数据类型 利用new创建的数据会返回该数据对应的类型的指针。 ​ delete释放地址 实例如下所示。 #includeiostream using namespace std;int main(){int *p new int[10];for(int i0;i10;i)p[i]i100;for(int i0;i10;i){coutp[i]endl; cout*pendlendl;}delete[] p;return 0; }2 引用 2.1 基本语法 引用的本质在C中内部实现是一个指针常量 语法数据类型 别名 原名 int b a; 注意1.必须初始化2.引用后就不能更改 #includeiostream using namespace std;void swap(int a,int b){int tempa;ab;btemp; }int main(){int a10;int b20;swap(a,b);coutaendl;coutbendl;return 0; }2.2 引用做函数返回值 #includeiostream using namespace std;int test(){static int a10; //静态变量存放在全局区return a; }int main(){int atest();coutaendl;coutaendl;test()20; //如果函数的返回值是引用可以作为左值coutaendl;coutaendl;return 0; }3 函数提高 3.1 函数默认参数 如果某个位置参数有默认值那么从这个位置往后都必须要有默认值 如果函数声明有默认参数函数实现就不能有默认参数 3.2 占位参数 void func(int a, int){} 3.3 函数重载 函数参数类型不同 或者 个数不同 或者 顺序不同 C const对函数重载的影响-CSDN博客 4 对象特性 4.1 构造函数和析构函数 构造函数 主要作用在于创建对象时为对象的成员属性赋值构造函数由编译器自动调用无须手动调用。 构造函数的语法类名(){} 1. 构造函数没有返回值也不写void2. 函数名称与类名相同3. 构造函数可以有参数因此可以发生重载4. 程序在调用对象时候会自动调用构造无须手动调用而且只会调用一次。析构函数 主要作用在于对象销毁前系统自动调用执行一些清理工作。 析构函数的语法 ~类名(){} 1. 析构函数没有返回值也不写void2. 函数名称与类名相同在名称前加上符号~3. 析构函数不可以有参数因此不可以发生重载4. 程序在对象销毁前会自动调用析构无须手动调用而且只会调用一次。#includeiostream using namespace std; class Person{public:Person(){cout构造函数\n;}~Person(){cout析构函数\n;} }; int main(){Person();return 0; }4.2 构造函数的分类及调用 #includeiostream using namespace std; class Person{public:Person(){cout构造函数\n;}//拷贝构造函数Person(const Person p){agep.age;}~Person(){cout析构函数\n;}private:int age; }; int main(){Person();return 0; }4.3 构造函数的调用规则 默认情况下C编译器至少给一个类添加3个函数 默认构造函数(无参函数体为空)默认析构函数(无参函数体为空)默认拷贝构造函数对属性进行值拷贝。 构造函数的调用规则如下 如果用户定义有参构造函数C不再提供默认无参构造函数但是会提供默认拷贝构造函数如果用户定义拷贝构造函数C不会再提供其他构造函数。 4.4 深拷贝和浅拷贝 浅拷贝 简单的赋值拷贝操作。 深拷贝 在堆区重新申请空间进行拷贝操作。 总结 1.如果属性有在堆区开辟的一定要自己提供拷贝构造函数防止浅拷贝带来的问题 2.析构函数代码用于对在堆区开辟的内存做释放操作。 浅拷贝与深拷贝的区别详解_深拷贝和浅拷贝的区别-CSDN博客 4.5 初始化列表 Person(int a, int b, int c) :m_A(a), m_B(b), m_C© { } 4.6 静态成员 静态成员就是在成员变量和成员函数前加上关键字static称为静态成员。当我们声明类的成员为静态时这意味着无论创建多少个类的对象静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句在创建第一个对象时所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化。 静态成员分为静态成员变量和静态成员函数 静态成员变量 所有对象共享同一份数据在编译阶段分配内存类内声明类外初始化 静态成员函数 所有对象共享同一个函数静态成员函数只能访问静态成员变量 静态成员函数与普通成员函数的区别 静态成员函数没有 this 指针只能访问静态成员包括静态成员变量和静态成员函数普通成员函数有 this 指针可以访问类中的任意成员。 #includeiostream using namespace std;class Person{public:static int a; }; int Person::a100; //类内声明类外初始化int main(){Person p1;coutp1.aendl;Person p2;p2.a200;coutp1.aendl;return 0; }4.7 成员变量和成员函数分开存储 在C中类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上。 4.8 const修饰成员函数 常函数 成员函数后加const后我们称为这个函数为常函数常函数内不可以修改成员属性成员属性声明时加关键字mutable后在常函数中依然可以修改。 常对象 声明对象前加const称该对象为常对象常对象只能调用常函数。 5 友元 C友元看这一篇就够了_c友元_孙 悟 空的博客-CSDN博客 6 运算符重载 #includeiostream using namespace std;class Person{public:friend ostream operator(ostream out,Person p);Person(int a50,int b50):a(a),b(b){}//加号运算符重载Person operator(Person p){Person temp;temp.athis-ap.a;temp.bthis-bp.b;return temp;}private:int a;int b; }; //左移运算符重载 ostream operator(ostream out,Person p){ //简化为coutpcoutp.a\np.b;return out; }int main(){Person p1(10,10);Person p2(20,30);Person p3p1p2;coutp3endl;return 0; }7 继承 7.1 继承同名静态成员处理方式 问题 继承中同名的静态成员在子类对象上如何进行访问 答案 静态成员和非静态成员出现同名处理方式一致。如果访问子类同名成员直接访问即可如果访问父类同名成员需要加作用域。 s.func(); //直接调用的是子类的同名静态成员函数 s.Base::func(); //加父类作用域调用的是父类的同名静态成员函数7.2 多继承语法 多继承即一个子类可以有多个父类它继承了多个父类的特性。 C允许一个类继承多个类但多继承可能会引发父类中有同名成员出现需要加作用域区分。在C实际开发中不建议用多继承。 多继承的语法class 子类 继承方式 父类1 继承方式 父类2... #includeiostream using namespace std;class Base1{public:int a8; }; class Base2{public:int a16; }; class Son:public Base1,public Base2{};int main(){Son s;coutsizeof(s)endl;//当父类出现同名成员需要加作用域couts.Base1::a; }总结 多继承中如果父类中出现了同名情况子类使用时候要加作用域。 7.3 虚继承 #includeiostream using namespace std;class Animal{ //虚基类public:int a; }; class Sheep:virtual public Animal{};class Tuo:virtual public Animal{};class YangTuo:public Sheep,public Tuo{};int main(){YangTuo yt;yt.Sheep::a10;yt.Tuo::a20;coutyt.Sheep::aendl;coutyt.Tuo::aendl;coutyt.aendl;return 0; }Sheep中的a 28 Tuo中的a 28 YangTuo中的a 28 8 多态 8.1 基本概念 多态是C面向对象三大特性之一。多态分为两类 静态多态函数重载和运算符重载属于静态多态复用函数名动态多态派生类和虚函数实现运行时多态。 多态是C面向对象三大特性之一。多态分为两类 静态多态函数重载和运算符重载属于静态多态复用函数名动态多态派生类和虚函数实现运行时多态。 #includeiostream using namespace std;class Animal{public://虚函数函数前面加virtual关键字virtual void speak(){cout动物在说话endl;} }; class Cat:public Animal{public:void speak(){cout小猫在说话endl;} };int main(){Cat cat;Animal animalcat;animal.speak();return 0; }总结 多态满足条件1有继承关系2子类重写父类中的虚函数重写指函数返回值类型、函数名、参数列表完全一致。 多态使用条件父类指针或引用指向子类对象。 8.2 纯虚函数和抽象类 在多态中通常父类中虚函数的实现是毫无意义的主要都是调用子类重写的内容因此可以将虚函数改为纯虚函数。 纯虚函数的语法virtual 返回值类型 函数名 参数列表 0 ; 当类中有了纯虚函数这个类也称为抽象类。 抽象类的特点1. 无法实例化对象 ​ 2. 子类必须重写抽象类中的纯虚函数否则也属于抽象类。 #includeiostream using namespace std;class Animal{public:virtual void speak()0; }; class Cat:public Animal{public:void speak(){cout小猫在说话endl;} }; int main(){Cat cat;Animal animalcat;//Animal b;报错animal.speak();return 0; }8.3 多态案例 案例描述 制作饮品的大致流程为煮水→冲泡→倒入杯中→加入辅料。利用多态技术实现本案例提供抽象制作饮品基类提供子类制作咖啡和茶叶。 #includeiostream using namespace std;//制作饮品 class AbstractDrinking { public:virtual void Boil() 0; //煮水virtual void Brew() 0; //冲泡virtual void PourInCup() 0; //倒入杯中virtual void PutSomething() 0; //加入辅料void makeDrink() //制作饮品{Boil();Brew();PourInCup();PutSomething();} };//冲咖啡 class Coffee :public AbstractDrinking { public:virtual void Boil() //煮水{cout 煮纯净水 endl;}virtual void Brew() //冲泡{cout 冲泡咖啡 endl;}virtual void PourInCup() //倒入杯中{cout 倒入杯中 endl;}virtual void PutSomething() //加入辅料{cout 加入糖和牛奶 endl;} };//冲茶叶 class Tea :public AbstractDrinking { public:virtual void Boil() //煮水{cout 煮纯净水 endl;}virtual void Brew() //冲泡{cout 冲泡茶叶 endl;}virtual void PourInCup() //倒入杯中{cout 倒入杯中 endl;}virtual void PutSomething() //加入辅料{cout 加入枸杞 endl;} };void doWork(AbstractDrinking *abs) //AbstractDrinking *abs new Coffee; {abs-makeDrink();delete abs; //释放堆区内存 }void test01() {//冲咖啡cout 开始冲咖啡... endl;doWork(new Coffee);cout ---------------------- endl;//冲茶叶cout 开始冲茶叶... endl;doWork(new Tea);}int main() {test01();system(pause);return 0; }8.4 虚析构和纯虚析构 多态使用时如果子类中有属性开辟到堆区那么父类指针在释放时无法调用到子类的析构代码。   解决方式将父类中的析构函数改为虚析构或者纯虚析构。 虚析构和纯虚析构的共性1. 可以解决父类指针无法释放子类对象的问题 2. 都需要有具体的函数实现。虚析构和纯虚析构的区别如果是纯虚析构该类属于抽象类无法实例化对象。 虚析构的语法virtual ~类名(){} 纯虚析构的语法类内→virtual ~类名() 0;           类外→ 类名::~类名(){} #includeiostream using namespace std;class Animal{public:virtual void speak()0;virtual ~Animal(){coutANIMALendl;} }; class Cat:public Animal{public:Cat(string a){cout构造函数endl;namenew string(a);}void speak(){cout*name小猫在说话endl;}~Cat(){if(name!NULL){cout析构函数调用endl;delete name;nameNULL;}}string *name; };int main(){Animal *animalnew Cat(Tom);animal-speak();delete animal;return 0; }总结 1. 虚析构或纯虚析构就是用来解决通过父类指针释放子类对象的问题 如果子类中没有堆区数据可以不写虚析构或纯虚析构 拥有纯虚析构函数的类也属于抽象类无法实例化对象。 9 文件操作 9.1 文本文件 数据类型描述ofstream该数据类型表示输出文件流用于创建文件并向文件写入信息。ifstream该数据类型表示输入文件流用于从文件读取信息。fstream该数据类型通常表示文件流且同时具有 ofstream 和 ifstream 两种功能这意味着它可以创建文件向文件写入信息从文件读取信息。 程序运行时产生的数据都属于临时数据程序一旦运行结束都会被释放通过文件可以将数据持久化。 C中对文件操作需要包含头文件 ;。 文件类型分为两种1. 文本文件 文件以文本的ASCII码形式存储在计算机中 2. 二进制文件文件以文本的二进制形式存储在计算机中用户一般不能直接读懂它们。操作文件的三大类 1. ofstream写操作 2. ifstream 读操作am 读写操作1.包含头文件 ​ #include 2.创建流对象 ​ ofstream.ofs; 3.打开文件 ​ ofs.open(“文件路径”,打开方式); 4.写数据 ​ ofs“写入的数据”; 5.关闭文件 ​ ofs.close();
http://www.yingshimen.cn/news/95950/

相关文章:

  • 网站运营费用360免费wifi创建失败怎么回事
  • 检察门户网站建设情况WordPress破解版主题
  • 文字直播网站怎么做的佛山网站建设业务员
  • 湘潭做网站 i磐石网络设计精美的网站
  • 百度如何给网站做评价网站数据查询
  • 男女直接做性视频网站辽宁建设工程信息网诚信备案库
  • 网站ueo如何上传网站
  • wordpress 瀑布流分页wordpress 文章seo
  • 北京移动端网站建设秦皇岛房管局官网网上查询
  • 瑞安网站开发新闻html网页设计代码范文
  • 电子商务网站建设与实践考试深圳市无限空间工业设计有限公司
  • 已备案网站更换域名html5单页面网站建设
  • 鼓楼机关建设网站wordpress网站定时更新没有发布
  • 网站建设的设计思路坪地网站建设如何
  • 良精网站管理系统jquery+html5 网站后台管理页面模板
  • 苏州做网站便宜的公司哪家好织梦网站模板官网
  • 有什么图片做视频的网站吗asp网站后台制作
  • 17网站一起做网店怎么样如何修改wordpress首页
  • 免费的网站服务器网站建立计划书
  • 手机端网站变成wap无代码网站开发平台
  • 网站建设先进技术静态网页设计源代码
  • 泉州握旗公司网站建设专业电商网站建设多少钱
  • 网站建设费用账务处理西地那非片能延时多久每次吃多少
  • 做网站要多少带宽做网站图片如何不转下一行
  • 外汇跟单网站开发外贸网站源码 php
  • 有做微信婚介网站的吗推广引流违法吗
  • 单页网站 产品放哪长沙做网站公司 上联网络
  • 国外网站 图片凡科网门店通
  • 撤销网站备案申请书cdn wordpress
  • 网站内容页优化山东封城最新消息2023年