1、重庆科技学院C语言程序设计课程设计报告第1章 设计题目的内容、任务及具体要求1.1 设计题目的内容明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识; 提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤; 提高撰写技术文档的能力.1.2 设计题目的任务主要利用c语言的文件操作能力设计开发一个小型的管理信息系统。至少具备如下功能:个人消费记录登记,消费信息查询和分类统计。操作界面要符合用户的一般习惯,图形或文本界面皆可1.3设计具体的要求可以对记录的信息进行添加,修改;能对历史记录进行查询与删
2、除;要求功能界面设计美观,清晰,方便操作.1).进一步掌握运用C进行程序设计的能力;2).进一步理解和运用面向过程程序设计的思想和方法;3).初步掌握开发一个小型实用系统的基本方法;4).学会调试一个较长程序的基本方法;5).学会利用互联网查找相关的知识并学习;第2章 总体设计思路2.1数据录入模块设计 本模块的设计主要包括三个函数,mainmenu(), Record (), Recordxinxi()函数 。mainmenu()函数主要是对录入数据时录入时录入方法的选择操作。函数在屏幕上显示选择主菜单,以供操作者进行录入选择。 Record ()函数的主要实现程序的初始建库,把数据写如到文
3、件中。其主要过程是一二进制写入文件打开文件,然后调用Recordxinxi()函数,将需要录入的数据从键盘输入到计算机内,然后写入到文件。2.2查询模块设计本模块主要设计Seekxinxi()函数、print()函数。Seekxinxi()函数主要是程序查询菜单的显示、输出你要查询的信息。查询菜单包括输入日期查询、输入名称查询、输入消费类别查询、查询所有历史记录信息。他首先在屏幕显示查询选择菜单,然后利用一个switch()选择语句来根据输入的信息以读的方式打开文件,进行读取。如果找到相应的信息,将该信息通过调用print函数将该信息输入到屏幕上,若没找到则显示当前无记录。Print()函数是
4、将信息输出到屏幕上。2.3信息删除模块设计本模块的设计是Deletexinxi()函数 ,它主要的功能是删除已有的信息、显示要删除的信息。Deletexinxi()函数先以录入信息的日期进行历史记录的查找,然后再根据自己要删除的文件输入记录信息的名称,即可将已有的信息删除掉。要是输入有错,屏幕就会显示无次信息,输入有错。要是输入的名称文件存在,屏幕将显示你是否确定删除此条记录,这样就达到删除的功能。2.4数据显示模块设计 本模块主要包括print()函数,主要用与输入数据的浏览,将录入文件中的数据输出到屏幕上,其过程是以读的方式打开文件,然后进行读取,将读到的结果显示在屏幕上。若文件中无记录,
5、则显示无此信息,输入有错。2.5修改已有信息模块设计本模块主要是Revisexinxi()函数,主要是先根据信息记录日期查找出历史信息记录,然后在历史信息记录中找出要修改的文件,输入消费名称,若输入有错,屏幕会出现无此信息输入有错的提示。若输入的名称正确,此时屏幕会出现提示,是否确定修改此条记录。这样即达到修改的目的。此函数的编写和信息的删除函数差不多,但要把已经修改的信息保持到文件中才能达到修改的目的。2.6总体框价图输入编号0) 退出输入记录日期信息录入信息修改信息删除信息查询信息保持信息读取录入具体信息输入修改信息确认修改输入记录日期输入名称删除确认删除选查询项目输日期输名称输类别查所有
6、输入保存名称输读取名称图2.6.1总体框架图第3章 各功能模块流程图信息录入模块3.1 主函数模块开始0) 结束选择输出信息信息录入模块信息修改模块信息删除模块信息查询模块信息保持模块信息读取模块 图3.1 总体程序模块运行流程图3.2 调用函数流程图3.2.1信息的删除变量和过程 在删除过程中,定义了变量I,j,op,和两个数组char name.char date。在删除过程中先是通过输入日期进行历史纪录查找,然后再通过查找结果输入名称进行删除。关键代码分析:该段代码为:int Deletexinxi() /信息删除函数 char date50,name30,op;int i,j;syst
7、em(color 5d);printf(*n);printf(请输入要删除的历史记录信息n);printf( 信息记录日期:); scanf(%s,date);for(i=0;izd;i+)if(strcmp(date,JiLui.date)=0)print(i);printf(请在以上选择要删除的纪录n);printf( 消费名称:);scanf(%s,name);for(i=0;izd;i+)if( strcmp(name,JiLui.name)=0)printf( 下面的记录将要被删除n);print(i);printf( 是否确定要删除这条记录(y/n)? );printf(n); o
8、p=getchar();if(op=Y | op=y)for(j=i;jtotalnum-1;j+)JiLuj=JiLuj+1;totalnum-=1;printf( 信息已删除!nn );return 1; printf( 无此信息,输入错误 !n);return 0; 该删除程序主要通过for循环语句,对输入的内容进行判断,删除是只需在历史查找出来的纪录中输入要删除的名称,在通过函数strcmp()进行判断信息是否输入正确,让后再提示是否进行删除操作。信息删除模块图图3.2信息删除模块流程图3.2.2信息查询模块图功能:该模块可以查询历史消费记录,查询过程有通过日期查询,通过名称查询,通过
9、类别查询,还可以查询所有历史记录。关键代码分析:void Seekxinxi() /信息查询函数int i;char opercode,info20;system(color 12);printf( 个人消费信息查询nnn);printf( 1.输入日期查询 2.输入名称查询 nn );printf( 3.输入消费类别查询 4.查询所有历史记录nn);opercode=getchar(); switch(opercode)case 1:printf(输编日期查询:);scanf(%s,info);for(i=0;izd;i+)if(strcmp(info,JiLui.date)=0)print
10、(i);elseprintf(n当前无记录!nnn);break;break;case 2:printf(输名称查询:);scanf(%s,info);for(i=0;izd;i+)if(strcmp(info,JiLui.name)=0)print(i);elseprintf(n当前无记录!nnn);break;break;case 3:printf(输消费类别查询:);scanf(%s,info);for(i=0;izd;i+)if(strcmp(info,JiLui.type)=0)print(i);elseprintf(n当前无记录!nnn);break;break;case 4:if
11、(totalnum !=0 )printf(所有历史记录显示如下n); printf(*n); for(i=0;itotalnum;i+) print(i);elseprintf(n当前无记录!nnn);break;default:printf(n输入错误,请检查!n); 该函数也是先通过定义switch(opercode)函数,用4条case语句来对信息进行查询,最后通过调用函数print(i)来读查询结果进行输出。流程图:图3.2.2信息查询模块流程图上图的流程图上点击IF后的流程图如图3.2.2.1所示:图3.2.2.1查询模块流程图3.2.3信息修改流程图功能:该函数可对一记录的历史信
12、息进行修改。关键代码分析:int Revisexinxi() /信息修改函数 char date50,name30,op;FOOD pp;int i; system(cls);system(color 0c);printf(*n);printf(请在下面输入要修改的消费信息nn);printf( 信息记录日期:); scanf(%s,date);for(i=0;izd;i+) if(strcmp(date,JiLui.date)=0) print(i);printf(请在以上选择要修改信息的消费名称n);printf( 消费名称:);scanf(%s,name);printf(n);for(i
13、=0;idate); printf(请输入消费名称:n);gets(pp-name);printf(请输入所属类别:n);gets(pp-type);printf(请输入消费次数(次):n);gets(pp-amount); printf(请输入消费所花金额(元):n);gets(pp-price); printf(请输入情况描述:n);gets(pp-describe); void print(int index) if(index=0&indexzd)printf( n);printf( 信息记录日期:%-15sn,JiLuindex.date);getchar();printf( 消费名
14、称:%-15sn,JiLuindex.name);printf( 消费次数:%-15sn,JiLuindex.amount);printf( 消费所花金额:%-15sn,JiLuindex.price);printf( 所属类别:%-15sn,JiLuindex.type);printf( 情况描述:%-15sn,JiLuindex.describe);printf( n);void Recordxinxi() system(cls); printf(*n);if(totalnumzd-1)printf( 请输入消费信息:n);Record(&(JiLutotalnum);totalnum+;
15、 system(cls); elseprintf( 信息已满!n ); system(cls);printf(*nnn);6.3信息删除程序代码int Deletexinxi() char date50,name30,op;int i,j;system(color 5d);printf(*n);printf(请输入要删除的历史记录信息n);printf( 信息记录日期:); scanf(%s,date);for(i=0;izd;i+)if(strcmp(date,JiLui.date)=0)print(i);printf(请在以上选择要删除的纪录n);printf( 消费名称:);scanf(
16、%s,name);for(i=0;izd;i+)if( strcmp(name,JiLui.name)=0)printf( 下面的记录将要被删除n);print(i);printf( 是否确定要删除这条记录(y/n)? );printf(n); op=getchar();if(op=Y | op=y)for(j=i;jtotalnum-1;j+)JiLuj=JiLuj+1;totalnum-=1;printf( 信息已删除!nn );return 1; printf( 无此信息,输入错误 !n);return 0;6.4数据查询程序代码void Seekxinxi() int i;char o
17、percode,info20;system(color 12);printf( 个人消费信息查询nnn);printf( 1.输入日期查询 2.输入名称查询 nn );printf( 3.输入消费类别查询 4.查询所有历史记录nn);opercode=getchar(); switch(opercode)case 1:printf(输编日期查询:);scanf(%s,info);for(i=0;izd;i+)if(strcmp(info,JiLui.date)=0)print(i);break;case 2:printf(输名称查询:);scanf(%s,info);for(i=0;izd;i
18、+)if(strcmp(info,JiLui.name)=0)print(i);break;case 3:printf(输消费类别查询:);scanf(%s,info);for(i=0;izd;i+)if(strcmp(info,JiLui.type)=0)print(i);break;case 4:if(totalnum !=0 )printf(所有历史记录显示如下n); printf(*n); for(i=0;itotalnum;i+) print(i);elseprintf(n当前无记录!nnn);break;default:printf(n输入错误,请检查!n);6.5修改程序代码in
19、t Revisexinxi() /信息修改函数 char date50,name30,op;FOOD pp;int i; system(cls);system(color 0c);printf(*n);printf(请在下面输入要修改的消费信息nn);printf( 信息记录日期:); scanf(%s,date);for(i=0;izd;i+) if(strcmp(date,JiLui.date)=0) print(i);printf(请在以上选择要修改信息的消费名称n);printf( 消费名称:);scanf(%s,name);printf(n);for(i=0;izd;i+)if(strcmp(name,JiLui.name)=0)printf( 下面的记录将要被修改!nn);print(i);printf( n请输入修改后的记录值:nn); Record(&pp);printf( 是否确定修改此条记录(y/n)? n ); op=getchar();if(op=Y | op=y)JiLui=pp;printf( 信息已修改!nnn);return 1;printf( 无此信息,输入有错!nn);return 0;35
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100