版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 华科学院信息管理与信息系统专业程序设计综合课程设计报告 (2011/2012学年 第一学期)学生姓名: 学生班级: 信管102201h学生学号: 指导教师: 2011年12月30日目 录一 课程设计目的 1二 课程设计任务和内容 1三 系统设计方案 2 3.1系统详细描述23.2功能模块划分2四 系统实现与测试 34.1 流程图 34.2 数据结构表 44.3 使用说明与调试结果 44.3.1 使用说明 44.3.2 调试结果 5五 优缺点分析 8六 参考文献 8七 附录 9一、课程设计的目的1) 学习综合运用c高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加
2、深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2) 全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3) 掌握程序设计中的常用算法和c语言的编程技巧和上机调试程序的方法。4) 在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。二、课程设计任务和内容按照如下要求,运用c+语言,编写一套可用的较为完善的通讯录管理系统软件1)增加通讯录基本信息。2)删除指定的学生的基本信息。3)修改指定的通讯录基本
3、信息。4)查询指定的学生信息。5)储存与载入基本信息。6)预览比较详细的信息。7)删除已载入的所有的信息。8)统计男女的人数,以及总人数。三、系统设计方案3.1系统详细描述3.1.1系统设计背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。3.1.2系统设计详细信息 能够准确地记录职工的相关信息。 系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠。 系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。
4、除了前面所述,我们所开发的系统还应该具有以下功能: 原始数据修改简单方便; 方便的数据查询; 删除数据方便简单,稳定性好; 数据计算自动完成,尽量减少人工干预;3.2功能模块划分3.2.1功能模块描述模块一:增加人员函数add();增加通讯录基本信息。模块二:删除人员函数delete();删除指定的学生的基本信息。模块三:修改人员函数modify();修改指定的通讯录基本信息。模块四:查询人员信息函数query();查询指定的学生信息。模块五:数据存盘,载入函数save()以及load();储存与载入基本信息。模块六:预览数据void look();预览比较详细的信息。模块七:删除通讯录voi
5、d destory();删除已载入的所有的信息。模块八:基础数据设置函数void tj();;统计男女的人数,以及总人数。本通讯录采用了面向对象的程序设计方法。所有的方法均以类为基础。所涉及到的类包括:class person 基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数person(char id,char *name,int duty)。可以给职工类型继承。class manage 管理类;该类定义了管理函数,即前文所述八个模块功能的实现方法,链表的使用也包括其中。此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。四、系统实现与测试4.1流程图开始定义
6、变量数据处理调用输出函数yn输入c的值c>=1&&c<=8调用保存函数调用预览函数调用清除函数调用查询函数调用输出函数调用修改函数调用删除函数调用新增函数调用统计函数图 4-1 程序流程图退出系统4.2 数据结构表序号成员名数据类型长度字段含义1nostring学号2namechar20名字3sexchar10性别4telstring20联系方式5agestring年龄表4-2 数据结构表4.3 使用说明与调试结果4.3.1使用说明这是一个关于职工信息管理系统,具有录入、输出、删除、查询、修改、保存、统计等功能,建立了一个含有学号、姓名、性别、联系方式等成员的类的变
7、量class person 。已从文本录入了范例数据。调试过程中,可按照有关提示进行相关操作:增加通讯录按“1”键;删除通讯录按“2”键;修改通讯录按“3”键;查询详细通讯录按“4”键;保存通讯录数据设置按“5”键;预览通讯录按“6”键;清除通讯录按“7”键;统计数据按“8”键。4.3.2调试结果代码中运用了switch 语句调用各子函数,数字 1、2、3、4、5、6、7、8等七个数字代表不同的指令。系统启动时,会自动在存放该系统的磁盘根目录之下装入一个数据文件:person.txt,调试时一个数据文件都已经写入部分数据,使用功能“6预览通讯录”,显示如下:指令“n”为退回主界面,“y”代表进
8、入查询详细信息界面:可以按照学号、名字、电话号码查找较详细信息指令“2删除通讯录”代表调用删除人员函数delete(),要求操作者输入职工的相关id,系统根据操作者输出的id,找出对应的记录,然后删除该职工的信息,如果删除的是第一个结点,则 p1->next,指向第二个结点;下图示范了删除第一个节点之后的显示结果:如果删除的是第i个(0< i <n)就把下一个结点地址赋给前一个结点地址;如果找不到对应的id,则不会删除任何一个记录,并输出“未找到!”。指令“3修改人员”代表调用修改人员函数modify(),体统根据操作者输入的id找到对应的记录,将新输入的数据对应地赋给要修改
9、的各成员。指令“5保存数据”表示调用存盘函数save(),输入“y”或者“n”以进一步操作。指令“8统计”,调用tj();函数,按照男、女统计人数:指令“7清除通讯录”,调用destory()清除已存数据:五、优缺点分析优点: 系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大; 可以随意地选择不同的指令进行操作; 排版效果清晰明了,美观; 操作简单方便。缺点: 由于该系统对数据采用文本保存方式,所以安全性不可靠。 采用链表结构操作,不能支持超大量的数据,否则运行缓慢。六、参考文献1谭浩强,c+程序设计,清华大学出版社, 2011。2郑莉,c+程序设计(第
10、三版),清华大学出版社, 2005。 3钱能,c+程序设计教程,清华大学出版社, 2004。4武俊亮,visual c+课程设计与系统开发案例,清华出版社。5黄维通,visual c+程序设计教程,清华大学出版社, 2005。七、附录:通讯录系统源码#include<iostream>#include<fstream>#include<string>#include<conio.h>#include<windows.h>/#include<windows.h>using namespace std;string id;/具
11、有唯一性class personprotected: string no; /学号string age;char name20; /姓名char sex10; /性别string tel; /联系方式person *next; public: person(string id,char *name,char *sex,string age,string tel) strcpy(this->name,name); strcpy(this->sex,sex);this->tel=tel;this->no=id; this->age=age;friend class m
12、anage;class manageprivate:person *person;public:manage()person=0;load();manage() person *p; p=person; while(p) p=p->next; delete person; person=p; person=0; void find(char name20);/按姓名查找 void find(string id);/按编号查找void add(); /添加加信息 void delete(); /删除信息 void modify(string id); /修改信息void query();
13、/查询信息 void tj(); /清除文件信息void save(); /保存数据 void load(); /读入数据void look();/预览void destory();void output(person *p)cout<<"tt学号: "<<p->no<<endl;cout<<"tt姓名: "<<p->name<<endl;cout<<"tt性别: "<<p->sex<<endl;cout<
14、;<"tt年龄: "<<p->age<<endl;cout<<"tt联系电话: "<<p->tel<<endl;cout<<endl;void manage:add()system("cls");person *p,*p2; /新结点指针 string no,age,tel;char name20,sex10; char c;cout<<"n* 新增学生通讯录 *n" /输入学生信息 cout<<&qu
15、ot;输入学号:t"cin>>no; cout<<endl;person *p1;p1=person;while(p1) if(p1->no=no) break; else p1=p1->next; if(p1!=null)cout<<"该学号已存在,是否修改该学生信息(y/n) "<<endl;cin>>c;if(toupper(c)='y')cout<<"该学生信息为:"<<endl;find(no);cout<<en
16、dl;modify(no);return ;elsereturn ;cout<<"输入姓名:t"cin>>name; cout<<endl;cout<<"输入性别:t"cin>>sex;cout<<endl;cout<<"输入年龄:t"cin>>age;cout<<endl;cout<<"输入联系方式:t"cin>>tel;cout<<endl; p=new person(
17、no,name,sex,age,tel);p->next=0;/学生结点加入链表 if(person) /若已经存在结点 p2=person; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; /连接 else /若不存在结点(表空) person=p; /连接 system("cls");cout<<"ttt *添加成功*n"<<endl;cout<<"是否继续添加(y/n) "<<endl;cin>>c
18、;if(toupper(c)='y')add();return ;elsereturn ;void manage:delete() /删除人员 system("cls");char c;string no; cout<<"n* 删除信息 *n" cout<<"输入要删除的学生id:t"cin>>no; cout<<endl;/查找要删除的结点 person *p1,*p2;p1=person; while(p1) if(p1->no=no) break; else
19、p2=p1; p1=p1->next; /删除结点 if(p1!=null)/若找到结点,则删除 cout<<"所要删除的学生的信息如下:n"<<endl;output(p1);cout<<"确定是否删除(y/n): "cin>>c;if(toupper(c)!='y')return;/system("pause");if(p1=person) /若要删除的结点是第一个结点 person=p1->next; delete p1; else /若要删除的结点是后
20、续结点 p2->next=p1->next; delete p1; cout<<"tt*删除成功*n"cout<<"是否继续删除(y/n) "<<endl;cin>>c;if(toupper(c)='y')delete();return ;elsereturn ; else /未找到结点 cout<<"未找到该学生!n" getch();void manage:modify(string id) person *p1;char c;p1=perso
21、n;while(p1) if(p1->no=id) break; else p1=p1->next; if(p1!=null)/若找到结点 system("cls");cout<<"所要修改的学生的信息如下:n"<<endl;output(p1);docout<<"1. 修改姓名 2. 修改性别 3. 修改年龄 4. 修改联系方式 5. 退出修改 n"<<endl;cout<<"请选择(1-5)要修改的信息n"<<endl;cin&
22、gt;>c;if(c!='5')cout<<"请输入新的信息: "switch(c)case '1': cin>>p1->name; break;case '2': cin>>p1->sex; break;case '3': cin>>p1->age; break;case '4': cin>>p1->tel; break;default: break;while(c!='5');syste
23、m("cls");cout<<"t *修改成功*n"<<endl;cout<<"是否继续修改(y/n): "<<endl;cin>>c;if(toupper(c)='y')cout<<"请输入要修改人员的id: "cin>>id;cout<<endl;modify(id);return ;elsereturn ; else /未找到结点 cout<<"未找到该学生!n" g
24、etch();/暂停 void manage:save() /数据写入到文件 ofstream fperson("person.txt",ios:out); char c; cout<<"n保存数据,是否继续?y/n:"cin>>c; if(toupper(c)!='y')return; person *p=person; while(p) fperson<<p->no<<" "<<p->name<<" "<&
25、lt;p->sex<<" "<<p->age<<" "<<p->tel<<endl; p=p->next; fperson.close(); cout<<"n保存成功.n" system("pause"); void manage:load() /数据读入 ifstream fperson; person *p=person; string no,age,tel;char name20,sex10; fperson.op
26、en("person.txt",ios:in); fperson>>no>>name>>sex>>age>>tel;while(fperson.good() p=new person(no,name,sex,age,tel);p->next=0; /员工结点加入链表 if(person) /若已经存在结点 person *p2; p2=person; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; /连接 else /若不存在结点(表空) pe
27、rson=p; /连接 fperson>>no>>name>>sex>>age>>tel;fperson.close(); void manage:find(string id)person *p1;p1=person;while(p1) if(p1->no=id) break; else p1=p1->next; if(p1!=null)output(p1);elsecout<<"未找到该学生"<<endl;void manage:find(char name20)person
28、 *p1;int count=0;p1=person;while(p1) if(strcmp(p1->name,name)=0)count+;output(p1);p1=p1->next; if(count)cout<<"t查询成功!"<<endl;cout<<"n共找到 "<<count<<" 个名字为 "<<name<<" 的同学n"<<endl;elsecout<<"ntt未找到该
29、学生!n"<<endl;void manage:query()char c;string id,tel;char name20;docout<<"1. 按学号查找 2. 按名字查找 3. 按电话号码查找 4.退出查找"<<endl;cin>>c;/system("cls");cout<<endl;switch(c)case '1': cout<<"输入学号 id: "cin>>id;find(id); ; break;case
30、 '2': cout<<"输入姓名 name: "cin>>name;find(name); ; break;case '3': cout<<"输入电话号码 tel"<<endl;cin>>tel;find(tel);break;case '4':break;default: cout<<"输入有误 请重新输入!n"<<endl;while(c!='1'&&c!='
31、2'&&c!='3'&&c!='4');cout<<"ttt *查找成功*n"<<endl;cout<<"是否继续查找(y/n) "<<endl;cin>>c;if(toupper(c)='y')query();return ;elsereturn ;system("pause");void manage:look()/设置字体颜色setconsoletextattribute(getst
32、dhandle(std_output_handle),foreground_intensity | foreground_red | foreground_green);system("cls");person *p1;int count=0;char c;p1=person;while(p1) cout<<"id: "<<p1->no<<"t姓名: "<<p1->name<<endl;count+;p1=p1->next; if(count!=0)cout
33、<<"ntt预览成功! n"<<endl;cout<<"查询详细信息(y/n): "cin>>c;if(toupper(c)='y')query();return;elsereturn ;elsecout<<"尚未创建通讯录,是否创建(y/n)"<<endl;cin>>c;if(toupper(c)='y')add();return;elsereturn ;void manage:destory()/设置字体为红色set
34、consoletextattribute(getstdhandle(std_output_handle),foreground_intensity | foreground_red);char c;system("cls");cout<<"nttt* 清除信息 *n"cout<<"警告:n 清除通讯录信息会导致您保存的信息完全消失!n"<<endl;cout<<"是否决定清除通讯录信息(y/n): "<<endl;cin>>c;if(toupp
35、er(c)!='y')return;cout<<"请再次确认(y/n)"<<endl;cin>>c;if(toupper(c)!='y')return;elseperson *p; p=person; while(p) p=p->next; delete person; person=p; person=0;/ofstream fperson("person.txt");/fperson.close();system("pause");void manage:t
36、j()person *p1;int count=0,boy=0,girl=0;p1=person;while(p1) count+;if(strcmp(p1->sex,"男")=0)boy+;if(strcmp(p1->sex,"女")=0)girl+;p1=p1->next; cout<<"n总共有 "<<count<<"份通讯录n"<<endl;cout<<"男生: "<<boy<<"t 女生: "<<girl<<"n"&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳务分包合同在建筑行业的应用
- 初中体育 健美操提高班第2次课教案
- 2024年二年级品生下册《机智勇敢保安全》教案 山东版
- 2024年学年八年级语文上册 第四单元 地球我们的家园 第15课《大树和我们的生活》教案2 沪教版五四制
- 2023三年级数学上册 七 庆元旦-时、分、秒的认识 信息窗2 有关时间的计算第1课时教案 青岛版六三制
- 2024-2025学年八年级语文下册 第六单元 22《礼记》二则教案 新人教版
- 2024-2025学年高中数学 第三章 函数的概念与性质 3.2.2 奇偶性教案 新人教A版必修第一册
- 最高额保证合同(2篇)
- 租船合同模版(2篇)
- 运输项目合同(2篇)
- 商务星球版七年级上册地理知识点归纳总结
- 四川创联专业技术人员学习-2023数字经济驱动与发展公需科目答
- 【环氧树脂复合材料研究进展文献综述6000字】
- 催审稿邮件怎么写范文
- 2023《中华人民共和国合同法》
- 悦纳自我向阳而生心理健康教育主题班会课件
- DIN-EN-ISO-2409-CN国际标准文档
- 数字经济时代“95后”新生代员工管理挑战、成因及对策分析
- 职业卫生检测考试真题十五
- Unit+3+Celebrations+Topic+Talk 高中英语北师大版(2019)必修第一册
- 2023建设工程智慧消防系统技术规程
评论
0/150
提交评论