#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 100
struct Salary_Info
{
int Card_No; //工资卡号
char name[20]; //姓名
int month; //月份
float Init_Salary; //应发工资
float Water_Rate; //水费
float Electric_Rate; //电费
float tax; //税金
float Final_Salary; //实发工资
float Final_Salary_sum; //实发总工资
};
/*声明函数和定义全局变量*/
struct Salary_Info SI[N];
int count=0; //计数有多少条记录,赋初值为0条
void Menu(); //0
void input(); //1
void sort_Menu(); //4
void sort_Card_No(); //5
void sort_Final_Salary(); //6
void sort_name(); //8
void display(); //9
void save(); //10
void load(); //11
void search_Menu(); //12
void search_Card_No(); //13
void search_name(); //14
void statistics(); //15
void del(); //18
void add(); //19
void modify(); //20 /*定义各函数*/
void main();
void Menu()
{
printf(" 欢迎登陆工资管理系统 \n\n");
printf(" ************************************菜单**************************************\n");
printf(" * 1.信息录入 2.排序 *\n");
printf(" * 3.显示 4.数据保存 *\n");
printf(" * 5.数据调入 6.查询 *\n");
printf(" * 7.统计 8.删除职工 *\n");
printf(" * 9.添加职工 10.修改职工信息 *\n");
printf(" * 0.退出 *\n");
printf(" ******************************************************************************\n");
}
void input() /*输入函数*/
{
system("color f5");
int i,m;
float sum;
printf("********************************录入初始职工信息*******************************\n\n");
printf("请输入需要创建信息的职工人数(1--100): ");
scanf("%d",&m);
count=m;
for(i=0;i<m;i++)
{
printf("请输入职工工资卡号:");
scanf("%d",&SI[i].Card_No);
printf("请输入姓名:");
scanf("%s",&SI[i].name);
printf("请输入月份:");
scanf("%d",&SI[i].month);
printf("请输入应发工资:");
scanf("%f",&SI[i].Init_Salary);
printf("请输入水费:");
scanf("%f",&SI[i].Water_Rate);
printf("请输入电费:");
scanf("%f",&SI[i].Electric_Rate);
if(SI[i].Init_Salary <= 800) sum=0; /*计算税金*/
else if(SI[i].Init_Salary > 800 && SI[i].Init_Salary <= 1400) sum=(float)(SI[i].Init_Salary-800)*0.05;
else sum=(SI[i].Init_Salary-800)*0.1;
SI[i].tax=sum;
SI[i].Final_Salary=(SI[i].Init_Salary-SI[i].Water_Rate-SI[i].Electric_Rate-SI[i].tax); /*计算实发工资*/
}
printf("\n创建完毕!\n");
save();
}
void sort_Menu() /*排序主函数*/
{
system("color f5");
int t,flag;
do
{
printf(" *********************************选择排序方式*********************************\n");
printf(" * *\n");
printf(" * 1.按职工卡号排序 2.按实发工资排序 3.按姓名排序 4.返回主菜单 *\n");
printf(" * *\n");
printf(" ******************************************************************************\n");
printf(" 请输入[1-4]: ");
scanf("%d",&t);
printf("\n");
if(t>=1&&t<=4)
{
flag=1;
break;
}
else
{
flag=0;
system("cls");
printf("\n您输入有误!!! 请重新选择。\n\n");
}
}
while(flag==0);
switch(t)
{
case 1:system("cls");sort_Card_No();break; /*调用按卡号排序函数*/
case 2:sort_Final_Salary();break; /*调用按实发工资排序函数*/
case 3:sort_name();break; /*调用按姓名排序函数*/
case 4:system("cls");main();break; /*调用主函数*/
default:break;
}
}
void sort_Card_No() /*按卡号升序排序函数*/
{
system("color f4");
int i,j,k;
float temp;
char t[20];
for(i=0;i<count-1;i++)
for(j=0;j<count-1;j++)
if(SI[j].Card_No<SI[j+1].Card_No)
{
k=SI[j].Card_No; SI[j].Card_No=SI[j+1].Card_No; SI[j+1].Card_No=k;
strcpy(t,SI[j].name); strcpy(SI[j].name,SI[j+1].name); strcpy(SI[j+1].name,t);
temp=SI[j].month;SI[j].month=SI[j+1].month;SI[j+1].month=temp;
temp=SI[j].Init_Salary;SI[j].Init_Salary=SI[j+1].Init_Salary;SI[j+1].Init_Salary=temp;
temp=SI[j].Water_Rate;SI[j].Water_Rate=SI[j+1].Water_Rate;SI[j+1].Water_Rate=temp;
temp=SI[j].Electric_Rate;SI[j].Electric_Rate=SI[j+1].Electric_Rate;SI[j+1].Electric_Rate=temp;
temp=SI[j].tax;SI[j].tax=SI[j+1].tax;SI[j+1].tax=temp;
temp=SI[j].Final_Salary;SI[j].Final_Salary=SI[j+1].Final_Salary;SI[j+1].Final_Salary=temp;
}
printf("******************************按职工卡号排序浏览******************************\n");
printf("*\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
for(i=0;i<count;i++)
{
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
if((i+1)%10==0) system("pause");
}
printf("******************************************************************************\n");
}
void sort_Final_Salary() /*实发工资排序函数*/
{
int i,j,k;
float temp;
char t[10];
printf("******************************按实发工资排序浏览******************************\n");
printf("*\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
for(i=0;i<count-1;i++)
for(j=0;j<count-1;j++)
if(SI[j].Final_Salary<SI[j+1].Final_Salary)
{
k=SI[j].Final_Salary;SI[j].Final_Salary=SI[j+1].Final_Salary;SI[j+1].Final_Salary=k;
strcpy(t,SI[j].name);strcpy(SI[j].name,SI[j+1].name);strcpy(SI[j+1].name,t);
temp=SI[j].month;SI[j].month=SI[j+1].month;SI[j+1].month=temp;
temp=SI[j].Init_Salary;SI[j].Init_Salary=SI[j+1].Init_Salary;SI[j+1].Init_Salary=temp;
temp=SI[j].Water_Rate;SI[j].Water_Rate=SI[j+1].Water_Rate;SI[j+1].Water_Rate=temp;
temp=SI[j].Electric_Rate;SI[j].Electric_Rate=SI[j+1].Electric_Rate;SI[j+1].Electric_Rate=temp;
temp=SI[j].tax;SI[j].tax=SI[j+1].tax;SI[j+1].tax=temp;
temp=SI[j].Card_No;SI[j].Card_No=SI[j+1].Card_No;SI[j+1].Card_No=temp;
}
for(i=0;i<count;i++) /*count为职工人数*/
{
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
if((i+1)%10==0) system("pause");
}
printf("******************************************************************************\n");
}
void sort_name() /*姓名排序函数*/
{
char t[20];
int i,j,k;
float temp;
{for(i=0; i<count-1; i++)
for(j=0; j<count-i-1; j++)
{
if(strcmp(SI[j].name,SI[j+1].name)>0)
{
k=SI[j].Card_No; SI[j].Card_No=SI[j+1].Card_No; SI[j+1].Card_No=k;
strcpy(t,SI[j].name); strcpy(SI[j].name,SI[j+1].name); strcpy(SI[j+1].name,t);
temp=SI[j].month;SI[j].month=SI[j+1].month;SI[j+1].month=temp;
temp=SI[j].Init_Salary;SI[j].Init_Salary=SI[j+1].Init_Salary;SI[j+1].Init_Salary=temp;
temp=SI[j].Water_Rate;SI[j].Water_Rate=SI[j+1].Water_Rate;SI[j+1].Water_Rate=temp;
temp=SI[j].Electric_Rate;SI[j].Electric_Rate=SI[j+1].Electric_Rate;SI[j+1].Electric_Rate=temp;
temp=SI[j].tax;SI[j].tax=SI[j+1].tax;SI[j+1].tax=temp;
temp=SI[j].Final_Salary;SI[j].Final_Salary=SI[j+1].Final_Salary;SI[j+1].Final_Salary=temp;
}
}
}
printf("******************************按职工姓名排序浏览******************************\n");
printf("*\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
for(i=0;i<count;i++)
{
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
if((i+1)%10==0) system("pause");
}
printf("******************************************************************************\n");
}
void display() /*浏览函数*/
{
int i;
printf("*********************************浏览职工信息*********************************\n");
printf("*\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
for(i=0;i<count;i++)
{
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
if((i+1)%10==0) system("pause");
}
printf("******************************************************************************\n");
}
void search_Menu()/*查询函数*/
{
int t,flag;
do
{
printf(" *********************************选择查询方式*********************************\n");
printf(" * *\n");
printf(" * 1.按卡号查询 2.按姓名查询 3.返回主菜单 *\n");
printf(" * *\n");
printf(" ******************************************************************************\n");
printf(" 请输入操作[1-3]: ");
scanf("%d",&t);
if(t>=1&&t<=3)
{
flag=1;
break;
}
else
{
flag=0;
system("cls");
printf("\n您输入有误!!! 请重新选择。\n\n");
}
}
while(flag==0);
switch(t)
{
case 1:search_Card_No();break;
case 2:search_name();break;
case 3:system("cls");main();break;
default:break;
}
}
void search_Card_No()
{
int Card_No,flag;
int i,t;
printf("\n请输入要查找的职工卡号: ");
fflush(stdin);
scanf("%d",&Card_No);
for(i=0;i<count;i++)
{
if(Card_No==SI[i].Card_No)
{
flag=1;
printf("\n已找到此人,其记录为:\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
printf("*******************************************************************************\n");break;
}
}
if(flag!=1)
{
printf("\n ---对不起,查无此人--- \n");
}
printf(" 返回查询函数请按1 继续查询请按2 \n");
scanf("%d",&t);
switch(t)
{
case 1:system("cls");search_Menu();break;
case 2:search_Card_No();break;
default:break;
}
}
void search_name()
{
char name[30];
int i,t,flag;
printf("\n请输入要查找职工姓名: ");
scanf("%s",&name);
for(i=0;i<count;i++)
{
if(strcmp(SI[i].name,name)==0)
{
flag=1;
printf("\n已找到此人,其记录为:\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
printf("******************************************************************************\n"); //break;
}
}
if(flag!=1)
{
printf("\n ---对不起,查无此人--- \n");
}
printf("\n[ 1.返回查询菜单 2.继续查姓名查询] 请输入: ");
scanf("%d",&t);
switch(t)
{
case 1:system("cls");search_Menu();break;
case 2:search_name();break;
default:break;
}
}
void statistics() /*统计函数*/
{
int i,t,m,n,flag,banner,num,Card_No;
do
{
printf("***********************************统计数据***********************************\n\n");
display();
printf("请输入职工工资卡号: ");
fflush(stdin);
scanf("%d",&Card_No);
printf("请输入开始月份: ");
scanf("%d",&m);
printf("请输入结束月份: ");
scanf("%d",&n);
num=n-m+1;
for(i=0;i<=count;i++)
if(Card_No==SI[i].Card_No)
{
if(num>=1&&num<=12)
{
banner=1;
SI[i].Final_Salary_sum = num*SI[i].Final_Salary;
printf("**********************************查询结果如下*********************************\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
printf("*-----------------------------------------------------------------------------\n");
printf("* 实发工资总额为:%.2f\n",SI[i].Final_Salary_sum);
printf("*******************************************************************************\n");
break;
}
}
else
{
banner=0;
printf("\n您输入有误,请重新输入!\n");
}
printf("\n[ 1.继续查询 2.返回菜单] 请输入: ");
scanf("%d",&t);
if(t>=1&&t<=2)
{
flag=1;
break;
}
else
{
flag=0;
system("cls");
printf("\n您输入有误!!! 请重新选择。\n\n");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:statistics();break;
case 2:system("CLS");main();break;
default:break;
}
}
}
void del() /*删除函数*/
{
printf("********************删除职工信息************************\n\n");
int i,j,n,t,flag;
char name[20];
printf("\n 原来的职工信息:\n");
display();
printf("\n请输入要删除的职工的姓名:");
scanf("%s",&name);
for(flag=1,i=0;flag&&i<count;i++)
{
if(strcmp(SI[i].name,name)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
printf("******************************************************************************\n");
printf("\n[ 1.确认删除 0.不删除] 请输入(0或1): ");
scanf("%d",&n);
if(n==1)
{
for(j=i;j<count;j++)
{
SI[j].Card_No=SI[j+1].Card_No;
strcpy(SI[j].name,SI[j+1].name);
SI[j].month=SI[j+1].month;
SI[j].Init_Salary=SI[j+1].Init_Salary;
SI[j].Water_Rate=SI[j+1].Water_Rate;
SI[j].Electric_Rate=SI[j+1].Electric_Rate;
SI[j].tax=SI[j+1].tax;
SI[j].Final_Salary=SI[j+1].Final_Salary;
}
count=count-1;
flag=0;
}
}
}
if(!flag)
{
save(); /*调用保存函数*/
printf("\n浏览增加后的所有职工信息:\n");
display(); /*调用浏览函数*/
printf("\n[ 1.继续删除 0.不再删除] 请输入(0或1): ");
scanf("%d",&t);
switch(t)
{
case 1:del();break;
case 0:break;
default :break;
}
}
}
void add()/*添加函数*/
{
printf("********************添加职工信息************************\n\n");
FILE*fp;
int n;
int i;
float sum;
printf("原来的职工信息:\n");
display();
printf("\n");
fp=fopen("Salary_Info.txt","ab+");
printf("请输入想增加的职工数:");
scanf("%d",&n);
for (i=count;i<(count+n);i++)
{
printf("请输入职工工资卡号:");
scanf("%d",&SI[i].Card_No);
printf("请输入姓名:");
scanf("%s",&SI[i].name);
printf("请输入月份:");
scanf("%d",&SI[i].month);
printf("请输入应发工资:");
scanf("%f",&SI[i].Init_Salary);
printf("请输入水费:");
scanf("%f",&SI[i].Water_Rate);
printf("请输入电费:");
scanf("%f",&SI[i].Electric_Rate);
if(SI[i].Init_Salary <= 800) sum=0; /*计算税金*/
else if(SI[i].Init_Salary > 800 && SI[i].Init_Salary <= 1400) sum=(float)(SI[i].Init_Salary-800)*0.05;
else sum=(SI[i].Init_Salary-800)*0.1;
SI[i].tax=sum;
SI[i].Final_Salary=(SI[i].Init_Salary-SI[i].Water_Rate-SI[i].Electric_Rate-SI[i].tax); /*计算实发工资*/
}
fwrite(&SI[i],sizeof(struct Salary_Info),1,fp);
fclose(fp);
count=count+n;
printf("\n已增加的人数:");
printf("%d",n);
printf("\n添加完毕!\n");
save();
printf("\n浏览增加后的所有职工信息:\n");
display();
}
void modify() /*修改函数*/
{
printf("********************修改职工信息************************\n\n");
int Card_No; //工资卡号
char name[20]; //姓名
int month; //月份
float Init_Salary; //应发工资
float Water_Rate; //水费
float Electric_Rate; //电费
float Final_Salary;
float sum; //计算税金时用于转换赋值
int b,c,i,n,t,flag;
printf("\n 原来的职工信息:\n");
display();
printf("请输入要修改的职工的姓名:");
scanf("%s",&name);
for(i=0;i<count;i++)
{
if(strcmp(SI[i].name,name)==0)
{
system("cls");
printf("\n已找到此人,原始记录为:\n");
printf("******************************************************************************\n");
printf("*\n");
printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
printf("* %d\t%s\t %d\t%.2f\t %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
printf("******************************************************************************\n");
printf("[ 1.修改 2.不修改] 请输入: ");
scanf("%d",&n);
if(n!=1) break;
if(n==1)
{
flag=1;
printf("\n************修改选项: 1.卡号 2.姓名 3.月份 4.应发工资 5.水费 6.电费***********\n");
printf("请选择[1-6]: ");
scanf("%d",&c);
if(c>6||c<1)
printf("\n选择错误,请重新选择!\n");
}
}
else
{
printf("\n对不起,查无此人!\n");
flag=0;
break;
}
}
if(flag==1)
do
{
switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/
{
case 1:printf("工资卡号改为: ");
scanf("%d",&Card_No);
SI[i-1].Card_No=Card_No;
break;
case 2:printf("姓名改为: ");
scanf("%s",&name);
strcpy(SI[i-1].name,name);
break;
case 3:printf("月份改为: ");
scanf("%d",&month);
SI[i-1].month=month;
break;
case 4:printf("应发工资改为: ");
scanf("%f",&Init_Salary);
SI[i-1].Init_Salary=Init_Salary;
if(SI[i-1].Init_Salary <= 800) sum=0; /*计算修改应发工资后的税金*/
else if(SI[i-1].Init_Salary > 800 && SI[i-1].Init_Salary <= 1400) sum=(float)(SI[i-1].Init_Salary-800)*0.05; /*sum强制转换类型,double到float*/
else sum=(SI[i-1].Init_Salary-800)*0.1;
SI[i-1].tax=sum;
SI[i-1].Final_Salary=Final_Salary=(SI[i-1].Init_Salary-SI[i-1].Water_Rate-SI[i-1].Electric_Rate-SI[i-1].tax); /*计算修改应发工资后的实发工资*/
break;
case 5:printf("水费改为: ");
scanf("%f",&Water_Rate);
SI[i-1].Water_Rate=Water_Rate;
SI[i-1].Final_Salary=Final_Salary=(SI[i-1].Init_Salary-SI[i-1].Water_Rate-SI[i-1].Electric_Rate-SI[i-1].tax); /*计算修改水费后的实发工资*/
break;
case 6:printf("电费改为: ");
scanf("%f",&Electric_Rate);
SI[i-1].Electric_Rate=Electric_Rate;
SI[i-1].Final_Salary=Final_Salary=(SI[i-1].Init_Salary-SI[i-1].Water_Rate-SI[i-1].Electric_Rate-SI[i-1].tax); /*计算修改电费后的实发工资*/
break;
}
printf("\n");
printf("[1.确认修改 2.不修改] 请输入: ");
scanf("%d",&b);
}
while(b==2);
printf("\n浏览修改后的所有职工信息:\n");
save();
display();
printf("\n[1.继续修改 2.不再修改] 请输入: ");
scanf("%d",&t);
switch(t)
{
case 1: system("cls");modify();break;
case 0:break;
default :break;
}
}
void save() /*数据保存函数*/
{
int i;
FILE *fp;
if ((fp=fopen("Salary_Info.txt","wb"))==NULL)
{
printf ("cannot open file\n");
exit(1);
}
for(i=0;i<count;i++) /*将内存中职工的信息输出到磁盘文件中去*/
fwrite(&SI[i],sizeof(struct Salary_Info),1,fp);
fclose(fp);
printf("\n数据保存......\n");
printf("数据保存成功!\n");
}
void load() /*数据读取函数*/
{
FILE *fp;
int i;
if((fp=fopen("Salary_Info.txt","rb"))==NULL)
{
printf ("cannot open file\n");
exit(1);
}
for(i=0; fread(&SI[i],sizeof(struct Salary_Info),1,fp)!=0; i++);
fclose(fp);
count=i;
printf("\n数据调入......\n");
printf("数据调入成功!\n");
}
void main() /*主函数*/
{
load();system("cls");
system("color f5");
int n,flag;
char a;
start:
do
{
Menu();
printf("\n请选择你需要操作的步骤(0--10): ");
scanf("%d",&n);
if(n>=0 && n<=10)
{
flag=1;break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!\n");
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case 1:system("cls"); input();break;/*调用输入函数*/
case 2:system("cls"); sort_Menu();break; /*调用排序函数*/
case 3:system("cls"); display();break;/*调用显示函数*/
case 4:save();break; /*调用保存函数*/
case 5:load();break; /*调用读取函数*/
case 6:system("cls"); search_Menu();break;/*调用查询函数*/
case 7:system("cls"); statistics();break;/*调用统计函数*/
case 8:system("cls"); del();break;/*调用删除函数*/
case 9:system("cls"); add();break;/*调用添加函数*/
case 10:system("cls"); modify();break;/*调用修改函数*/
case 0: exit(0);break;
default:system("cls");goto start;
}
getchar();
printf("\n是否继续进行(y or n): ");
scanf("%c",&a);
if(a=='y'||a=='Y')
{
flag=1;
system("cls"); /*清屏*/
Menu(); /*调用菜单函数*/
printf("请再次选择你需要操作的步骤(0--10): ");
scanf("%d",&n);
}
else
exit(0);
}
}
C语言工资管理系统源代码-andy
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...