当前位置:文档之家› 古树名木管理系统

古树名木管理系统

工程学院国脉信息学院《C语言程序设计》课程设计实验报告题目:城区古树名木信息管理系统专业:电子信息工程班级:(1)班学号:姓名:成绩:指导教师:完成日期:2011年 4 月 20 日四、系统结构图五、功能模块说明古树名木信息的录入、查询、修改、删除模块如下:1)、列表模块2)、录入模块3)查询模块4).*城区信息模块与古树名木养护信息的录入、查询、删除模块雷同。

六、运行情况1)、主菜单N开始读文件数据列出数据输入stree[i].number==s ?删除数据 Y 返回主函数 返回主函数输出数据 开始读文件数据输入numTree[i].numbe ==rnum ? 输出数据 返回主函数YN显示数据 修改数据 返回主函数一、课程设计目的1)对C各部分知识的综合应用能力2)提高程序设计的能力3)提升对于较大程序的抽象分析设计能力4)学习调试和测试的技巧二、课程设计内容1)熟悉C实验环境,按给定的上机步骤练习完成;2)熟悉C程序的编辑,编译,链接和运行的过程。

3)编译一个应用系统程序,形成一个软件系统。

三、数据结构设计及用法说明1、本程序使用到了三个struct,分别是(1)struct tree/*古树名木养护信息*/{ char number[5];/*编号*/char area[10];/*区号*/char name[100];/*树名*/char xueming[100];/*学名*/char branch[100];/*科属*/int age;/*树龄*/char day[11];/*确认时间*/int rank;/*保护级别*/char place[100];/*栽植地点*/}tree[MAX];(2)struct city/*城区信息*/{ char cityarea[7];/*区号*/char areaname[20];/*区名*/char management[30];/*主管部门*/char address[30];/*地址*/char tel[13];/*电话*/char worker[20];/*负责人*/}city[MAX];(3)struct protection/*古树名木养护信息*/{ char cityareas[7];/*区号*/char treenumber[5];/*古树名木编号*/char protecter[30];/*养护人*/char data[11];/*养护日期*/char measure[30];/*养护措施*/char state[20];/*生长状况*/}pro[MAX];2、本段程序在main函数中嵌套了所有子函数,包括“void Input();/* 古树基本信息录入*/”、“void Display();/*古树信息浏览*/、“void Find();/*古树信息查询*/”、“void Modify();/*删除*/”、“void Change();/*修改*/”、“void Inputcity();/* 城区信息录入*/”、“void Displaycity();/* 城区信息浏览*/”、“void Changecity();/* 城区信息修改*/”、“void Inputprotection();/* 养护信息录入*/”、“void Displayprotection();/* 养护信息浏览*/”、“void Changeprotection()/*修改*/”。

2)录入古树名木信息3)浏览古树名木信息4)查询古树名木信息(按古树名查找)(按编号查找)5)删除古树信息(删除后的信息浏览)6)录入城区信息6)城区信息浏览7)从城区信息中查询某城区的古树名木8)从城区信息中删除某古树名木9)录入古树名木养护信息10)浏览古树名木养护信息11)修改古树名木养护信息(修改后的古树名木养护信息浏览)12)退出系统七、设计体会和反思#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define MAX 1000struct tree{char number[5];/*编号*/char area[10];/*区号*/char name[100];/*树名*/char xueming[100];/*学名*/char branch[100];/*科属*/int age;/*树龄*/char day[11];/*确认时间*/int rank;/*保护级别*/char place[100];/*栽植地点*/}tree[MAX];struct city{char cityarea[7];/*区号*/char areaname[20];/*区名*/char management[30];/*主管部门*/char address[30];/*地址*/char tel[13];/*电话*/char worker[20];/*负责人*/}city[MAX];struct protection{char cityareas[7];/*区号*/char treenumber[5];/*古树名木编号*/char protecter[30];/*养护人*/char data[11];/*养护日期*/char measure[30];/*养护措施*/char state[20];/*生长状况*/}pro[MAX];main()/*主函数*/{void Input();/* 古树名木基本信息录入*/void Display();/*浏览*/void Find();/*查询*/void Modify();/*删除*/void Change();/*修改*/void Inputcity();/* 城区基本信息录入*/void Displaycity();/* 城区基本信息浏览*/void Changecity();/* 城区基本信息修改*/void Inputprotection();/* 古树名木养护基本信息录入*/void Displayprotection();/* 古树名木养护基本信息浏览*/void Changeprotection();/*古树名木养护基本信息修改*/int m,n;printf("\n");printf(" 欢迎进入'城区古树名木信息管理系统' \n");printf("\n");printf("进入请按'1':");scanf("%d",&m);if(m==1){for(;;){printf("\n");printf(" 主菜单\n");printf("\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(" 【9.古树名木养护基本信息录入】\n");printf(" 【10.古树名木养护基本信息浏览】\n");printf(" 【11.古树名木养护基本信息修改】\n");printf(" 【12.退出系统】\n");printf("请输入选择项(1-12):");scanf("%d",&n);printf("\n\n");if(n>0&&n<13){switch(n){case 1:Input();break;case 2:Display();break;case 3:Find();break;case 4:Modify();break;case 5:Change();break;case 6:Inputcity();break;case 7:Displaycity();break;case 8:Changecity();break;case 9:Inputprotection();break;case 10:Displayprotection();break;case 11:Changeprotection();break;case 12:printf(" 谢谢使用! \n");printf("\n");printf(" 再见! \n");printf(" \n");exit(0);}}else{printf(" \n");printf(" 输入错误! \n");printf("\n");printf(" 请退出! \n");printf(" \n");break;}}}else{ printf("\n\n\n\n");printf(" 输入错误! \n");printf("\n");printf(" 再见! \n");}}void Find()/*查询*/{FILE *fp;int i;int choose,t;char ans[100];do{printf("1.按古树名查找\n");printf("\n");printf("2.按编号查找\n");printf("\n");printf("返回主菜单(其他数字)\n");printf("\n");scanf("%d",&choose);if(choose==1){printf("输入所查古树名:\n");scanf("%s",ans);t=-1;if(choose==1){for(i=0;i<MAX;i++) if(strcmp(ans,tree[i].name)==0){t=i;fp=fopen("tree","rb");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++)printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[t].number,tree[t].area,tree[t].name ,tree[t].xueming,tree[t].branch,tree[t].age,tree[t].day,tree[t].rank,tree[t].place);}}if(t==-1) printf("不存在该信息\n");}else if(choose==2){printf("输入所查编号:\n");scanf("%s",ans);t=-1;if(choose==2){for(i=0;i<MAX;i++)if(strcmp(ans,tree[i].number)==0){ t=i;fp=fopen("tree","rb");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++)printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[t].number,tree[t].area,tree[t].name ,tree[t].xueming,tree[t].branch,tree[t].age,tree[t].day,tree[t].rank,tree[t].place);}}if(t==-1) printf("不存在该信息\n");}else return ;}while(1);}void Display()/*浏览*/{FILE *fp;int i;fp=fopen("tree","rb");printf("\n\n\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,&tree[i].age,tree[i].day,&tree[i].rank,tree[i].place);}fclose(fp);}void Input()/*输入*/{FILE *fp;int n;fp=fopen("tree","wb");for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);printf("\n");if(n==-1){fclose(fp);return;}else{printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");scanf("%s %s %s %s %s %d %s %d %s",&tree[n].number,tree[n].area,tree[n].name,tree[n].x ueming,tree[n].branch,&tree[n].age,&tree[n].day,&tree[n].rank,tree[n].place);printf("\n");fwrite(&tree[n],sizeof(struct tree),1,fp);}fclose(fp);}void Modify()/*删除*/{FILE *fp;int i,flag,n,j;char s[5];fp=fopen("tree","rb+");rewind(fp);printf("\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);}n=i;printf("输入待删除古树编号:\n");scanf("%s",&s);for(i=0,flag=1;flag&&i<n;i++){if(strcmp(s,tree[i].number)==0){for(j=i;j<n-1;j++){strcpy(tree[j].area,tree[j+1].area);strcpy(tree[j].number,tree[j+1].number);strcpy(tree[j].name,tree[j+1].name);strcpy(tree[j].xueming,tree[j+1].xueming);strcpy(tree[j].branch,tree[j+1].branch);tree[j].age=tree[j+1].age;strcpy(tree[j].day,tree[j+1].day);tree[j].rank=tree[j+1].rank;strcpy(tree[j].place,tree[j+1].place);}flag=0;}if(!flag)n=n-1;elseprintf("没有此号\n");fp=fopen("tree","wb");for(i=0;i<n;i++)fwrite(&tree[i],sizeof(struct tree),1,fp);fclose(fp);fp=fopen("tree","r");printf("\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;i<n;i++){fread(&tree[i],sizeof(struct tree),1,fp);printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);printf("\n");}fclose(fp);}void Change()/*修改*/{FILE *fp;int i,n;char number[5];int flag=0;printf("请输入要修改的古树编号:");scanf("%d",&number);for(i=0;i<=MAX;i++)if(strcmp(number,tree[i].number)==0){printf("\n\n");printf(" 古树信息\n" );printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);printf("--------------------------------------------------------------------------------------------------\n\n");n=i;flag=1;break;}if(flag==0){printf("\n\n");printf(" 输入错误!\n");printf("\n");printf(" 请返回!\n");printf("\n");return;}printf("\n\n");fp=fopen("tree","rb+");fseek(fp,n*sizeof(struct tree),0);printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");scanf("%s %s %s %s %s %d %s %d %s",&tree[n].number,tree[n].area,tree[n].name,tree[n].x ueming,tree[n].branch,&tree[n].age,&tree[n].day,&tree[n].rank,tree[n].place);fwrite(&tree[i],sizeof(struct tree),1,fp);fclose(fp);fp=fopen("tree","rb");printf("\n\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(i=0;fread(&tree[i],sizeof(struct tree),1,fp)==1;i++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[i].number,tree[i].area,tree[i].name ,tree[i].xueming,tree[i].branch,tree[i].age,tree[i].day,tree[i].rank,tree[i].place);}printf("----------------------------------------------------------------------------------\n\n");fclose(fp);}void Inputcity()/* 城区基本信息录入*/{FILE *fp;int n;fp=fopen("city","wb");for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);printf("\n");if(n==-1){fclose(fp);return;}else{printf(" 区号区名主管部门地址电话负责人\n");scanf("%s %s %s %s %s %s",city[n].cityarea,city[n].areaname,city[n].management,city[n].ad dress,city[n].tel,city[n].worker);printf("\n");fwrite(&city[n],sizeof(struct city),1,fp);}}fclose(fp);}void Displaycity()/* 城区基本信息浏览*/{void Modify();/*删除*/FILE *fp;int i,j,m,t,choose,cho;char ans[7];fp=fopen("city","rb");printf("\n");printf(" 城区基本信息\n");printf("-------------------------------------------------------\n");printf(" 区号区名主管部门地址电话负责人\n");printf("-------------------------------------------------------\n");for(i=0;fread(&city[i],sizeof(struct city),1,fp)==1;i++){printf("%s %s %s %s %s %s\n",city[i].cityarea,city[i].areaname,city[i].management,city[i].address,city[i].tel,city[i].worker);}printf("\n");printf("要查询某城区的古树名木目录请按1(返回主菜单请按其他数字):\n");scanf("%d",&choose);if(choose==1){printf("输入区号:\n");scanf("%s",ans);t=-1;if(choose==1){for(j=0;j<MAX;j++)if(strcmp(ans,city[j].cityarea)==0){for(m=0;m<MAX;m++)if(strcmp(city[j].cityarea,tree[m].area)==0){t=m;fp=fopen("tree","rb");printf("\n");printf(" 古树信息\n");printf("--------------------------------------------------------------------------------\n");printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");printf("--------------------------------------------------------------------------------\n");for(m=0;fread(&tree[m],sizeof(struct tree),1,fp)==1;m++){printf("%5s %5s %8s %8s %8s %2d %8s %8d %8s\n",tree[t].number,tree[t].area,tree[t].name ,tree[t].xueming,tree[t].branch,tree[t].age,tree[t].day,tree[t].rank,tree[t].place);}}}printf("\n若要删除有关古树信息请按1(按其他数字返回):");scanf("%d",&cho);if(cho==1)Modify();else if(t==-1) printf("不存在该信息\n");}else return;}fclose(fp);}void Inputprotection()/* 古树名木养护基本信息录入*/{FILE *fp;int n;fp=fopen("protection","wb");for(n=0;n<MAX;n++){printf("n=%d 输入序号n(当输入n=-1时,返回),n=",n++);scanf("%d",&n);printf("\n");if(n==-1){fclose(fp);return;}else{printf("编号区号养护人养护日期养护措施生长状况\n");printf("------------------------------------------------------------\n");scanf("%s %s %s %s %s %s",pro[n].treenumber,pro[n].cityareas,pro[n].protecter,pro[n].data,pro[n ].measure,pro[n].state);printf("------------------------------------------------------------\n");fwrite(&pro[n],sizeof(struct protection),1,fp);}}fclose(fp);}void Changecity()/* 城区基本信息修改*/{FILE *fp;int i,n;char areanum[7];int flag=0;printf("请输入要修改信息的城区区号:");scanf("%s",&areanum);for(i=0;i<=MAX;i++)if(strcmp(areanum,city[i].cityarea)==0){printf("\n");printf(" 城区基本信息\n" );printf("------------------------------------------------------\n");printf(" 区号区名主管部门地址电话负责人");printf("-------------------------------------------------------\n");printf("%7s %s %s %s %s %s\n",city[i].cityarea,city[i].areaname,city[i].management,city[i].a ddress,city[i].tel,city[i].worker);printf("-----------------------------------------------------\n");n=i;flag=1;break;}if(flag==0){printf("\n");printf(" 输入错误!\n");printf("\n");printf(" 请返回!\n");printf("\n");return;}else{printf("\n");fp=fopen("city","rb+");fseek(fp,n*sizeof(struct city),0);printf(" 区号区名主管部门地址电话负责人\n");scanf("%s %s %s %s %s %s",city[n].cityarea,city[n].areaname,city[n].management,city[n].ad dress,city[n].tel,city[n].worker);fwrite(&city[i],sizeof(struct city),1,fp);fclose(fp);fp=fopen("city","rb");printf("\n\n\n\n");printf(" 城区基本信息\n ");printf("-------------------------------------------------------\n");printf(" 区号区名主管部门地址电话负责人\n");printf("-------------------------------------------------------\n");for(i=0;fread(&city[i],sizeof(struct city),1,fp)==1;i++){printf("%7s %s %s %s %s %s",city[i].cityarea,city[i].areaname,city[i].management,city[i].ad dress,city[i].tel,city[i].worker);}printf("-----------------------------------------------------\n");fclose(fp);}}void Displayprotection()/* 古树名木养护基本信息浏览*/{FILE *fp;int i;fp=fopen("protection","rb");printf("\n");printf(" 古树名木养护基本信息\n" );printf("-----------------------------------------------------------\n");for(i=0;fread(&pro[i],sizeof(struct protection),1,fp)==1;i++){printf("古树名木编号:%s\n",pro[i].treenumber);printf("区号: %s\n",pro[i].cityareas);printf("养护人: %s\n",pro[i].protecter);printf("养护日期:%s\n",pro[i].data);printf("养护措施:%s\n",pro[i].measure);printf("生长状况:%s\n",pro[i].state);printf("----------------------------------------------------------\n");}fclose(fp);}void Changeprotection()/* 古树名木养护基本信息修改*/{FILE *fp;int i,n;char number[5];int flag=0;printf("请输入要修改养护信息的古树名木编号:");scanf("%s",&number);for(i=0;i<=MAX;i++)if(strcmp(number,pro[i].treenumber)==0){printf("\n");printf(" 古树名木养护基本信息\n" );printf("-------------------------------------------------------------------------\n");printf("古树名木编号:%s\n",pro[i].treenumber);printf("区号:%s\n",pro[i].cityareas);printf("养护人:%s\n",pro[i].protecter);printf("养护日期:%s\n",pro[i].data);printf("养护措施:%s\n",pro[i].measure);printf("生长状况:%s\n",pro[i].state);printf("-------------------------------------------------------------------------\n");n=i;flag=1;break;}if(flag==0){printf("\n");printf(" 输入错误!\n");printf("\n");printf(" 请返回!\n");printf("\n");return;}printf("\n");fp=fopen("protection","rb+");fseek(fp,n*sizeof(struct protection),0);printf("编号: ");scanf("%s",pro[n].treenumber);printf("区号: ");scanf("%s",pro[n].cityareas);printf("养护人: ");scanf("%s",pro[n].protecter);printf("养护日期:");scanf("%s",pro[n].data);printf("养护措施:");scanf("%s",pro[n].measure);printf("生长状况:");scanf("%s",pro[n].state);fwrite(&pro[i],sizeof(struct protection),1,fp);fclose(fp);fp=fopen("protection","rb");printf("\n");printf(" 古树名木养护基本信息\n");printf("---------------------------------------------------------------\n");for(i=0;fread(&pro[i],sizeof(struct protection),1,fp)==1;i++){printf("编号:");printf("%s\n",pro[i].treenumber);printf("区号:");printf("%s\n",pro[i].cityareas);printf("养护人:");printf("%s\n",pro[i].protecter);printf("养护日期:");printf("%s\n",pro[i].data);printf("养护措施:");printf("%s\n",pro[i].measure);printf("生长状况:");printf("%s\n",pro[i].state);}printf("---------------------------------------------------------------\n");fclose(fp);}。

相关主题