城区古树名木信息管理系统《C语言程序设计》课程设计.docx
《城区古树名木信息管理系统《C语言程序设计》课程设计.docx》由会员分享,可在线阅读,更多相关《城区古树名木信息管理系统《C语言程序设计》课程设计.docx(36页珍藏版)》请在冰豆网上搜索。
城区古树名木信息管理系统《C语言程序设计》课程设计
福建工程学院国脉信息学院
《C语言程序设计》课程设计
实验报告
题目:
城区古树名木信息管理系统
专业:
电子信息工程
班级:
(2)班
学号:
08300102xx
姓名:
苏水哥
成绩:
完成日期:
2011年4月30日
一、课程设计目的
1)对C各部分知识的综合应用能力
2)提高程序设计的能力
3)提升对于较大程序的抽象分析设计能力
4)学习调试和测试的技巧
二、课程设计内容
1)设计一个城区古树名木信息管理系统;
2)要求可以实现各种基本数据的录入、修改、插入、删除、查询等;
3)可以编译成一个应用系统程序,形成一个软件系统。
三、数据结构设计及用法说明
1、本程序使用到了三个struct,分别是
(1)structtree/*古树名木养护信息*/
{charnumber[5];/*编号*/
chararea[10];/*区号*/
charname[100];/*树名*/
charxueming[100];/*学名*/
charbranch[100];/*科属*/
intage;/*树龄*/
charday[11];/*确认时间*/
intrank;/*保护级别*/
charplace[100];/*栽植地点*/
}tree[MAX];
(2)structcity/*城区信息*/
{charcityarea[7];/*区号*/
charareaname[20];/*区名*/
charmanagement[30];/*主管部门*/
charaddress[30];/*地址*/
chartel[13];/*电话*/
charworker[20];/*负责人*/
}city[MAX];
(3)structprotection/*古树名木养护信息*/
{charcityareas[7];/*区号*/
chartreenumber[5];/*古树名木编号*/
charprotecter[30];/*养护人*/
chardata[11];/*养护日期*/
charmeasure[30];/*养护措施*/
charstate[20];/*生长状况*/
}pro[MAX];
2、本段程序在main函数中嵌套了所有子函数,包括“voidInput();/*古树基本信息录入*/”、“voidDisplay();/*古树信息浏览*/、“voidFind();/*古树信息查询*/”、“voidModify();/*删除*/”、“voidChange();/*修改*/”、“voidInputcity();/*城区信息录入*/”、“voidDisplaycity();/*城区信息浏览*/”、“voidChangecity();/*城区信息修改*/”、“voidInputprotection();/*养护信息录入*/”、“voidDisplayprotection();/*养护信息浏览*/”、“voidChangeprotection()/*修改*/”。
四、系统结构图
五、功能模块说明
古树名木信息的录入、查询、修改、删除模块如下:
1)、列表模块2)、录入模块
3)查询模块
4).修改模块5).删除模块
*城区信息模块与古树名木养护信息的录入、查询、删除模块雷同。
六、运行情况
1)、主菜单
2)录入古树名木信息
3)浏览古树名木信息
4)查询古树名木信息(按古树名查找)
(按编号查找)
5)删除古树信息
(删除后的信息浏览)
6)录入城区信息
7)城区信息浏览
7)从城区信息中查询某城区的古树名木
8)从城区信息中删除某古树名木
9)录入古树名木养护信息
10)浏览古树名木养护信息
11)修改古树名木养护信息
(修改后的古树名木养护信息浏览)
12)退出系统
七、设计体会和反思
回顾此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。
同时,在李老师的身上我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
八、参考文献
[1]谭浩强.C程序设计(第三版)[M].北京:
清华大学出版社,2005.
[2]戴建华,等.C语言开发技术详解[M].北京:
电子工业出版社,2009.
九、附录:
程序清单
#include
#include
#include
#include
#defineMAX1000
structtree
{
charnumber[5];/*编号*/
chararea[10];/*区号*/
charname[100];/*树名*/
charxueming[100];/*学名*/
charbranch[100];/*科属*/
intage;/*树龄*/
charday[11];/*确认时间*/
intrank;/*保护级别*/
charplace[100];/*栽植地点*/
}tree[MAX];
structcity
{
charcityarea[7];/*区号*/
charareaname[20];/*区名*/
charmanagement[30];/*主管部门*/
charaddress[30];/*地址*/
chartel[13];/*电话*/
charworker[20];/*负责人*/
}city[MAX];
structprotection
{
charcityareas[7];/*区号*/
chartreenumber[5];/*古树名木编号*/
charprotecter[30];/*养护人*/
chardata[11];/*养护日期*/
charmeasure[30];/*养护措施*/
charstate[20];/*生长状况*/
}pro[MAX];
main()/*主函数*/
{
voidInput();/*古树名木基本信息录入*/
voidDisplay();/*浏览*/
voidFind();/*查询*/
voidModify();/*删除*/
voidChange();/*修改*/
voidInputcity();/*城区基本信息录入*/
voidDisplaycity();/*城区基本信息浏览*/
voidChangecity();/*城区基本信息修改*/
voidInputprotection();/*古树名木养护基本信息录入*/
voidDisplayprotection();/*古树名木养护基本信息浏览*/
voidChangeprotection();/*古树名木养护基本信息修改*/
intm,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)
{
case1:
Input();break;
case2:
Display();break;
case3:
Find();break;
case4:
Modify();break;
case5:
Change();break;
case6:
Inputcity();break;
case7:
Displaycity();break;
case8:
Changecity();break;
case9:
Inputprotection();break;
case10:
Displayprotection();break;
case11:
Changeprotection();break;
case12:
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");
}
}
voidFind()/*查询*/
{
FILE*fp;
inti;
intchoose,t;
charans[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{
t=i;
fp=fopen("tree","rb");
for(i=0;fread(&tree[i],sizeof(structtree),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");
}
elseif(choose==2)
{
printf("输入所查编号:
\n");
scanf("%s",ans);
t=-1;
if(choose==2)
{
for(i=0;iif(strcmp(ans,tree[i].number)==0)
{t=i;
fp=fopen("tree","rb");
for(i=0;fread(&tree[i],sizeof(structtree),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");
}
elsereturn;
}while
(1);
}
voidDisplay()/*浏览*/
{
FILE*fp;
inti;
fp=fopen("tree","rb");
printf("\n\n\n\n");
printf("古树信息\n");
printf("--------------------------------------------------------------------------------\n");
printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");
printf("--------------------------------------------------------------------------------\n");
for(i=0;fread(&tree[i],sizeof(structtree),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);
}
voidInput()/*输入*/
{
FILE*fp;
intn;
fp=fopen("tree","wb");
for(n=0;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].xueming,tree[n].branch,&tree[n].age,&tree[n].day,&tree[n].rank,tree[n].place);
printf("\n");
fwrite(&tree[n],sizeof(structtree),1,fp);
}
}
fclose(fp);
}
voidModify()/*删除*/
{
FILE*fp;
inti,flag,n,j;
chars[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(structtree),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{
if(strcmp(s,tree[i].number)==0)
{
for(j=i;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;
else
printf("没有此号\n");
fp=fopen("tree","wb");
for(i=0;ifwrite(&tree[i],sizeof(structtree),1,fp);
fclose(fp);
fp=fopen("tree","r");
printf("\n\n");
printf("古树信息\n");
printf("--------------------------------------------------------------------------------\n");
printf("编号区号树名学名科属树龄确认时间保护级别栽植地点\n");
printf("--------------------------------------------------------------------------------\n");
for(i=0;i{
fread(&tree[i],sizeof(structtree),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);
}
voidChange()/*修改*/
{
FILE*fp;
inti,n;
charnumber[5];
intflag=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("------------------------------------------------------------------