C语言课程设计报告模版.docx
《C语言课程设计报告模版.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告模版.docx(19页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告模版
C语言课程设计报告
课程名称:
C语言课程设计
教师姓名:
学生姓名:
学生学号:
专业:
计算机应用技术
所在院系:
信息与智能工程系
日期:
1.课程设计题目:
实验设备管理系统设计
【要求】
实验设备信息包括:
设备编号,设备种类(如:
微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:
(1)能够完成对设备的录入和修改。
(2)对设备进行分类统计。
(3)设备的查询。
【提示】
需求分析:
实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的插叙需要提供查找操作,设备的查询可根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询;另外还要提供键盘式选择菜单以实现功能选择。
2.程序设计思路
根据需求分析,可将系统的设计分为四个模块:
输入模块,修改模块,统计模块,查询模块;实验室设备信息用文件存储,提供文件的输入输出;建立实验设备信息结构体,结构体成员包括:
设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期。
(1)主函数设计
主函数提供输入,处理,输出部分的函数调用,其中各功能模块用菜单方式选择,即主函数里显示一系列功能选项,判断后,是否调用个功能模块用了switch()选择功能。
(2)各功能模块设计
输入模块:
定义了文件型指针变量,打开文件输入用户要输入设备的个数,输入设备的各项详细信息,将输入的信息存储到文件的中;用到fopen(文件名,使用文件方式);fclose(文件指针);fprintf(文件指针,格式字符串,输出列表)。
修改模块:
输入要修改的设备编号,是否找到该设备资料,如果找到记录,调用修改函数,对该设备的信息进行修改;如果没有找到,返回主菜单。
在寻找的过程中用了字符串的比较strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0。
如果字符串1>字符串2,则函数值为一个正整数。
如果字符串1<字符串2,则函数值为一个负整数。
比较时,只能用if(strcmp(str1,str2)>0)。
还用到feof()若到文件末尾,函数值为“真”。
统计模块:
打开文件,并对文件中的设备信息进行统计计算类型数目,总价格,平均价格;此程序中将char类型转化成double型,用到了pc=atof();fscanf(文件指针,格式字符串,输入列表);同样也用到了字符串的比较strcmp(字符串1,字符串2),feof()。
查询模块:
询问用户想要选择的搜索方式,分三种类型查询(设备名称,设备型号,设备价格),再用switch()的选择功能,每一种类型有用到了feof()控制循环,字符串的比较strcmp(字符串1,字符串2),
3.功能模块图
(1)输入模块
(2)修改模块
(3)统计模块
(4)查询模块
4.数据结构设计
此程序中用到了
(1)基本类型:
1)常量的使用#defineN50,
2)整型(int),
3)字符型(char),
4)浮点型(双精度double)。
(2)构造类型:
1)数组类型(equipCode[10],equipType[20],equipName[20]
equipPrice[10],equipOver[20],equipYesno[10],equipTime[10])
2)结构体类型:
structequip
{
charequipCode[10];
charequipType[20];
charequipName[20];
charequipPrice[10];
charequipOver[20];
charequipYesno[10];
charequipTime[10];
}equ[N],temp;
(3)指针类型:
FILE*fp,文件型指针变量,fp是一个指向FLIE类型结构
的指针变量。
5.功能模块设计
6.程序代码
#include"stdio.h"
#include
#include
#defineN50
structequip
{
charequipCode[10];
charequipType[20];
charequipName[20];
charequipPrice[10];
charequipOver[20];
charequipYesno[10];
charequipTime[10];
}equ[N],temp;
intenter()//输入记录
{
FILE*fp;
intc;
printf("**************************************\n");
printf("Addnewequiment\n");
printf("**************************************\n");
if((fp=fopen("test.txt","a"))==NULL)
{
printf("Cannotopenfile!
\n");
}
printf("------------------\n");
printf("请输入设备ID号:
\n");
scanf("%s",temp.equipCode);
printf("请输入设备类型\n");
scanf("%s",temp.equipType);
printf("请输入设备名称\n");
scanf("%s",temp.equipName);
printf("请输入设备价格\n");
scanf("%s",temp.equipPrice);
printf("请输入设备购买日期\n");
scanf("%s",temp.equipTime);
printf("请输入设备报废日期\n");
scanf("%s",temp.equipOver);
printf("请输入设备是否报废\n");
scanf("%s",temp.equipYesno);
fprintf(fp,"%s%s%s%s%s%s%s\n",
temp.equipCode,
temp.equipType,
temp.equipName,
temp.equipPrice,
temp.equipTime,
temp.equipOver,
temp.equipYesno);
fclose(fp);
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YES,AdditionSuccessful\n");
printf("2.NO,Iwanttoquitnow\n");
scanf("%d",&c);
if(c==1)return(0);
if(c==2)return(0);
}
intmodifty()//修改记录
{
charcode[10];
inti,j;
intc;
FILE*fp;
printf("*************************************\n");
printf("Modiftyfortheequiment\n");
printf("*************************************\n");
printf("Pleaseinputtheequipcodeformodiftying\n");
scanf("%s",code);
printf("------------------------------------\n");
if((fp=fopen("test.txt","r"))==NULL)
{
printf("\nCannotopentest!
\n");
}
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%s%s%s%s",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
if(strcmp(equ[i].equipCode,code)==0)
{
printf("------------------\n");
printf("InputnewequipCode\n");
scanf("%s",equ[i].equipCode);
printf("Inputnewequiptype\n");
scanf("%s",equ[i].equipType);
printf("Inputnewequipname\n");
scanf("%s",equ[i].equipName);
printf("InputequipPrice\n");
scanf("%s",equ[i].equipPrice);
printf("Inputneweuiptime\n");
scanf("%s",equ[i].equipTime);
printf("Inputneweuipover\n");
scanf("%s",equ[i].equipOver)
printf("Inputneweuipyesno\n");
scanf("%s",equ[i].equipYesno);
}
}
fclose(fp);
j=i;
if((fp=fopen("test.txt","w"))==NULL)
{
printf("\nCannotopentest!
\n");
}
for(i=0;i{
printf("\nwrite!
\n");
fprintf(fp,"%s%s%s%s%s%s%s",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
}
fclose(fp);
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YESModifySuccessful\n");
printf("2.NO,quitnow\n");
scanf("%d",&c);
if(c==1)return(0);
if(c==2)return(0);
}
intdisp()//统计记录
{
intc;
doublesum=0;
intcount=0;
doubleaver=0;
chartype[20];
inti;
FILE*fp;
if((fp=fopen("test.txt","r"))==NULL)
{
printf("\nWrong\n");
}
printf("pleaseinputequipType:
\n");
scanf("%s",type);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%s%s%s%s",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
printf("\nOK!
\n");
printf("%s,%s,%s,%s,%s,%s,%s\n",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
if(strcmp(equ[i].equipType,type)==0)
{
doublepc=atof(equ[i].equipPrice);//char转换为double
count++;
sum+=pc;
aver=sum/count;
}
}
fclose(fp);
printf("----------Statist--Result-----------");
printf("\n\n这种类型的数目:
%d",count);
printf("\n\n总的价格:
%lf",sum);
printf("\n\n平均价格:
%lf",aver);
printf("\nexit");
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YESDispSuccessful\n");
printf("2.NO,quitnow.\n");
scanf("%d",&c);
if(c==1)return(0);
if(c==2)return(0);
}
intsearch()//查询记录
{
charcode[10];
charname[20];
charprice[10];
intsel;
intc;
FILE*fp;
inti;
fp=fopen("test.txt","r");
if(fp==NULL)exit(0);
printf("pleasechoosethewayofsearch:
\n\n");
printf("1.searchbyequipCode\n\n");
printf("2.searchbyequipName\n\n");
printf("3.searchbyequipPrice\n\n");
printf("0.return\n\n");
printf("pleaseinputnumber0-5:
");
scanf("%d",&sel);
if(sel==0)exit(0);
switch(sel)
{
case0:
exit(0);break;
case1:
printf("pleaseinputequipCode:
\n");
scanf("%s",code);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%s%s%s%s",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
if(strcmp(equ[i].equipCode,code)==0)
{
printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");
printf("\n%s,%s,%s,%s,%s,%s,%s\n",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
}
}
break;
case2:
printf("pleaseinputequipName:
\n");
scanf("%s",name);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%s%s%s%s",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
if(strcmp(equ[i].equipName,code)==0)
{
printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");
printf("\n%s,%s,%s,%s,%s,%s,%s\n",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
}
}
break;
case3:
printf("pleaseinputequipPrice:
\n");
scanf("%d",&price);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%s%s%s%s",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
if(strcmp(price,equ[i].equipPrice)==0)
{
printf("\nequipCode,equipType,equipName,equipPrice,euipTime,euipOver,euipYesno\n");
printf("\n%s,%s,%s,%s,%s,%s,%s\n",
equ[i].equipCode,
equ[i].equipType,
equ[i].equipName,
equ[i].equipPrice,
equ[i].equipTime,
equ[i].equipOver,
equ[i].equipYesno);
}
}
break;
}
fclose(fp);
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");