C++实验报告书_第1页
C++实验报告书_第2页
C++实验报告书_第3页
C++实验报告书_第4页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中南大学本科生课程设计 ( 实践 ) 任务书、设计报告(C+程序设计 )题目学生管理系统学生姓名蔡云伟指导教师李大扬学院材料科学与工程专业班级材料国际 1401 班学生学号0605140118计算机基础教学实验中心2015年6月4日目 录一、程序设计目的1二、程序功能介绍1三、程序设计11)程序结构12)模块说明1四、调试与分析11)程序调试过程12)程序的不足1五课程设计总结1参考文献1人员信息管理系统摘要 通过设计程序实现对人员的快速信息化管理关键词输入输出,数据化,智能查询一 程序设计目的针对本学期 C+课程,运用 Microsoft Visual C+6.0完成对设计题目的编写、调试、

2、运行,进一步掌握面向进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧, 巩固所学理论知识, 同时使理论与实践结合,提高查阅资料、独立思考、团队合作的能力。二 程序功能介绍本组课程设计的课题是“人员信息管理系统设计” , 本系统以菜单方式工作,有一名管理员可以进行人员编号、姓名、年龄、性别、出生年月、地址、电话、 E-mail 等信息的录入,并对人员信息进行浏览,还有按编号和姓名查询删除及修改人员信息的功能。三 程序设计设计思路:将人员信息定义为一个student 类,在类中包含私有数据成员 int num 、string name 、string sex、string politic、

3、stringaddress ,分别表示编号,姓名,年龄,性别,出生年月,地址,电话, E-mail 等。公有成员函数包括:set( ) ,add( ) ,del( ) ,change( ) ,research( ) ,show( ) ,分别用来实现对人员信息的数据初始录入、增加数据、删除数据、修改数据、查询数据、显示所有数据功能。然后定义了一个 menu( ) 菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。 主函数是一个程序必不可少的,在主函数中,使用一个 switch 语句来选择调用主菜单中的各个功能函数。1)程序结构结构框图信息管理系统信息输入信息添加信息删除信息修改信息查询显

4、示结构流程该人员信息管理系统包括信息输入、添加、删除、修改、查询和显示功能。所包含的人员信息包括编号,姓名,年龄,性别,出生年月,地址等。所以程序中包括公有成员函数set();void add();voiddel();void change();void search();void display();其作用分别为初始化信息,第一次对信息的录入;添加人员信息;删除某人员信息;修改某人员信息;查询某人员信息;显示全部学生信息。同时定义 menu( )菜单函数,作用为使系统以菜单方式工作。最后定义主函数,使用一个switch 语句来选择调用主菜单中的各个功能函数。2)模块说明( 1)、set ()

5、函数,初始化信息,第一次对信息的录入。内容包括输入编号、姓名、性别、年龄、电话、地址、电子邮件、出生年月。首先定义可以存信息总量为 200。然后从 1 开始依次录入相应个数人员的信息。当人员姓名为“ 0”时停止输入。( 2)、change(); 函数,修改某人员信息,选择要修改人员信息的对 象 , 即 第k个 数 据 , 然 后 依 次 对intnumk;stringnamek,sexk,agek,numberk,addressk,e_mailk,birthk 等数据进行修改,结束修改后,系统将提示“已完成修改”。( 3)、add()函数,添加人员信息,以追加的方式录入信息,直接将信息追加到以

6、前文件的末尾。 具体操作依次输入相应的数据, 并且追加到之前的文件中去。完成后系统将进行提示。( 4)、del ()函数,删除人员信息,选择要删除的信息,系统将进行将数组储存的数据取出到文件中的操作。( 5)、menu()菜单函数。菜单函数将对系统使用者进行提示,显示内容为系统的功能以及各功能相对应的数字键。 例如,在菜单下输入“4”,系统将进入信息修改界面, 并且出现“你想修改第几个数据”的提示。输入“ 0”可返回。( 6) 、search ()函数,查询人员信息,查询人员信息可以通过编号和姓名两种方式进行。在此系统使用了选择语句功能,输入“a”进入编号查询,输入“b”则进入姓名查询,输入其

7、他内容系统将进行提示“没有此选项” 。操作完成后,系统将显示该名人员的全部信息。(7) 、display ()函数,显示全部人员的所有信息。(8) 、switch ()函数,程序主函数。使用者在对主函数进行相应操作后,该函数将调用上述函数, case“1”至“6”分别对应信息的输入、添加、删除、修改、查询和显示功能。 Case“ 0”对应功能为中止当前操作。四 调试与分析1)程序调试过程:工作进程22232425262728293012蔡云伟主函数以及调试添加主界面调试添加、显示、最终调声明文件调试修改整合全部程序及分配的设计删除文件试及答工作初始化文件显示文件文件初步调试辩刘嘉雪添加文件删除

8、文件修改文件所谓程序调试是指对程序的查错和排错。我们调试程序经过以下几个步骤:1. 先进行人工检查。在程序以后,我们对程序进行人工检查,发现程序设计人员由于疏忽而造成的多数错误。 为了更有效地进行人工检查,我们所编的程序力求做到以下几点A 、应当采用结构化程序方法编程B、并尽可能多加注释,以帮助理解每段程序的作用C、在编写复杂的程序时不将全部语句都写在main 函数中,而多利用函数,用一个函数来实现一个单独的功能。2在人工检查无误后,进行上机调试。在编译时给出语法错误的信息,根据提示的信息具体找出程序中出错之处并改正之。并注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误

9、的话应当到上一行再找。3在改正语法错误后, 程序经过连接就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。4运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法A、将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。B、 如果实在找不到错误 , 可以采用“分段检查”的方法。在程序不同的位置设几个printf函数语句 , 输出有关变量的值 , 往下检查。直到找到在哪一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”, 就可能发现错误所在。总之,程序调试是一

10、项细致、较为繁琐的工作,需要下功夫,动脑子,善于累积经验。2)程序的不足本程序设计存在的不足在于:存储信息时会会出现以下问题:1)在程序设计时,由于将数据定义为字符串等操作,在其中需要使用到循环语句时, 会出现一些小问题, 如系统无法成功提取相应组数据。2)添加或修改信息时,之前已储存的信息可能会被新进信息所覆盖,而出现无法调用之前的数据的情况。五 课程设计总结经过了一个学期的学习和上机实践,使我们对 C+语言有了更深的认识和了解。通过对本程序的编写,我们基本掌握了软件的运用,同时也学会了如何分析设计调试等过程中遇到的问题, 并耐心细心对待问题,一步步去解决它。 学会了如何将繁杂的工作细化处理

11、,合理分配到每个人。在共同编写程序的过程中,我们发扬团队合作精神,一起查阅资料编写代码,探讨编程方法和技巧,相互学习。当然设计中还遇到很多棘手的技术性问题, 面对这些以我们自身能力无法解决的问题,我们积极寻求其他同学还有老师的帮助,最终完成了设计。总的来说,我们运用了自己的知识, 凭借团队的力量完成了理论到实践的结合,使我们受益良多,同时激发了我们日后深入学习 C+语言的兴趣。参考文献1 C+语言程序设计(第三版) ,郑莉,清华大学出版社 ,20042 C+语言程序设计案例教程,郑莉,清华大学出版社 ,20053 C+程序设计教程,钱能主编,清华大学出版社, 1999.44 C+程序设计,谭浩

12、强,清华大学出版社, 20045 C+程序设计实践指导,谭浩强,清华大学出版社6 C+程序设计课程设计,刘振安,机械工业出版社, 2004.8程序代码:#include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;#define M 200/可以存信息总量int N=0;/人员总量class studentpublic:student();void set();/初始化信息,第一次对信息的录入void add();/添加人员信息voi

13、d del();/删除某人员信息void change();/修改某人员信息void search();/查询某人员信息void display();/显示全部人员信息int CountLines(char *filename);private:static int num;string name,sex,number,address,e_mail,age,birth;int student:num=110;student:student() / 初始化文件int student:CountLines(char *filename)ifstream ReadFile;int n=0;char

14、line512;string temp;ReadFile.open(filename,ios:in);/ios:in表示以只读的方式读取文件if(ReadFile.fail()/文件打开失败: 返回0return 0;else/文件存在while(getline(ReadFile,temp)n+;return n;ReadFile.close();void student:set()int i;string setname,setsex,setnumber,setaddress,sete_mail,setage,setbirth;ofstream outfile;outfile.open(&q

15、uot;student.txt",ios:out);/-打开文件-if(!outfile)cerr<<" open error"<<endl;exit(1);/-依次录入相应个数的人员信息-for(i=0;i<M;i+)cout<<"当姓名输入为'0'时,停止输入!"<<endl;cout<<" 请输入姓名: "<<endl;cin>>setname;if(setname="0") break;if(

16、setname!="0")num+;outfile<<num<<" "outfile<<setname<<" "cout<<" 请输入性别: "<<endl;cin>>setsex;outfile<<setsex<<" "cout<<" 请输入年龄: "<<endl;cin>>setage;outfile<<setage&

17、lt;<" "cout<<" 请输入电话: "<<endl;cin>>setnumber;outfile<<setnumber<<" "cout<<" 请输入住址:"<<endl;cin>>setaddress;outfile<<setaddress<<" "cout<<" 请输入 E-mail : "<<endl;cin>

18、;>sete_mail;outfile<<sete_mail<<" "cout<<" 请输入出生年月:"<<endl;cin>>setbirth;outfile<<setbirth<<endl;outfile.close();/-关闭文件 -/ 添加文件void student:add()string addname,addsex,addnumber,addaddress,adde_mail,addbirth,addage;/-以追加的方式录入信息,直接将信息追加到

19、以前文件的末尾-ofstream outfile("student.txt",ios:app);if(!outfile)cerr<<" open error"<<endl;exit(1);N=N+1;/-依次输入相应的数据,并且追加到之前的文件中去-cout<<" 请输入您要添加的数据"<<endl;num+;outfile<<num<<" "cout<<" 请输入姓名: "<<endl;cin>

20、;>addname;outfile<<addname<<" "cout<<" 请输入性别: "<<endl;cin>>addsex;outfile<<addsex<<" "cout<<" 请输入年龄: "<<endl;cin>>addage;outfile<<addage<<" "cout<<" 请输入电话: "&l

21、t;<endl;cin>>addnumber;outfile<<addnumber<<" "cout<<" 请输入住址: "<<endl;cin>>addaddress;outfile<<addaddress;cout<<" 请输入 E-mail : "<<endl;cin>>adde_mail;outfile<<adde_mail<<" "cout<<&

22、quot; 请输入出生年月:"<<endl;cin>>addbirth;outfile<<addbirth<<endl;outfile.close();cout<<" 已添加成功! "<<endl;/ 删除文件void student:del()N=CountLines("student.txt");int k,i;int numM;string nameM,sexM,ageM,numberM,addressM,e_mailM,birthM; ifstream infile

23、("student.txt",ios:in);if(!infile)cerr<<" open error"<<endl;exit(1);cout<<"="<<endl;cout<<"编号姓名性别年龄电话住址E-mail出生年月"<<endl;for(i=0;i<N;i+)infile>>numi;cout<<numi;infile>>namei;cout<<'t'<&l

24、t;namei;infile>>sexi;cout<<'t'<<sexi;infile>>agei;cout<<'t'<<agei;infile>>numberi;cout<<'t'<<numberi;infile>>addressi;cout<<'t'<<addressi;infile>>e_maili;cout<<'t'<<e_mai

25、li;infile>>birthi;cout<<'t'<<birthi<<endl;cout<<"="<<endl;cout<<" 你想删除第几个?"<<endl;cin>>k;k=k-1;infile.close();ofstream outfile("student.txt",ios:out);if(!outfile)cerr<<" open error"<<end

26、l;exit(1); /退出程序/-将数组存取的信息输出到文件中去-for(i=0;i<N;i+)if(i!=k)outfile<<numi<<""outfile<<namei<<""outfile<<sexi<<""outfile<<agei<<""outfile<<numberi<<""outfile<<addressi<<"&quo

27、t;outfile<<e_maili<<""outfile<<birthi<<""<<endl;outfile.close();N=N-1;cout<<" 已删除成功!"<<endl;/ 修改文件void student:change()N=CountLines("student.txt");int i,k;int numM;string nameM,sexM,numberM,addressM,ageM,e_mailM,birthM

28、;ifstream infile("student.txt",ios:in);if(!infile)cerr<<" open error"<<endl;exit(1);cout<<"="<<endl;cout<<"编号姓名性别年龄电话住址E-mail出生年月"<<endl;for(i=0;i<=N;i+)infile>>numi;cout<<numi;infile>>namei;cout<<

29、't'<<namei;infile>>sexi;cout<<'t'<<sexi;infile>>agei;cout<<'t'<<agei;infile>>numberi;cout<<'t'<<numberi;infile>>addressi;cout<<'t'<<addressi;infile>>e_maili;cout<<'t&

30、#39;<<e_maili;infile>>birthi;cout<<'t'<<birthi<<endl;cout<<"="<<endl;infile.close();ofstream outfile("student.txt",ios:out);if(!outfile)cerr<<" open error"<<endl;exit(1);cout<<" 你想修改第几个数据?"<

31、;<endl;cin>>k;k=k-1;if(k<=N)cout<<" 请输入新的数据:"<<endl;cout<<" 请输入编号:"<<endl;cin>>num k;cout<<" 请输入姓名:"<<endl;cin>>namek;cout<<" 请输入性别:"<<endl;cin>>sexk;cout<<" 请输入年龄:"&

32、lt;<endl;cin>>agek;cout<<" 请输入电话:"<<endl;cin>>numberk;cout<<" 请输入住址:"<<endl;cin>>addressk;cout<<" 请输入 E-mail :"<<endl;cin>>e_mailk;cout<<" 请输入出生年月:"<<endl;cin>>birthk;for(i=0;i<

33、;=N;i+)outfile<<numi<<""outfile<<namei<<""outfile<<sexi<<""outfile<<agei<<""outfile<<numberi<<""outfile<<addressi<<""outfile<<e_maili<<""outfile&l

34、t;<birthi<<endl;outfile.close();cout<<" 已修改成功!"<<endl;elsecout<<" 没有该学生 "<<endl;/ 查询文件void student:search()N=CountLines("student.txt");int i,n,w=0,numM,aM;char ch;stringsearchname,nameM,sexM,ageM,numberM,addressM,bM7,e_mailM,birthM;cout&

35、lt;<"a.按编号查找b.按姓名查找 "<<endl;ifstream infile("student.txt",ios:in);if(!infile)cerr<<" open error"<<endl;exit(1);for(i=0;i<N;i+)infile>>numi;ai=numi;infile>>namei;bi0=namei;infile>>sexi;bi1=sexi;infile>>agei;bi2=agei;infile&

36、gt;>numberi;bi3=numberi;infile>>addressi;bi4=addressi;infile>>e_maili;bi5=e_maili;infile>>birthi;bi6=birthi;cout<<" 请输入 a 或者 b!"<<endl;cin>>ch;if(ch='a')cout<<" 请输入编号! "<<endl;cin>>n;for(i=0;i<N;i+)if(ai=n)w=1;co

37、ut<<"= ="<<endl;cout<<" 编号姓名性别年龄电话住址E-mail出生年月 "<<endl;cout<<ai;cout<<'t'<<bi0;cout<<'t'<<bi1;cout<<'t'<<bi2;cout<<'t'<<bi3;cout<<'t'<<bi4;cout<<

38、;'t'<<bi5;cout<<'t'<<bi6<<endl;cout<<"="<<endl;if(w=0)cout<<"无此人信息!"<<endl;else if(ch='b')cout<<" 请输入姓名! "<<endl;cin>>searchname;for(i=0;i<N;i+)if(namei=searchname)w=1;cout<&

39、lt;"= ="<<endl;cout<<" 编号姓名性别年龄电话住址E-mail出生年月 "<<endl;cout<<ai;cout<<'t'<<bi0;cout<<'t'<<bi1;cout<<'t'<<bi2;cout<<'t'<<bi3;cout<<'t'<<bi4;cout<<'t

40、'<<bi5;cout<<'t'<<bi6<<endl;cout<<"= ="<<endl;if(w=0)cout<<"无此人信息!"<<endl;else cout<<"没有此选项!"<<endl;/ 显示文件void student:display()N=CountLines("student.txt");int k,num;string name,sex,age,nu

41、mber,address,e_mail,birth;ifstream infile("student.txt",ios:in);if(!infile)cerr<<" 0open error"<<endl;exit(1);cout<<"="<<endl;cout<<"编号姓名性别年龄电话住址E-mail出生年月"<<endl;for(k=0;k<N;k+)infile>>num;cout<<num;infile>

42、;>name;cout<<'t'<<name;infile>>sex;cout<<'t'<<sex;infile>>age;cout<<'t'<<age;infile>>number;cout<<'t'<<number;infile>>address;cout<<'t'<<address;infile>>e_mail;cout<<'t'<<e_mail;infile>&g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论