资源描述
/*合同管理系统*/*头文件(.h)*/#include #include #include #include ctype.h#define M 50 struct addressbook int num; char name20; float money20; char jia15; char yi15; int creatline15; int deadline15; char carryout15; char classify15;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 adrM; 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*nn); 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(c8); return c;int Init(AddressBook t) int i,n; system(cls); printf(n请输入要输入的记录数:n); scanf(%d,&n); printf(开始输入记录:n); for(i=0;in;i+) system(cls); printf(n第%d条合同的编号:,i+1); scanf(%d,&ti.num); printf(第%d条合同的名称:,i+1); scanf(%s,ti.name); printf(第%d条合同的金额:,i+1); scanf(%s,ti.money); printf(第%d条合同的甲方:,i+1); scanf(%s,ti.jia); printf(第%d条合同的乙方:,i+1); scanf(%s,ti.yi); printf(第%d条合同的等级:,i+1); scanf(%s,ti.classify); printf(第%d条合同的生效日期:,i+1); scanf(%s,ti.creatline); printf(第%d条合同的到期日期:,i+1); scanf(%s,ti.deadline); printf(第%d条合同是否完成:,i+1); scanf(%s,ti.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;in+m;i+) system(cls); printf(n第%d条合同的编号:,i+1); scanf(%d,&ti.num); printf(第%d条合同的名称:,i+1); scanf(%s,ti.name); printf(第%d条合同的金额:,i+1); scanf(%s,ti.money); printf(第%d条合同的甲方:,i+1); scanf(%s,ti.jia); printf(第%d条合同的乙方:,i+1); scanf(%s,ti.yi); printf(第%d条合同的等级:,i+1); scanf(%s,ti.classify); printf(第%d条合同的生效日期:,i+1); scanf(%s,ti.creatline); printf(第%d条合同的到期日期:,i+1); scanf(%s,ti.deadline); printf(第%d条合同是否完成:,i+1); scanf(%s,ti.carryout); return (n+m);void List(AddressBook t,int n) int i; system(cls); printf(nn*ADDRESS*n); printf(编号 姓名 金额 甲方 乙方 等级 生效日期 到期日期 是否完成n); printf(-n); for(i=0;in;i+) printf(-6d%-20s%-20f,ti.num,ti.name,ti.money); printf(%-15s%-15s%-15d%-15d%-15s%-15n,ti.jia,ti.yi,ti.classify,ti.creatline,ti.deadline,ti.carryout); if(i+1)%10=0) printf(Press any key continue.n); getchar(); printf(*end*n);void SearchOnName(AddressBook t,int n) char s20; int i,flag=0; system(cls); printf(请输入要查找的合同名:n); scanf(%s,s); for(i=0;in;i+) if(strcmp(s,ti.name)=0) flag=1; system(cls); printf(nn此人的信息如下:n); printf(编号 姓名 金额 甲方 乙方 等级 生效日期 到期日期 是否完成n); printf(-n); printf(-6d%-20s%-20f,ti.num,ti.name,ti.money); printf(%-15s%-15s%-15d%-15d%-15s%-15n,ti.jia,ti.yi,ti.classify,ti.creatline,ti.deadline,ti.carryout); if(flag=0) printf(查无此人!n);int Deleteonname(AddressBook t,int n) char s20; char ch=N; int i,j,flag=0; system(cls); printf(请输入要删除的合同名n); scanf(%s,s); for(i=0;in;i+) if(strcmp(s,ti.name)=0) flag=1; system(cls); printf(nn*ADDRESS*n); printf(编号 姓名 金额 甲方 乙方 等级 生效日期 到期日期 是否完成n); printf(-n); printf(%-6d%-20s%-20f,ti.num,ti.name,ti.money); printf(%-15s%-15s%-15d%-15d%-15s%-15n,ti.jia,ti.yi,ti.classify,ti.creatline,ti.deadline,ti.carryout); printf(Are you sure delete it(Y/N)n); ch=getchar(); if(ch=y|ch=Y) for(j=i;jn-1;j+) tj=tj+1; n-; i-; if(flag=0) printf(查无此人!n); return n;void changeOnName(AddressBook t,int n) char s20; int i,j,flag=0; system(cls); printf(请输入要修改的合同名:n); scanf(%s,s); for(i=0;in;i+) if(strcmp(s,ti.name)=0) flag=1; system(cls); printf(nn*ADDRESS*n); printf(编号 姓名 金额 甲方 乙方 等级 生效日期 到期日期 是否完成n); printf(-n); scanf(%-6d%-20s%-20f,ti.num,ti.name,ti.money); scanf(%-15s%-15s%-15d%-15d%-15s%-15n,ti.jia,ti.yi,ti.classify,ti.creatline,ti.deadline,ti.carryout); if(flag=0) printf(查无此人!n); return n; void SortOnNum(AddressBook t,int n) int i,j,flag; AddressBook temp; for(j=1;jn;j+) for(i=0;iti+1.num) temp=ti; ti=ti+1; ti+1=temp; printf(排序成功!n);int quantityonjia(AddressBook t) int i,n=0; system(cls); for(i=0;in;i+) printf(第%d条合同的甲方:,i+1); scanf(%s,ti.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 filen); exit(1); fprintf(fp,%d,n); fprintf(fp,rn); for(i=0;in;i+) fprintf(fp,%-6d%-20s%-20f,ti.num,ti.name,ti.money); fprintf(fp,%-15s%-15s%-15d%-15d%-15s%-15n,ti.jia,ti.yi,ti.classify,ti.creatline,ti.deadline,ti.carryout); fprintf(fp,rn); fclose(fp);/*关闭文件*/*读入函数,参数为结构体数组*/int LoadRecord(AddressBook t) int i,n; FILE *fp; if(fp=fopen(record.txt,a+)=NULL) printf(can not open filen); exit(1); fscanf(fp,%d,&n); for(i=0;in;i+) fscanf(fp,%6d%20s%20f%-15s%-15s%-15d%-15d%-15s%-15n,&ti.num,ti.name,ti.money,ti.jia,ti.yi,ti.classify,ti.creatline,ti.deadline,ti.carryout); fclose(fp); printf(从文件中成功读出记录!n); return n;
展开阅读全文