zoukankan      html  css  js  c++  java
  • 个人作业三-ATM管理系统

    这个作业属于哪个课程 软件工程
    这个作业要求在哪里 ATM管理系统
    这个作业的目标 了解ATM管理系统的相关功能
    学号 3180701210
    一.题目要求

    编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

    (1)开户,销户

    (2)查询账户余额

    (3)存款

    (4)取款

    (5)转账(一个账户转到另一个账户)等...

    允许网上查询参考,但请注意不要直接抄袭,可以理解看懂别人的代码,再自己编写

    二.代码提交
    头文件

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #pragma warning(disable:4996)/*将4966警报置为失效*/
    #define CNUM 100
    

    定义结构体

    struct Customer/*账户的结构体*/
    {
    	char account[16];/*用户账号*/
    	char name[9];/*用户姓名*/
    	char password[7];/*账户密码*/
    	char IDnumber[19];/*用户身份证号*/
    	float yue;/*账户余额*/
    };
    typedef struct 
    {
    	char account[16];/*交易的账号*/
    	char Ttime[50];/*交易时间*/
    	char type[5];/*交易类型*/
    	float Tmoney;/*交易金额*/
    	float Tyue;/*交易后的余额*/
    } Transaction;/*交易记录的结构体*/
    Transaction T[1000];/*定义交易记录的结构体数组,可以保存1000条交易记录*/
    struct Customer C[100];/*定义账户的结构体数组,可以注册100个账户*/
    int Cnum = 0;/*账户序号*/
    int Tnum = 0; /*交易序号*/
    int Dxiabiao = 0;/*当前登录的账户下标*/
    

    各个函数声明

    int menu();        /*声明主菜单函数*/
    void help();     /*声明帮助函数*/
    void zhuce();      /*声明注册函数*/
    void denglu();     /*声明登录函数*/
    void load();  /*声明装载数据函数*/
    void save();     /*声明保存数据函数*/
    int denglu_menu(); /*声明登录菜单函数*/
    void credit();    /*声明存款函数*/
    void debit();     /*声明取款函数*/
    void quary();     /*声明查询函数*/
    void print();   /*声明打印函数*/
    void updatepassword(); /*声明修改密码函数*/
    int quary_menu();      /*声明查询菜单函数*/
    void quary_yue();      /*声明查询余额函数*/
    void quary_mingxi();   /*声明查询明细函数*/
    void quary_credit();  /*声明查询存款函数*/
    void quary_debit();   /*声明查询取款函数*/
    

    主函数

    void main()
    {
    	system("color 3F");/*设置背景颜色为蓝色*/
    	printf("
    	****************************************************
    ");
    	printf("
    	*****               欢迎使用ATM终端机!         *****
    ");
    	printf("
    	****************************************************
    ");
    	system("pause");/*暂停功能*/
    	system("cls");/*清屏*/
    	for (;;)/*空循环语句*/
    	{
    		switch (menu()) /*主菜单选择判断*/
    		{
    		case 1:zhuce(); break;/*调用注册函数*/
    		case 2:denglu(); break;/*调用登录函数*/
    		case 3:load(); break;/*调用加载数据的函数*/
    		case 4:save(); break;/*调用保存数据的函数*/
    		case 5:help(); break;/*调用帮助函数*/
    		case 0:printf("		欢迎使用ATM终端机管理系统。谢谢!
    "); 
    			system("pause");
    			exit(0);/*结束程序*/
    		}
    	}
    }
    

    主菜单函数

    int menu() 
    {
    	char c;
    	do
    	{
    		system("cls"); /*每次选择运行前清屏*/
    		printf("
    
    
    		**************************
    ");
    		printf("		**          主菜单      **
    "); /*主菜单选择*/
    		printf("		**************************
    ");
    		printf("		--------------------------
    ");
    		printf("		**        1. 注册       **
    ");
    		printf("		**        2. 登录       **
    ");
    		printf("		**        3. 加载数据   **
    ");
    		printf("		**        4. 保存数据   **
    ");
    		printf("		**        5. 系统帮助   **
    ");
    		printf("		**        0. 退出       **
    ");
    		printf("		--------------------------
    ");
    		printf("		**************************
    ");
    		printf("		请作出选择(0-5):");
    		c = getchar(); /*读入选择*/
    	} while (c<'0' || c>'5');
    	return(c - '0'); /*c变为空后返回重新选择*/
    

    帮助函数

    void help()
    {
    	system("cls");
    	printf("
    		******************************
    ");
    	printf("
    		*   欢迎使用ATM机帮助功能    *
    ");
    	printf("
    		* 1.如有记录,先用加载功能   *
    ");
    	printf("
    		* 2.注册      *
    ");
    	printf("
    		* 3.登录后可选择功能存款取 *
    ");
    	printf("
    		* 4.登录后可查询账户余额     *
    ");
    	printf("
    		* 注:一切操作切勿忘记保存   *
    ");
    	printf("
    		******************************
    ");
    	system("pause");
    }
    

    注册函数

    void zhuce()   
    {
    	int baiwei, shiwei, gewei, len;/*定义账号的后三位*/
    	char password2[7];/*注册时第二次输入的密码*/
    	int  j = 0;
    	strcpy(C[Cnum].account, "123456543210");/*复制账号的前12位*/
    	baiwei = Cnum / 100;
    	shiwei = Cnum / 10 % 10;
    	gewei = Cnum % 10;
    	C[Cnum].account[12] = baiwei + '0';
    	C[Cnum].account[13] = shiwei + '0';
    	C[Cnum].account[14] = gewei + '0';
    	C[Cnum].account[15] = '';
    	system("cls");/*运行前清屏*/
    	printf("
    
    
    		注册————ZHUCE
    
    
    ");
    	printf("		请输入姓名:");
    	scanf("%s", C[Cnum].name);
    	do
    	{
    		printf("		请输入6位数密码:");
    		scanf("%s", C[Cnum].password);
    		len = strlen(C[Cnum].password);
    		if (len != 6)/*判断密码是否为6位*/
    		{
    			printf("		您的密码不是6位数!
    ");
    			system("pause");
    			return;
    		}
    		//此处用字符串长度函数来判断密码的位数
    		printf("		请再次输入密码:");
    		scanf("%s", password2);
    		if (strcmp(C[Cnum].password, password2) != 0)/*判断两次密码输入是否相同*/
    		{
    			j++;
    			printf("
    		您的密码输入错误!您还有%d次机会输入密码!
    ", 3 - j);
    		}
    		if (j == 3)/*密码输入错误不得超过三次*/
    		{
    			system("pause");
    			return;
    		}
    	} while (strcmp(C[Cnum].password, password2) != 0);
    	do
    	{
    		printf("		请输入身份证号:");
    		scanf("%s", C[Cnum].IDnumber);
    		len = strlen(C[Cnum].IDnumber);
    		if (len != 18 && len != 15)/*判断身份证号位数是否为15位或18 位*/
    			printf("		身份证号错误!请输入15位或18位身份证号!
    ");
    	} while (len != 18 && len != 15);
    	printf("
    		请输入存入金额:");
    	scanf("%f", &C[Cnum].yue);
    	if ((int)C[Cnum].yue % 50 != 0)/*存款金额必须为50的整数倍*/
    	{
    		printf("		本机只接受50元或100元面值的存款!
    ");
    		system("pause");
    		return;
    	}
    	strcpy(T[Tnum].account, C[Cnum].account);/**/
    	strcpy(T[Tnum].type, "存储");/*复制交易类型*/
    	T[Tnum].Tmoney = C[Cnum].yue;/*第一次交易的账户余额值赋给交易经额的值*/
    	T[Tnum].Tyue = C[Dxiabiao].yue;/*第一次交易的账户余额值赋给交易余额的值*/
    	printf("
    		开户成功!
    ");
    	system("pause");/*暂停功能*/
    	printf("
    
    账号  		交易类型	交易金额	余额
    ");/*输出账户第一次交易的数据清单*/
    	printf("%s", C[Cnum].account);
    	printf("  %s", T[Tnum].type);
    	printf("		%.2f", C[Cnum].yue);
    	printf("   	%.2f", C[Cnum].yue);
    	printf("
    ");
    	Cnum++;/*账户序号加一*/
    	Tnum++;/*交易序号加一*/
    	Dxiabiao++;
    	system("pause");/*暂停*/
    }
    

    登录函数

    void denglu()
     { 
    	char account[16], password[7];/*登录时输入的账号和密码*/
    	int i = 0, j = 0;
    	system("cls");/*清屏*/
    	printf("
    
    
    		登录————DENGLU
    
    
    ");/*进入登录得功能界面*/
    	printf("		输入账号:");
    	scanf("%s", account);/*输入账号*/
    	for (i = 0; i<Cnum; i++)/*在已注册的账号中依次寻找该账号*/
    		if (strcmp(account, C[i].account) == 0)
    		{
    			Dxiabiao = i;/*若找到,则跳出循环*/
    			break;
    		}
    	if (i == Cnum)/*注册的账号中没输入的账号*/
    	{
    		printf("
    		当前账号不存在!
    ");
    		system("pause");
    		return;
    	}
    	do
    	{
    		printf("
    		输入密码:");
    		scanf("%s", password);
    		if (strcmp(password, C[i].password) != 0)
    		{
    			j++;
    			printf("		您的密码输入错误!您还有%d次机会输入密码!
    
    ", 3 - j);
    		}
    		if (j == 3)/*密码输入错误不得超过三次*/
    		{
    			printf("
    		此卡已被锁定,请到工作人员处解锁。
    ");
    			system("pause");
    			return;
    		}		
    	} while (strcmp(password, C[i].password) != 0);
    	for (;;)/*空循环语句*/
    	{
    		switch (denglu_menu()) /***登陆界面选择判断***/
    		{
    		case 1:credit();break;/*调用存款函数*/			
    		case 2:debit();break;/*调用取款函数*/		
    		case 3:quary();break;/*调用查询函数*/		
    		case 4:updatepassword();break;/*调用修改密码函数*/
    		case 5:print(); break;  /*调用打印函数*/
    		case 0:return;/*返回上一级菜单界面*/	
    		}
    	}
    }
    

    加载数据函数

    void load()  
    {
    	FILE *fp;/*定义文件指针*/
    	int i;
    	char Fname[20];/*定义输入的文件名*/
    	printf("		请输入打开的文件名(文件名.txt):");
    	scanf("%s", Fname);/*输入要读入数据的文件名*/
    	if ((fp = fopen(Fname, "r")) == NULL)/*找不到输入的文件名*/
    	{
    		printf("		无法打开该文件!");
    		system("pause");
    		return;
    	}
    	fscanf(fp, "%d
    ", &Cnum);
    	fscanf(fp, "账号  		姓名	密码	身份证号  		余额
    ");
    	for (i = 0; i<Cnum; i++)/*依次从文件读入注册账户的信息*/
    	{
    		fscanf(fp, "%16s %9s %7s %19s %12f", 
    			C[i].account,	C[i].name, C[i].password,C[i].IDnumber, &C[i].yue);
    		fscanf(fp, "
    ");
    	}
    	fscanf(fp, "%d
    ", &Tnum);
    	fscanf(fp, "账号  		交易类型	交易金额	交易余额
    ");
    	for (i = 0; i<Tnum; i++)/*依次从文件读入交易记录的信息*/
    	{
    		fscanf(fp, "%16s ", T[i].account);
    		fscanf(fp, "%5s	%12f	%12f", 
    			T[i].type,&T[i].Tmoney, &T[i].Tyue);
    		fgets(T[i].account, 16, fp);
    		fscanf(fp, "
    ");
    	}
    	fclose(fp);/*关闭文件*/
    	printf("		读入成功!
    
    ");
    	system("pause");
    }
    

    保存数据函数

    void save()    
    {
    	FILE *fp;/*文件指针*/
    	int i;
    	char Fname[13];
    	printf("		请输入文件名(输入格式为:文件名.txt):");
    	scanf("%s", Fname);/*输入要保存的文件名*/
    	if ((fp = fopen(Fname, "w")) == NULL)
    	{
    		printf("
    		无法打开文件!
    ");
    		system("pause");
    		return;
    	}
    	fprintf(fp, "%d
    ", Cnum);
    	fprintf(fp, "账号  		姓名	密码 	身份证号  		余额
    ");
    	for (i = 0; i<Cnum; i++)/*把账户信息依次输出到指定文件*/
    		fprintf(fp, "%-16s%-9s%-7s%-19s%-12.2f
    ", 
    			C[i].account,C[i].name, C[i].password,C[i].IDnumber, C[i].yue);
    	fprintf(fp, "%d
    ", Tnum);
    	fprintf(fp, "账号  		交易类型	交易金额 		交易余额 
    ");
    	for (i = 0; i<Tnum; i++)/*把交易记录的信息依次输出到指定文件*/
    		fprintf(fp, "%-16s  %-5s 	%-12.2f 	%-12.2f 
    ",
    			T[i].account, T[i].type, T[i].Tmoney, T[i].Tyue);
    	fclose(fp);/*关闭文件*/
    	printf("
    		保存成功!
    ");
    	system("pause");
    }
    

    登录菜单函数

    int denglu_menu()
    {
    	char c;
    	do
    	{
    		system("cls"); /*每次选择运行前清屏*/
    		printf("
    
    
    		*********欢迎进入    登录界面!*********
    
    "); /*登录界面菜单选择*/
    		printf("		 * 1. 存款 
    ");
    		printf("		 * 2. 取款 
    ");
    		printf("		 * 3. 查询  
    ");
    		printf("		 * 4. 修改密码  
    ");
    		printf("		 * 5. 打印票据  
    ");
    		printf("		 * 0. 返回 
    ");
    		printf("		*****************************************
    ");
    		printf("		请作出选择(0-5):");
    		c = getchar(); /*读入选择*/
    	} while (c<'0' || c>'5');
    	return(c - '0'); /*c变为空后返回重新选择*/
    }
    

    打印函数

    void print()
    {
    	FILE *file;
    	int i;
    	if ((file = fopen("票据.txt", "w")) == NULL)
    	{
    		printf("		无法打开该文件!");
    		system("pause");
    		return;
    	}
    	fprintf(file, "**********************************
    ");
    	for (i = 0; i < Tnum; i++)
    		if (strcmp(T[i].account, C[Dxiabiao].account) == 0)
    		{
    			fprintf(file, "** 交易类型:");
    			fprintf(file, " %s 
    ", T[i].type);
    			fprintf(file, "** 交易金额:");
    			fprintf(file, " %.2f 
    ", T[i].Tmoney);
    			fprintf(file, "** 交易余额:");
    			fprintf(file, " %.2f 
    ", T[i].Tyue);
    			fprintf(file, "** 您的账号:");
    			fprintf(file, " %s 
    ", T[i].account);
    		}
    	fprintf(file, "**********************************
    ");
    	fclose(file);/*关闭文件*/
    	printf("		打印成功!
    ");
    	system("pause");
    }
    

    存款函数

    void credit()  
    {
    	float money;/*输入的存款金额*/
    	system("cls");/*清屏*/
    	printf("
    
    
    		存款————credit 
    
    
    ");/*进入存款功能界面*/
    	printf("		本机只接收50元或100元币值人民币!
    ");/*提示信息*/
    	printf("
    		请输入存款金额:");
    	scanf("%f", &money);/*输入存款金额*/
    	if ((int)money % 50 != 0 || money <= 0)/*存款金额必须为50的整数倍且为正数*/
    	{
    		printf("
    		请输入面值为50或100的存款金额!请勿输入负数或0!
    ");
    		system("pause");
    		return;
    	}
    	strcpy(T[Tnum].account, C[Dxiabiao].account);/*把当前登录账号复制给交易记录里的账号*/
    	strcpy(T[Tnum].type, "存款");/*复制交易类型*/
    	T[Tnum].Tmoney = money;/*把存款金额赋给交易金额*/
    	C[Dxiabiao].yue += T[Tnum].Tmoney;/*计算存款后的账户余额*/
    	T[Tnum].Tyue = C[Dxiabiao].yue;/*交易后的余额等于账户余额*/
    	printf("
    		存款成功!");
    	system("pause");
    	printf("
    账号  		交易类型	交易金额	交易余额
    ");//输出账户存款交易的数据清单
    	printf("%s", T[Tnum].account);
    	printf("   %s", T[Tnum].type);
    	printf("		%.2f", T[Tnum].Tmoney);
    	printf("		%.2f", T[Tnum].Tyue);
    	printf("
    ");
    	Tnum++;/*交易序号加一*/
    	system("pause");
    }
    

    取款函数

    void debit()    
    {
    	float money;/*定义取款金额*/
    	system("cls");/*清屏*/
    	printf("
    
    
    		取款————debit 
    
    
    ");/*进入取款功能界面*/
    	printf("		本机只可取50或100元币值人民币!
    ");
    	printf("
    
    		请输入取款金额:");
    	scanf("%f", &money);	/*输入取款金额*/
    	if (money> C[Dxiabiao].yue)/*账户余额是否足够取款*/
    	{
    		printf("
    		您的余额不足!
    ");
    		system("pause");
    		return;
    	}
    	if ((int)money % 50 != 0 || money <= 0)/*取款金额必须为50的整数倍且为正数*/
    	{
    		printf("
    		请输入面值为50或100的存款金额!请勿输入负数或0!
    ");
    		system("pause");
    		return;
    	}
    	strcpy(T[Tnum].account, C[Dxiabiao].account);/*把当前登录账号复制给交易记录里的账号*/
    	strcpy(T[Tnum].type, "取款");/*复制交易类型*/
    	T[Tnum].Tmoney = money;/*取款金额值赋给交易金额*/
    	C[Dxiabiao].yue -= T[Tnum].Tmoney;/*计算取款后的账户余额*/
    	T[Tnum].Tyue = C[Dxiabiao].yue;/*取款后余额等于账户余额*/
    	printf("
    		取款成功!
    ");
    	system("pause");
    	printf("
    账号  		交易类型	交易金额	交易余额
    ");//输出账户和交易的数据清单
    	printf("%s", T[Tnum].account);
    	printf("   %s", T[Tnum].type);
    	printf("		%.2f", T[Tnum].Tmoney);
    	printf("		%.2f", T[Tnum].Tyue);
    	printf("
    ");
    	Tnum++;/*交易序号加一*/
    	system("pause");
    }
    

    修改密码函数

    void updatepassword()   
    {
    	char password[7], newpassword1[7], newpassword2[7];
    	int j = 0;
    	printf("
    
    		请输入原来的密码:");
    	scanf("%s", password);/*输入旧密码*/
    	if (strcmp(password, C[Dxiabiao].password) != 0)/*判断旧密码正确与否*/
    	{
    		printf("
    		您的密码输入错误!
    ");
    		system("pause");
    		return;
    	}
    	do
    	{
    		printf("
    		请输入新密码:");
    		scanf("%s", newpassword1);
    		printf("
    		请再一次输入新密码:");/*输入两次新密码*/
    		scanf("%s", newpassword2);
    		if (strcmp(newpassword1, newpassword2) != 0)/*判断输入的两次新密码是否相等*/
    		{
    			j++;
    			printf("
    		您的密码输入错误!您还有%d次机会输入密码!
    ", 3 - j);
    		}
    		if (j == 3)/*新密码输入错误不得超过三次*/
    		{
    			printf("密码修改未成功!
    ");
    			system("pause");
    			return;
    		}
    	} while (strcmp(newpassword1, newpassword2) != 0);
    	strcpy(C[Dxiabiao].password, newpassword1);/*拷贝新密码到账户信息里*/
    	printf("
    		您的密码修改成功!
    ");
    	system("pause");
    	return;
    }
    

    查询函数

    void quary()     
    {
    	for (;;)/*空循环语句*/
    	{
    		switch (quary_menu()) /*查询界面选择判断*/
    		{
    		case 1:quary_yue();break;/*调用查询余额函数*/
    		case 2:quary_mingxi();break; /*调用查询明细函数*/	
    		case 3:quary_credit();break; /*调用查询存款函数*/
    		case 4:quary_debit();break;/*调用查询取款函数*/	
    		case 0:return;		
    		}
    	}
    }
    

    查询菜单函数

    int quary_menu()
    {
    	char c;
    	do
    	{
    		system("cls"); /*每次选择运行前清屏*/
    		printf("
    
    
    		 *********欢迎进入    查询界面!*********
    
    "); /*查询界面菜单选择*/
    		printf("		 *| 1. 查询余额 |
    ");
    		printf("		 *| 2. 查询明细 |
    ");
    		printf("		 *| 3. 查询存款 |
    ");
    		printf("		 *| 4. 查询取款 |
    ");
    		printf("		 *| 0. 返回 |
    ");
    		printf("		*****************************************
    ");
    		printf("		请作出选择(0-4):");
    		c = getchar(); /*读入选择*/
    	} while (c<'0' || c>'4');
    	return(c - '0'); /*c变为空后返回重新选择*/
    }
    

    查询余额函数

    void quary_yue()    
    {
    	printf("
    
    		这是查询余额功能
    
    ");
    	printf("		您的账户余额为:%.2f
    
    ", C[Dxiabiao].yue);/*输出账户余额*/
    	system("pause");
    }
    

    查询明细函数

    void quary_mingxi()  
    {
    	int i;
    	system("cls");/*清屏*/
    	printf("
    
    
    		查询明细————quary MINGXI
    
    ");/*进入查询明细界面*/
    	printf("
    		您的账号:%s", C[Dxiabiao].account);
    	printf("
    
    交易类型	交易金额	交易余额
    ");//输出账户和交易的数据清单
    	for (i = 0; i<Tnum; i++)
    		if (strcmp(T[i].account, C[Dxiabiao].account) == 0)
    		{
    			printf("  %s", T[i].type);
    			printf("		%.2f", T[i].Tmoney);
    			printf("		%.2f", T[i].Tyue);
    			printf("
    ");
    		}
    	system("pause");
    }
    

    查询存款函数

    void quary_credit()   
    {
    	int i;
    	system("cls");
    	printf("
    
    		查询存款————quary credit
    
    ");
    	printf("
    		您的账号:%s", C[Dxiabiao].account);
    	printf("
    
    交易类型	交易金额	交易余额
    ");//输出账户和交易的数据清单
    	for (i = 0; i<Tnum; i++)
    		if (strcmp(T[i].account, C[Dxiabiao].account) == 0 && strcmp(T[i].type, "存款") == 0)
    		{
    			printf("  %s", T[i].type);
    			printf("		%.2f", T[i].Tmoney);
    			printf("		%.2f", T[i].Tyue);
    			printf("
    ");
    		}
    	system("pause");
    }
    

    查询取款函数

    void quary_debit()    
    {
    	int i;
    	system("cls");
    	printf("
    
    
    		查询取款————quary debit
    
    ");
    	printf("
    		您的账号:%s", C[Dxiabiao].account);
    	printf("
    
    交易类型	交易金额	交易余额
    ");//输出账户和交易的数据清单
    	for (i = 0; i<Tnum; i++)/*输出存款记录*/
    		if (strcmp(T[i].account, C[Dxiabiao].account) == 0 && strcmp(T[i].type, "取款") == 0)
    		{
    			printf("%s", T[i].type);
    			printf("		%.2f", T[i].Tmoney);
    			printf("		%.2f", T[i].Tyue);
    		}
    	printf("
    ");
    	system("pause");
    }
    

    转账函数

    void zhuanzhang() {
    	char  account1[16];     //用来存放转账用户的账号
    	int i;
    	printf("请输入将要转账的帐户号:
    ");
    	scanf("%s", account1);
    	for ( i = 0; i < Cnum; i++) {
    		if (strcmp(C[i].account, account1) == 0)
    		{
    			break;
    		}
    	}
    	printf("输入要转的钱数:
    ");
    	float money=0;
    	do {
    		if (money > C[Dxiabiao].yue) {
    			printf("余额不够,不可以转账");
    		}
    			scanf("%f", &money);
    		
    	} while (money > C[Dxiabiao].yue);
    	C[i].yue += money;
    	C[Dxiabiao].yue -= money;
    }
    

    个人总结

    psp2 任务内容 计划完成需要的时间 实际完成需要的时间
    planning 计划 150 200
    estimate 估计这个任务需要多少时间,并规划大致工作步骤 12 15
    development 开发 120 100
    analysis 需求分析 10 8
    design spec 生成设计文档 8 12
    design review 设计复审 5 5
    coding standard 代码规范 5 6
    design 具体设计 10 16
    coding 具体编码 35 50
    code review 代码复审 6 8
    test 测试 10 9
    reporting 报告 6 8
    test reporting 测试报告 3 2
    size measurement 计算工作量 3 2
    postmortem & process improvement plan 总结并提出改进计划 5 10
  • 相关阅读:
    Android HandlerThread
    JavaScript数据类型
    Android:VideoView
    我是如何跟踪log4j漏洞原理及发现绕WAF的tips
    Dubbo的反序列化安全问题——kryo和fst
    使用移动硬盘快速安装win7(附BIOS设置)
    OpenStack Swift All In One安装部署流程与简单使用
    C语言浮点数运算
    使用注册表文件(REG)添加、修改或删除Windows注册表项和值
    Linux之TCPIP内核参数优化
  • 原文地址:https://www.cnblogs.com/wo201314/p/13997742.html
Copyright © 2011-2022 走看看