1、学校代码: 学 号: Hefei University 课程项目设计报告 BACHELOR DISSERTATION 报告题目: 档案管理系统的设计与实现 年级专业(班级): 14电子信息工程2班 导师姓名: 李祎 完成时间:
2、 2015/6/18 档案管理系统界面如下,当选择一个功能号时可以执行相应的功能。其中数据录入模块功能是录入人员工号、单位、姓名和部门编号;数据显示模块功能是显示当前所有的人员工号、单位、姓名和部门编号;数据排序功能是将当前所有的人员按工号、姓名、单位和部门编号排序,再进行信息保存和调入。 欢迎进入档案管理系统 1.基本信息录入 2.基本信息显示 3.基本信息查询 4.基本信息
3、排序 5.基本信息保存 6.基本信息调入 7.退出系统 请选择功能号(1,2,3,4,5,6,7) 功能介绍: 信息录入功能:输入人员的基本信息,例如工号、姓名、年龄等; 信息显示功能:显示所输入的人员档案的信息; 信息查询功能:通过输入人员的工号来快速查询所需要知道的人员的档案信息。 信息排序功能:将所输入的人员信息按照工号从小到大的顺序进行排序; 信息保存功能:将所输入的人员信息数据以TXT文本的形式保存;
4、 信息调入功能:将保存的数据重新调入系统中; *主界面 欢迎使用档案管理系统 1数据输入 2数据显示 3数据排序 4数据保存 5数据调入 6数据查询 7退出系统 请选择功能(1,2,3,4,5,6,7,8): *输入界面 请输入数据(工号/姓名/单位/部门编号) *显示
5、界面 序号 工号 姓名 单位 部门编号 1 1101 chenchen hfuu 124 1. InfoManagerMain.cpp 主模块main ①模块功能:选择一个功能菜单,执行相应的功能菜单。 ②输入输出:在系统内部没有输入输出。 形式:int main() 归属:InfoManagerMain ③解决思路:通过应用s
6、witch语句,分别将各个功能菜单连接起来。再通过do循环语句, 使程序可以反复进行。
④算法提纲:
⑤模块代码:
#include
7、
case 1:
inputInfo(infoAll,100,&num);
cout< 8、 break;
case 5:
saveInfo(infoAll,100,num);
cout< 9、
①模块功能:显示程序界面。
②输入输出
形式:int choiceMenu(void)
归属:Menu
③解决思路:
④算法提纲:
⑤模块代码
#include 10、
cout<<" 1 基本信息录入 2 基本信息显示 *"< 11、 *"< 12、
④算法步骤:
第一步,判断人数是否等于n,选择Y或者N。
第二步,选择Y继续输入工号、姓名、单位和部门编号,选择N停止输入。
⑤模块代码:
void inputInfo(Info *pInfoAll,int n,int *pNum)
{
if (*pNum==n)
{
cout<<"对不起,人数已满";
}
else
{
cout<<"要输入数据吗(y/n)";
char choice;
cin>>choice;
while (choice=='y')
{
cout<<"请输入数据工号/姓名/单位/单位和部 13、门编号):";
cin>>pInfoAll[*pNum].fNo>>pInfoAll[*pNum].fName>>pInfoAll[*pNum].fUnit>>pInfoAll[*pNum].fUaDeNum;
*pNum=*pNum+1;
cout<<"要输入数据吗?(y/n)";
cin>>choice;
}
}
}
displayInfo
①模块功能:对输入数据进行显示。
②输入输出:
形式:void displayInfo(Info *pInfoAll,int n,int num);
归属:InfoManager
14、
③解决思路:先显示工号、姓名、单位和部门编号。通过循环语句,对输入的所有工号、姓名、单位和部门编号进行输出。
④算法步骤:第一步:定义变量i,若i小于真实人数,输入第一个工号、姓名、单位和部门编号。
第二步:令i递增,根据循环语句,对输入数据进行显示。
⑤模块代码:
void displayInfo(Info *pInfoAll,int n,int num)
{
cout<<"\t"<<"您要查询的资料显示结果如下:"< 15、<<"\t"<<"工号\t"<<"姓名\t"<<"单位\t"<<"单位和部门编号\t"< 16、显示结束:"< 17、"< 18、 **"< 19、 {
cout<<"\t"<< "工号是"< 20、1000];
for(i=0;i 21、
}
break;
case 3:
{
char unit[1000];
cout<<"请输入单位:";
cin>>unit[1000];
for(i=0;i 22、foAll[i].fUaDeNum;
break;
}
else
cout<<"您要找的人不存在"< 23、
④算法步骤:第一步:进行选择
第二步:根据选择可以进行工号或姓名或单位或部门编号排序。。
⑤模块代码:
void sortInfo(Info *pInfoAll,int n,int num)
{
int choice;
cout<<"*************************************************************"< 24、4 按单位+部门编号排序 **"< 25、
switch(choice)
{
case 1:
{
for (int i=0;i<=num-2;i++)
{
for (int j=i+1;j<=num-1;j++)
{
if (strcmp(pInfoAll[i].fName,pInfoAll[j].fName)>0)
{
Info t;
t=pInfoAll[i];pInfoAll[i]=pInfoAll[j];pInfoAll[j]=t;
}
}
}
}
brea 26、k;
case 2:
{
for (int i=0;i<=num-2;i++)
{
for (int j=i+1;j<=num-1;j++)
{
if (pInfoAll[i].fNo>pInfoAll[j].fNo)
{
Info t;
t=pInfoAll[i];pInfoAll[i]=pInfoAll[j];pInfoAll[j]=t;
}
}
}
}
break;
case 3:
{
for (int i=0;i<=num 27、2;i++)
{
for (int j=i+1;j<=num-1;j++)
{
if (strcmp(pInfoAll[i].fUnit,pInfoAll[j].fUnit)>0)
{
Info t;
t=pInfoAll[i];pInfoAll[i]=pInfoAll[j];pInfoAll[j]=t;
}
}
}
}
break;
case 4:
{
for (int i=0;i<=num-2;i++)
{
for 28、int j=i+1;j<=num-1;j++)
{
if (pInfoAll[i].fUaDeNum>pInfoAll[j].fUaDeNum)
{
Info t;
t=pInfoAll[i];pInfoAll[i]=pInfoAll[j];pInfoAll[j]=t;
}
}
}
}
break;
case 5:
exit(0);
default:cout<<"提示出错"< 29、入输出:
形式:void saveInfo(Info *pInfoAll,int n,int num)
归属:InfoManager
③解决思路:对输入的数据进行保存。
④算法步骤:
第一步:定义一个Info.txt文件。
第二步:分别读入第i个人的工号、姓名、单位和部门编号排序;
第三步:利用循环语句,将第i个数据后的所有数据都读入Info.txt文件中。
⑤模块代码:
void saveInfo(Info *pInfoAll,int n,int num)
{
FILE *pF;
pF=fopen("Info.txt","w");
for(int 30、i=0;i 31、一步:打开Info.txt文件,进行读取数据。
第二步:当第i个数据有四个变量时,i自增;
第三步:利用循环语句,当第i个数据有四个变量时,将第i个数据后的所有数据都读取出来;
第四步:关闭Info.txt文件。
⑤模块代码:
void loadInfo(Info *pInfoAll,int n,int *pNum)
{
int i=0;
FILE *pF=fopen("Info.txt","r");
while(fscanf(pF,"%d %s %s %d \n",&pInfoAll[i].fNo,pInfoAll[i].fName,pInfoAll[ 32、i].fUnit,&pInfoAll[i].fUaDeNum)==4)
{
i++;
}
*pNum=i;
fclose(pF);
}
4.Menu.h
#ifndef Menu_h
#define Menu_h
int choiceMenu(void);
#endif
5. InfoManager.h
#ifndef InfoManager_h
#define InfoManager_h
#include"Info.h"
void inputInfo(Info *pInfoAll,int n,int*pNum);
void disp 33、layInfo(Info *pInfoAll,int n,int num);
void searchInfo(Info *pInfoAll,int n,int num);
void sortInfo(Info *pInfoAll,int n,int num);
void saveInfo(Info *pInfoAll,int n,int num);
void loadInfo(Info *pInfoAll,int n,int *pNum);
#endif;
6. Info.h
struct Info
{
int fNo;
char fName[100];
char 34、 fUnit[100];
int fDeNum;
};
#endif;
问题编号
出错信息
改正办法
1
c:\documents and settings\administrator\桌面\infomanagerproj\infomanager.cpp(9) : error C2100: illegal indirection
在num前面加*号
2
c:\documents and settings\administrator\桌面\infomanagerproj\infomanager.cpp(161) : error C2065: 'strcmp 35、' : undeclared identifier
在int main 之前加#include 36、最终我们都克服了困难完成了任务,当我们看到从一开始的二十几个错误变为后来的一两个错误到最后完全没有错误了时,内心有了一种说不出的喜悦与激动。总之,通过本次实验,我们了解到了我们需要掌握的知识,比如说文件操作、指针的使用、数组的运用、循环的使用等重要的知识都需要用入其中,并灵活运用,还要有一定的团队合作意识才能编出这个程序。在遇到问题时应沉着思考,积极讨论,这样才能尽早地完成任务。
课程学习心得
焦姣心得:在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为期一周的时间中,我的感受是:C语言实训和平时上课所接触的程序是有很大不同的,所经受的考验和克服的困难 37、是平时所无法比拟的。好在同组的搭档们精诚合作,分工明确,有问题共同解决,攻克了C语言实训的复杂程序。在这里,我作为其中的参与者,感触良多。在这次实训中,我对C语言有了一个更深的了解认识,也对这个学期学的知识得到巩固,还尝试运行编程,每次运行程序成功,让我对下面的项目就充满信心。通过自己与同学合作编写程序,最终把最初的理论知识转化基本技能。这次的实训,使我对C语言的学习产生浓厚的兴趣。还是这次实训,最令人激动的就是合作做项目,虽然那只是一个很小很小的项目。实训中深切体会到了老师认真负责的伟大的精神和热情为同学指导的促学方式,这种教学让我们自己学会了自学,学会了去看懂别人的代码。
通过这次实训, 38、也使我们发现了许多问题。在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C语言,也学好用C语言编写一个按要求的系统。还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。
首先我要继续学习好C语言的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。
总之,这一切都成为我记忆里面 39、的一个篇章,更是在C语言编程上的一个里程碑。
朱孟亭心得:通过这学期的C语言学习,我对C语言程序有了更深的认识,受益匪浅。刚上课的时候,看到复杂的程序很茫然,但在指导老师的帮助下,我慢慢进入了状态,很顺利的理解并能上机操作了。在学习过程中,我意识到了预习的重要性,不仅可以先对要学的知识有一定程度的了解,而且可以发现问题,上课时可以重点解决问题。看书是很重要的,上机操作更是关键。有时候想出的程序和实际操作出的程序是不一样的,我深深体会到了实践的重要性。在学习中不断相互促进、不断进步,让我们了解到团队合作的重要性。学习语言是需要技巧的,无论是哪种语言,里面都是有规律的。对于计算机语言来说,我 40、认为应该先理解,然后上机去实现它,因为实践是检验真理的唯一标准。C++语言课程是一门实践性很强的课程,一定要动手多写设计、编写程序才能有所进步。在实践教学中必须做到循序渐进,对所学的每一部分内容都应该要求自己完成一定数量的实验内容。每部分的上机习题必须认真完成。自己编写的程序一定要到机器上去实现,通过调试程序来修订语法错误,排除逻辑错误,进而提高编程能力,通过做一定量的习题,可以积累一定的经验,真正的收获更多是思想上的,让我认识程序的复杂,“学无止境”头一次认识的这么深刻,察觉自己的不足。以后的学习生活真的要踏踏实实,不断努力。
陈青青心得:通过c语言实训,让我加深了对c语言的了 41、解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过这学期的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。这次实训有很大的收获,让我对c语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对c语言有了浓厚的兴趣和更深层的认识。c语言是一个有序的学习,学了最基本的替换,然后扩展到循环 42、嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一 43、头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,c语言还是很有意思的课程。自己亲自动手编写程序让我增加了对c语言程序开发环境的了解,在上课的时候老师就讲,学习c语言最重要的是学习c语言的逻辑思维,不管以后从事什么行业,学习c语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用c语言,但是拥有扎实的c语言基础是对工作很有用的。这些都要感谢老师的教导。
汪翠翠心得:我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很 44、棘手,毕竟,万事开头难嘛。由于时间的关系,我们的这次实习课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。上机实验是学习程序设计语言必不可少的实习环节,特别是c语言灵活、简洁,更需要通过编程的实习来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。有时你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。 45、有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
InfomanagerMain.cpp
#include 46、h"
#include"Info.h"
int main()
{
Info infoAll[100];
int num=0;
while(1)
{
switch(choiceMenu())
{
case 1:
inputInfo(infoAll,100,&num);
cout< 47、100,num);
cout< 48、break;
case 7:
exit(0);
default:cout<<"提示出错"< 49、
if (*pNum==n)
{
cout<<"对不起,人数已满";
}
else
{
cout<<"要输入数据吗(y/n)";
char choice;
cin>>choice;
while (choice=='y')
{
cout<<"(请输入数据工号/姓名/单位/部门编号):";
cin>>pInfoAll[*pNum].fNo>>pInfoAll[*pNum].fName>>pInfoAll[*pNum].fUnit>>pInfoAll[*pNum].fDeNum;
*pNum=*pNum+1;
50、 cout<<"要输入数据吗?(y/n)";
cin>>choice;
}
}
}
void displayInfo(Info *pInfoAll,int n,int num)
{
cout<<"\t"<<"您要查询的资料显示结果如下:"<






