C语言实训实验报告选课 银行系统.docx
《C语言实训实验报告选课 银行系统.docx》由会员分享,可在线阅读,更多相关《C语言实训实验报告选课 银行系统.docx(61页珍藏版)》请在冰豆网上搜索。
![C语言实训实验报告选课 银行系统.docx](https://file1.bdocx.com/fileroot1/2022-12/7/08f5af48-4751-47d4-8cb1-ade6c11cb06e/08f5af48-4751-47d4-8cb1-ade6c11cb06e1.gif)
C语言实训实验报告选课银行系统
北京联合大学
课程设计报告
课程名称:
C语言程序设计课设
项目名称:
电子生词库系统
学院:
管理学院专业:
信息管理与信息系统
姓名:
学号:
指导教师:
成绩:
2010年6月8日
第1部分课程设计题目与要求
1.问题描述
根据需要,建立属于自己的生词库,使用起来方便。
生词选自本人常需要的单词中,对于英语单词,给出中文含义,对于中文单词给出英文含义。
2.功能要求
循环显示如图(a)所示的主菜单。
在主菜单中选择1:
创建生词库。
用文件建立一个单词库,中英文单词均有,对于英文单词,给出中文解释,对于中文单词给出英文解释。
请输入选项编号(0~5)
1—创建生词库
2—显示词库
3—编辑词库
4—查找生词
5—单词测试
6—程序帮助
(a)电子生词库主菜单
0—退出系统
请输入选项编号(0~4)
1—显示所有单词
2—显示中文单词
3—显示英文单词
4—返回
(b)显示词库子菜单
0—退出系统
请输入选项编号(0~4)
1—添加新词
2—删除旧词
3—修改旧词
4—返回
(c)编辑词库子菜单
0—退出系统
在主菜单中选择2:
进入如图(b)所示的子菜单,并显示词库。
显示所有单词和单词数、所有中文单词和单词数、所有英文单词和单词数,显示英文单词时按字母从小到大的顺序排列。
在子菜单选择4,返回主菜单;选择0,退出整个系统。
在主菜单中选择3:
首先确认密码,然后进入如图(c)所示的子菜单,并编辑词库,如添加新词、删除旧词、修改旧词。
在子菜单选择4,返回主菜单;选择0,退出整个系统。
在主菜单中选择4:
查找生词。
显示所要查找的单词和其含义。
在主菜单中选择5:
单词测试(此项为本组创新功能)。
随即从单词库中选出10个要考试的单词进行测试,正确6个即可以通过。
在主菜单中选择6:
程序帮助(此项为本组额外添加功能)。
如图(d)所示的子菜单。
选择1,查询使用说明;选择2,查询设计人员和联系方式;选择3,返回主菜单;选择4,退出整个系统。
请输入选项编号(0~4)
1—使用说明
2—设计人员
3—返回主菜单
0—退出系统
(d)程序帮助子菜单
在主菜单中选择0:
显示结束信息:
“感谢使用本软件!
”,按任意键后,退出本系统。
在本章中需要实现的功能要求:
(1)设计如图(a)所示的主菜单。
(2)选择2时,显示如图(b)所示的子菜单。
(3)选择3时,首先确认密码,然后显示如图(c)所示的子菜单。
主菜单和子菜单能够循环出现,每一项菜单执行之后,询问用户是否继续进行。
从子菜单可以返回主菜单。
3.任务分工
本组组员3名:
项雨婷,赵帅阳,刘向(组长)。
其中,项雨婷主要负责(3)编辑词库和(4)查找生词,赵帅阳主要负责
(1)创建生词库
(2)显示词库,刘向主要负责(5)创新功能(即是单词测试)和(6)程序帮助。
调试与测试为本组全部成员共同完成。
流程图为刘向完成。
实训报告为本组成员共同完成。
第2部分《》的设计与功能实现
1.总体设计
细化后的电子生词库模块图:
头文件名:
#include
#include
#include
#include
#include
被调用的函数:
voidmyprint1();/*主菜单显示函数*/
voidmyprint2();/*显示词库子菜单显示函数*/
voidmyprint3();/*编辑词库子菜单显示函数*/
voidmycreate();/*创建生词库函数*/
voidmydisplay();/*显示词库函数*/
voiddisplay_all_words();/*被mydisplay调用,显示所有单词,并计数*/
voiddisplay_chinese();/*被mydisplay调用,显示所有中文单词,并计数*/
voiddisplay_english();/*被mydisplay调用,显示所有英文单词,并计数*/
voidmyedit();/*编辑词库函数*/
voidmyadd();/*被myedit调用,添加新词*/
voidmydelete();/*被myedit调用,删除旧词*/
voidmydel_Ch();/*被myedit调用,被delete调用,按中文删除*/
voidmydel_En();/*被myedit调用,被delete调用,按英文删除*/
voidmymodify();/*被myedit调用,修改旧词*/
voidmysearch();/*查找单词函数*/
voidsch_Ch();/*被search调用,按中文查找*/
voidsch_En();/*被search调用,按英文查找*/
voidmyexam();/*单词测试函数*/
voidmyhelp();/*程序帮助函数*/
voidmyusehelp();/*被myhelp调用,使用说明*/
voidmypeoplehelp();/*被myhelp调用,设计人员*/
voidmyprintf0();/*被myhelp调用,程序帮助子菜单显示函数*/
(主模块的流程图)
(创建电子生词库模块的流程图)
(显示电子生词库模块的流程图)
(显示所有单词模块的流程图)
(显示所有中文单词模块的流程图)
(显示所有英文单词模块的流程图)
(编辑电子生词库模块的流程图)
(添加新词模块的流程图)
(删除单词模块的流程图)
(按中文删除单词模块的流程图)
(按英文删除单词模块的流程图)
(修改旧词模块的流程图)
(查找单词模块的流程图)
按中文查找模块的流程图
按英文查找模块的流程图
(单词测试模块的流程图)
(程序帮助模块的流程图)
2.数据结构
structword
{
charCh[100];charEn[100];
};
其中,Ch[100]是拿来放置中文单词,En[100]是拿来放置英文单词。
structwordtemp={0}
structwordtemp={0},record[100]={0}
structwordwords[1000]={0}
structword*find=NULL
structwordctoe[100]
其中,temp是结构体变量,用于暂时存放输入的中英文单词。
其它的类似temp,均是存放单词的作用。
3.算法设计与程序代码设计
主函数:
main()
{
charchoose='\0',yes_no='\0';
do
{system("cls");
myprint1();/*显示菜单*/
printf("\n");
printf("\t\t");
choose=getch();
switch(choose)
{
case'1':
mycreate();break;/*创建生词库*/
case'2':
mydisplay();break;/*显示*/
case'3':
myedit();break;/*编辑*/
case'4':
mysearch();break;/*查找生词*/
case'5':
myexam();break;/*单词测试*/
case'6':
myhelp();break;/*程序帮助*/
case'0':
printf("感谢您使用本软件!
\n");exit(0);
default:
printf("\n\t\t%c为非法选项!
\n",choose);
}
printf("\n\t\t要返回主菜单吗(Y/N)?
\n");
do
{yes_no=getch();
}while(yes_no!
='y'&&yes_no!
='Y'&&yes_no!
='n'&&yes_no!
='N');
}while(yes_no=='Y'||yes_no=='y');
}
voidmycreate()
{
inti=1;
structwordtemp={0};
FILE*fp=NULL;
fp=fopen("sck.dat","w");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");return;}
system("cls");
printf("\n输入第一个单词:
\n");
printf("中文输入(用#结束):
");
do
{
gets(temp.Ch);
}
while(strcmp(temp.Ch,"")==0);
printf("英文(用#结束):
");
gets(temp.En);
while(temp.Ch[0]!
='#'&&temp.En[0]!
='#')
{
fprintf(fp,"%15s%15s\n",temp.Ch,temp.En);
i++;
printf("\n输入第%d个单词:
\n",i);
printf("中文输入(用#结束):
");
do
{
gets(temp.Ch);
}
while(strcmp(temp.Ch,"")==0);
printf("英文(用#结束):
");
gets(temp.En);
}
fclose(fp);
}
注:
完整程序请详见附录A,这里省略。
测试与调试,均为本组成员合力完成。
现在展示调试的过程
(主模块的测试与调试)
4.测试与调试
(创建生词库模块的测试与调试1:
开始)
(创建生词库模块的测试与调试2:
结束)
(显示词库模块的测试与调试1:
显示子菜单)
(显示词库模块的测试与调试2:
显示所有单词)
(显示词库模块的测试与调试3:
显示所有中文单词)
(显示词库模块的测试与调试4:
显示所有英文单词)
(编辑词库模块的测试与调试1:
输入密码)
(编辑词库模块的测试与调试2:
密码错误)
(编辑词库模块的测试与调试3:
显示编辑词库子菜单)
(编辑词库模块的测试与调试4:
添加新词)
(编辑词库模块的测试与调试5:
删除旧词之没有这个词)
(编辑词库模块的测试与调试6:
删除旧词之按中文删除)
(编辑词库模块的测试与调试7:
删除旧词之按英文删除之没有这个词)
(编辑词库模块的测试与调试8:
删除旧词之按照英文删除)
(编辑词库模块的测试与调试9:
修改旧词之无这个单词)
(编辑词库模块的测试与调试10:
修改旧词之有这个单词)
(查找生词模块之按照中文查询)
(查询生词模块之按照英文查询)
(单词测试之调试前的错误)
(单词测试调试后解决错误)
(程序帮助模块之显示子菜单)
(程序帮助模块之使用说明)
(退出系统)
第3部分课程设计总结
1.个人总结
《C语言程序设计实训》总结
——0911030202班赵帅阳
《C语言程序设计实训》课程已经过了一个星期,我们团队所设计的电子生词库系统也已经完成,我负责的是创建生词库和显示词库的部分。
在编写显示词库程序时,刚开始没有什么头绪不知道该怎么编写,看着其他同学已经在编写他们的程序了,我有些慌张怕编写不完拖累了我们团队。
但之后我慢慢冷静下来,开始整理编写程序的线索,通过查看书籍和相关资料终于编写出我想要的程序。
在创建生词库的时候,起初由于程序编程有些混乱,运行错误但也检查不出错误在哪些地方,在和团队伙伴们一起讨论之后重新编写了程序,调试之后也可以运行,我们都很高兴,在这之后,我们团队的伙伴们又陆续的把其他程序也编写好,并合并在一起,终于提前完成了大体的程序。
在之后的调试过程中,我们的程序出现了两百多个错误和许多警告,我们逐步的去检查修改程序,但也碰到了许多我们无法解决的问题,幸好有老师的帮助才让我们继续下一个问题的解决。
从这次实训中我体会到了团队的力量。
刚开始的时候我本想以我自己的能力去把整个程序都编写出来,但目前这是不可能的。
在我编写好显示词库部分的时候,伙伴们也完后了他们的程序,而且,他们真的很棒!
我们一起完成了基本的程序编写,一起调试,一起解决问题,这让我看到了我们团队的团结与活力,有幸能和伙伴们一起完成这个系统程序的编写,我真的很开心。
而且,这也让我更好的掌握了C语言的运用,体会到“学以致用”的道理。
我相信,我们的团队是最好的,也是最棒的!
《C语言程序设计实训》总结
——0911030202班项雨婷
经过一个多星期的实训,我们组认真完成了电子生词库的程序设计,而我自己负责的主函数部分以及编辑词库和查找生词部分也成功的完成了。
其实主函数是整个程序里面最简单的部分,没有复杂的do_while语句,没有特别难写的句子,所以整个程序下来我觉得编主函数最轻松。
到了编辑生词库时就遇到了很多麻烦了,比如最初我们的修改旧词程序就出错了,即使你改正了会录入但原来的词却还在,怎么也删不掉。
所以,我花了整整一下午在宿舍改编这部分,谁知道最后竟是因为我把指针弄错了。
不过心情还是很好,因为毕竟是我自己找到的。
其实还有一些问题,比如创建部分,系统一直在重复输入中,怎么也退不出来,然后,我请求了我们队员赵帅阳的帮助,终于成功的运行出来。
我觉得,共同合作是我们编程过程中获得的最大收获,一个庞大的程序是由我们三个编写的无数小程序小函数组成的,哪怕其中一个细微的地方出错都可能影响我们总程序的运行。
所以,三个人共同努力是必不可少的。
我想,我的队友们都和我有一样的看法,所以我们很有默契,实训过程中,我们都会为一点小小的成功而欢呼雀跃,这也带动了我们的气氛,从而使我们组显得很活跃。
现在,一个那么大的程序摆在我面前,我感到巨大的荣誉敢和自豪感正在上升,我也相信经过这么久的奋斗我们组是最棒的!
《C语言程序设计实训》总结
——0911030202班刘向
回忆我和我的组员们经历过的两个礼拜,我想我可以很自信的对自己乃至对所有人说,这两个星期,我没有浪费。
关于我学到了什么,这点是我个人总结里面详细要说的东西。
我认为我在两方面得到了提高:
第一是C语言程序设计上面,第二则是在社会生活乃至精神生活上面。
我认为这两个方面,也是我们这次实训要达到的目的。
我想成绩不是最重要的,重要的是我们能够有所提高,也就是我认为在我说的那两个方面上要有所提高。
我有所体悟,所以我说时间没有白费。
C语言程序设计,得项雨婷和赵帅阳的信任和支持,让我负责了创新功能——单词测试。
一开始在单词测试上面遇到了很多困难,到后面逐渐解决,也是在两个人的热心帮助下,逐渐克服乃至完善的。
对此,我想我说我很感动。
怎么说呢,我们组,C程序设计上面,肯定是一流的水平,虽然不说是第一。
但是有个东西肯定我们拿第一,那就是我们组的成员。
这点从他们让我当了组长,就可以看出。
事实上,在我们组,我的技术水平不是最高的,甚至还是垫底的,然而他们却让我当了组长,这我一直是认为他们的——帮助。
因为最后我们毕竟是要看成绩的。
——这些,种种的,让我看到了团队的力量和团队的信念。
这又让我感动不已。
所以,和他们一样,我对他们充满了热爱,我也坚信,甚至比他们还坚信的坚信,我们组员是最好的!
2.结束语
感谢孙力红老师的指导,和同学们热心的帮助,我们组将会再接再厉,更上一层楼!
附录A程序清单
#include
#include
#include
#include
#include
structword
{
charCh[100];charEn[100];
};
voidmyprint1();
voidmyprint2();
voidmyprint3();
voidmycreate();
voidmydisplay();
voiddisplay_all_words();/*被mydisplay调用*/
voiddisplay_chinese();/*被mydisplay调用*/
voiddisplay_english();/*被mydisplay调用*/
voidmyedit();
voidmyadd();/*被myedit调用*/
voidmydelete();/*被myedit调用*/
voidmydel_Ch();/*被myedit调用,被delete调用*/
voidmydel_En();/*被myedit调用,被delete调用*/
voidmymodify();/*被myedit调用*/
voidmysearch();
voidsch_Ch();/*被search调用*/
voidsch_En();/*被search调用*/
voidmyexam();
voidmyhelp();
voidmyusehelp();/*被myhelp调用*/
voidmypeoplehelp();/*被myhelp调用*/
voidmyprintf0();/*被myhelp调用*/
main()
{
charchoose='\0',yes_no='\0';
do
{system("cls");
myprint1();/*显示菜单*/
printf("\n");
printf("\t\t");
choose=getch();
switch(choose)
{
case'1':
mycreate();break;/*创建生词库*/
case'2':
mydisplay();break;/*显示*/
case'3':
myedit();break;/*编辑*/
case'4':
mysearch();break;/*查找生词*/
case'5':
myexam();break;/*单词测试*/
case'6':
myhelp();break;/*程序帮助*/
case'0':
printf("感谢您使用本软件!
\n");exit(0);
default:
printf("\n\t\t%c为非法选项!
\n",choose);
}
printf("\n\t\t要返回主菜单吗(Y/N)?
\n");
do
{yes_no=getch();
}while(yes_no!
='y'&&yes_no!
='Y'&&yes_no!
='n'&&yes_no!
='N');
}while(yes_no=='Y'||yes_no=='y');
}
voidmyprint1()
{
printf("|---------------------------------------|\n");
printf("|请输入选项编号(0~5):
|\n");
printf("|---------------------------------------|\n");
printf("|1—创建生词库|\n");
printf("|2—显示词库|\n");
printf("|3—编辑词库|\n");
printf("|4—查找生词|\n");
printf("|5—单词测试|\n");
printf("|6—程序帮助|\n");
printf("|0—退出系统|\n");
printf("|---------------------------------------|\n");
}
voidmycreate()
{
inti=1;
structwordtemp={0};
FILE*fp=NULL;
fp=fopen("sck.dat","w");
if(fp==NULL)
{
printf("\n打开文件失败!
\n");return;}
system("cls");
printf("\n输入第一个单词:
\n");
printf("中文输入(用#结束):
");
do
{
gets(temp.Ch);
}
while(strcmp(temp.Ch,"")==0);
printf("英文(用#结束):
");
gets(temp.En);
while(temp.Ch[0]!
='#'&&temp.En[0]!
='#')
{
fprintf(fp,"%15s%15s\n",temp.Ch,temp.En);
i++;
printf("\n输入第%d个单词:
\n",i);
printf("中文输入(用#结束):
");
do
{
gets(temp.Ch);
}
while(strcmp(temp.Ch,"")==0);
printf("英文(用#结束):
");
gets(temp.En);
}
fclose(fp);
}
voidmydisplay()/*显示词库*/
{
charchoose2='\0',yes_no2='\0';
do
{
system("cls");
myprint2();
printf("");
choose2=getch();
switch(choose2)
{
case'1':
display_all_words();break;
case'2':
display_chinese();break;
case'3':
display_english();break;
case'4':
return;
case'0':
printf("感谢您使用本软件!
\n");exit(0);
default:
printf("\n%c为非法选项!
\n",choose2);break;
}
printf("\n要返回显示词库吗(Y/N)?
\n");
do
{
yes_no2=getche();
if(yes_no2!
='Y'&&yes_no2!
='y'&&yes_no2!
='N'&&yes_no2!
='n')
printf("\n\t\t%c为非法选项\n",yes_no2);
}while(yes_no2!
='Y'&&yes_no2!
='y'&&yes_no2!
='N'&&ye