/*合同管理系统*//******头文件(.h)***********/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "ctype.h"#define M 50struct addressbook{int num;char name[20];float money[20];char jia[15];char yi[15];int creatline[15];int deadline[15];char carryout[15];char classify[15];};typedef struct addressbook AddressBook;int Init(AddressBook t[]);int AddRecord(AddressBook t[],int n);void List(AddressBook t[],int n);void SearchOnName(AddressBook t[],int n); void changeOnName(AddressBook t[],int n); int Deleteonname(AddressBook t[],int n); void SortOnNum(AddressBook t[],int n);int quantityonjia(AddressBook t[]);void SaveRecord(AddressBook t[],int n);int LoadRecord(AddressBook t[]);int Menu_select();void main(){AddressBook adr[M];int length;while(1){switch(Menu_select()){case 1: length=Init(adr);SaveRecord(adr,length);break;case 2:length=LoadRecord(adr);AddRecord(adr,length);break;case 3:length=LoadRecord(adr);List(adr,length);break;case 4:length=LoadRecord(adr);SearchOnName(adr,length);break;case 5:length=LoadRecord(adr);changeOnName(adr,length);SaveRecord(adr,length);List(adr,length);break;case 6:length=LoadRecord(adr);Deleteonname(adr,length);SaveRecord(adr,length);List(adr,length);break;case 7:length=LoadRecord(adr);SortOnNum(adr,length);SaveRecord(adr,length);List(adr,length);break;case 8:length=LoadRecord(adr);quantityonjia(adr,length);break;case 0:exit(0); /*如返回值为0则程序结束*/}}}int Menu_select(){int c;printf("press any key enter menu......\n");getchar(); /*读入任意字符*/printf("********************************MENU*********************************\n\ n");printf(" 1. 录入初始记录\n");printf(" 2. 增加记录\n");printf(" 3. 显示所有记录\n");printf(" 4. 根据合同名称查找记录\n");printf(" 5. 根据合同名称修改记录\n");printf(" 6. 根据合同名称删除记录\n");printf(" 7. 按合同编号从小到大显示记录\n");printf(" 8. 根据合同甲方统计其合同量数\n");printf(" 0. 退出\n");printf("*********************************************************************\n"); do{printf("\n Enter your choice(0-8):");if(scanf("%d",&c)!=1){ while(getchar()!='\n')continue;/* continue;*/}}while(c<0||c>8);return c;}int Init(AddressBook t[]){int i,n;system("cls");printf("\n请输入要输入的记录数:\n");scanf("%d",&n);printf("开始输入记录:\n");for(i=0;i<n;i++){ system("cls");printf("\n第%d条合同的编号:",i+1);scanf("%d",&t[i].num);printf("第%d条合同的名称:",i+1);scanf("%s",t[i].name);printf("第%d条合同的金额:",i+1);scanf("%s",t[i].money);printf("第%d条合同的甲方:",i+1);scanf("%s",t[i].jia);printf("第%d条合同的乙方:",i+1);scanf("%s",t[i].yi);printf("第%d条合同的等级:",i+1);scanf("%s",t[i].classify);printf("第%d条合同的生效日期:",i+1);scanf("%s",t[i].creatline);printf("第%d条合同的到期日期:",i+1);scanf("%s",t[i].deadline);printf("第%d条合同是否完成:",i+1);scanf("%s",t[i].carryout);}return (n);}int AddRecord(AddressBook t[],int n){int i,m;char *s;system("cls");printf("\n请输入在增加的记录数:\n");scanf("%d",&m);printf("开始追加记录\n");for(i=n;i<n+m;i++){ system("cls");printf("\n第%d条合同的编号:",i+1);scanf("%d",&t[i].num);printf("第%d条合同的名称:",i+1);scanf("%s",t[i].name);printf("第%d条合同的金额:",i+1);scanf("%s",t[i].money);printf("第%d条合同的甲方:",i+1);scanf("%s",t[i].jia);printf("第%d条合同的乙方:",i+1);scanf("%s",t[i].yi);printf("第%d条合同的等级:",i+1);scanf("%s",t[i].classify);printf("第%d条合同的生效日期:",i+1);scanf("%s",t[i].creatline);printf("第%d条合同的到期日期:",i+1);scanf("%s",t[i].deadline);printf("第%d条合同是否完成:",i+1);scanf("%s",t[i].carryout);}return (n+m);}void List(AddressBook t[],int n){int i;system("cls");printf("\n\n*********************************ADDRESS*************************** ********\n");printf("编号姓名金额甲方乙方等级生效日期到期日期是否完成\n");printf("---------------------------------------------------------------------------\n");for(i=0;i<n;i++){ printf("-6d%-20s%-20f",t[i].num,t[i].name,t[i].money);printf("%-15s%-15s%-15d%-15d%-15s%-15\n",t[i].jia,t[i].yi,t[i].classify,t[i].creatline,t[i].deadline ,t[i].carryout);if((i+1)%10==0){printf("Press any key continue...\n");getchar();}}printf("************************************end********************************** *\n");}void SearchOnName(AddressBook t[],int n){char s[20];int i,flag=0;system("cls");printf("请输入要查找的合同名:\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){ flag=1;system("cls");printf("\n\n此人的信息如下:\n");printf("编号姓名金额甲方乙方等级生效日期到期日期是否完成\n");printf("---------------------------------------------------------------------------\n");printf("-6d%-20s%-20f",t[i].num,t[i].name,t[i].money);printf("%-15s%-15s%-15d%-15d%-15s%-15\n",t[i].jia,t[i].yi,t[i].classify,t[i].creatline,t[i].deadline ,t[i].carryout);}}if(flag==0)printf("查无此人!!\n");}int Deleteonname(AddressBook t[],int n){char s[20];char ch='N';int i,j,flag=0;system("cls");printf("请输入要删除的合同名\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){ flag=1;system("cls");printf("\n\n*********************************ADDRESS*************************** ********\n");printf("编号姓名金额甲方乙方等级生效日期到期日期是否完成\n");printf("---------------------------------------------------------------------------\n");printf("%-6d%-20s%-20f",t[i].num,t[i].name,t[i].money);printf("%-15s%-15s%-15d%-15d%-15s%-15\n",t[i].jia,t[i].yi,t[i].classify,t[i].creatline,t[i].deadline ,t[i].carryout);printf("Are you sure delete it(Y/N)\n");ch=getchar();if(ch=='y'||ch=='Y'){for(j=i;j<n-1;j++)t[j]=t[j+1];n--;i--;}}}if(flag==0)printf("查无此人!!\n");return n;}void changeOnName(AddressBook t[],int n){char s[20];int i,j,flag=0;system("cls");printf("请输入要修改的合同名:\n");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(s,t[i].name)==0){ flag=1;system("cls");printf("\n\n*********************************ADDRESS*************************** ********\n");printf("编号姓名金额甲方乙方等级生效日期到期日期是否完成\n");printf("---------------------------------------------------------------------------\n");scanf("%-6d%-20s%-20f",t[i].num,t[i].name,t[i].money);scanf("%-15s%-15s%-15d%-15d%-15s%-15\n",t[i].jia,t[i].yi,t[i].classify,t[i].creatline,t[i].deadline ,t[i].carryout);} }if(flag==0)printf("查无此人!!\n");return n;}void SortOnNum(AddressBook t[],int n){ int i,j,flag;AddressBook temp;for(j=1;j<n;j++)for(i=0;i<n-j;i++)if(t[i].num>t[i+1].num){temp=t[i];t[i]=t[i+1];t[i+1]=temp;}printf("排序成功\n");}int quantityonjia(AddressBook t[]){ int i,n=0;system("cls");for(i=0;i<n;i++){ printf("第%d条合同的甲方:",i+1);scanf("%s",t[i].jia);n++;}return(n);}/*保存函数,参数为结构体数组和记录数*/void SaveRecord(AddressBook t[],int n){int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","w"))==NULL){printf("can not open file\n");exit(1);}fprintf(fp,"%d",n);fprintf(fp,"\r\n");for(i=0;i<n;i++){fprintf(fp,"%-6d%-20s%-20f",t[i].num,t[i].name,t[i].money);fprintf(fp,"%-15s%-15s%-15d%-15d%-15s%-15\n",t[i].jia,t[i].yi,t[i].classify,t[i].creatline,t[i].dead line,t[i].carryout);fprintf(fp,"\r\n");}fclose(fp);/*关闭文件*/}/*读入函数,参数为结构体数组*/int LoadRecord(AddressBook t[]){int i,n;FILE *fp;if((fp=fopen("record.txt","a+"))==NULL){printf("can not open file\n");exit(1);}fscanf(fp,"%d",&n);for(i=0;i<n;i++)fscanf(fp,"%6d%20s%20f%-15s%-15s%-15d%-15d%-15s%-15\n",&t[i].num,t[i].name,t[i].money ,t[i].jia,t[i].yi,t[i].classify,t[i].creatline,t[i].deadline,t[i].carryout);fclose(fp);printf("从文件中成功读出记录\n");return n;}。