C语言课设之行编辑系统文档格式.docx
《C语言课设之行编辑系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课设之行编辑系统文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言课设之行编辑系统文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/10/df1f9d63-e254-4c5c-96e1-ec26c0da9f74/df1f9d63-e254-4c5c-96e1-ec26c0da9f741.gif)
现将一星期的实习内容及结果分析分列如下:
简单的行编辑器
一.题目要求
1.设置一个简单的行编辑器,每行以回车结束。
2.数据以文件形式存储。
3.编辑器具有查找,替代,修改数据的功能。
二.需求分析
根据题目要求,数据以文件的形式存储,所以应提供文件的输入,输出等操作;
还需要文件具有查找,替换,修改数据的功能。
三.总体设计
根据上面的需求分析,可以将这个系统的设计分为如下七大模块:
编辑,查找,修改,,删除,替换,保存,退出。
四.详细设计
1.主函数
为了各模块的独立性,主函数一般设计得比较简单,本系统主要用主函数打开上次保存的数据和进入主菜单函数
流程图
main()
{
FILE*fp;
fp=fopen("
record.txt"
"
w"
);
/*在C:
\DocumentsandSettings\Administrator里建立一个"
记事本*/
fclose(fp);
menu();
}
程序/*********************************主函数**
************************************/
2.主菜单函数
流程图程序
voidmenu()
intw,n;
do
clrscr();
printf("
\n"
\t\t*************************\n"
\t\t\n"
\t\tWelcometothemagazineordersystem!
^_^\n"
\n\n\t\t*********************************************\n\n"
\t\t1:
add_new_subscriber\n"
\t\t2:
browse\n"
\t\t3:
statistic\n"
\t\t4:
exit\n\n"
\t\t*********************************************\n\n"
Choiceyournumber(1-4):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
4)w=1;
elsew=0;
while(w==1);
/***************选择功能****************/
switch(n)
{
case1:
add();
break;
/*增加新订户记录*/
case2:
search();
/*查找过期的订户记录并删除*/
case3:
statistic();
/*统计*/
case4:
exit();
/*退出*/
}
3.各功能模块函数
1)/*******************************************添加模块***************************************************/
voidadd()
intt,i,m;
t=load_record();
Howmanygroupsinformationdoyouwanttoadd?
Enterthenumber:
[]\b\b\b"
m);
for(i=0;
i<
m;
i++)
\nInput%dthsubscriberrecord.\n"
i+1);
input(t+i);
/*调用输入函数*/
save(t+m);
/*调用保存函数保存t+m组数据*/
/**********清屏************/
/*返回登陆界面*/
voidinput(inti)
Pleaseinput:
\nNamesexaddressphone_numberunit_priceamounttime_imit\n"
%s%s%s%s%s%s%s"
order[i].name,&
order[i].sex,&
order[i].addr,&
order[i].phone_number,&
order[i].unit_price,&
order[i].amount,&
order[i].time_limit);
2)/*****************************************统计模块**************************************************/
statistic()
intt;
Theamountofsubscriberis[%d]\b\b\b"
t);
printf_n(t);
\n\n\nPressanykeytogoback...\n\n"
getch();
voidprintf_one(inti)/*显示一个仪器记录的函数*/
%-10s%-5s%-10s%-11s%-4s%-3s%-10s\n\n"
order[i].name,order[i].sex,order[i].addr,order[i].phone_number,order[i].unit_price,order[i].amount,&
voidprintf_n(intn)/*显示n个仪器记录的函数*/
intj;
Namesexaddressphone_numberpriceamounttime_imit\n\n"
for(j=0;
j<
n;
j++)
if((j+1)%10==0)/*控制显示,每屏显示10行*/
printf("
\n\nPassanykeytocontinue..."
getch();
puts("
\n\n"
printf_one(j);
/*调用显示一个仪器记录的函数*/
3)/****************************查询模块********************************************/
voidsearch()
chardate[11],str[2];
intt,i,sum=0;
Pleaseinputthedate:
[]\b\b\b\b\b\b\b\b\b\b\b"
%s"
date);
if((fp=fopen("
))==NULL)/*以只写方式打开*/
\nCannotopenfile\n"
exit(0);
clrscr();
for(i=0;
t;
if(strcmp(order[i].time_limit,date)<
0)
sum++;
printf_one(i);
/**********把符合条件的记录显示出来************************/
\n\nTherecordisoutofdate!
"
\n\nDoyouwanttodeleteit'
sinformation?
('
Y'
or'
N'
):
scanf("
str);
;
if(strcmp(str,"
Y"
)==0||strcmp(str,"
y"
)==0)
continue;
fwrite(&
order[i],sizeof(structmagazine),1,fp);
if(sum==0)
***************************************************\n\n"
Sorry!
Cannotfindtheequipmentwhichyouwantto.\n\n"
\n\n\nPressanykeytogobacktheformerstep...\n"
menu();
}各功能模块
1.getch();
4)退出模块
程序
voidmyexit(char(*lines)[MAXC])
charc;
Savethelinestothefile?
(y/n)"
fflush(stdin);
c=getchar();
if(c=='
n'
)exit
(1);
savetofile(lines);
exit
(1);
4公共函数
intload_record()/***加载仪器信息并计算记录仪器个数的函数***/
inti;
if((fp=fopen("
r"
))==NULL)/*以只读方式打开*/
!
feof(fp);
i++)/*从文件中读入数据并保存在结构体数组中*/
fread(&
return(i-1);
voidsave(intn)/*n表示保存n组数据,m表示保存在哪个文件夹里*/
/*以只写方式打开*/
if(fp==NULL)
exit(0);
i++)
{
fwrite(&
}
fclose(fp);
}
综上全程序如下
#include<
stdio.h>
#definemax20
structmagazine
charname[11];
charsex[6];
charaddr[11];
charphone_number[12];
charunit_price[5];
charamount[4];
chartime_limit[11];
}order[max];
voidsave(intn);
intload_record();
voidsearch();
voidprintf_n(intn);
voidprintf_one(inti);
voidinput(inti);
statitic();
voidadd();
voidmenu();
/*******************************************添加模块***************************************************/
/*****************************************统计模块**************************************************/
/****************************查询模块********************************************/
/****************************公共函数********************************************/
\nCannotopenfile\n