课程设计的基本要求.docx
《课程设计的基本要求.docx》由会员分享,可在线阅读,更多相关《课程设计的基本要求.docx(27页珍藏版)》请在冰豆网上搜索。
课程设计的基本要求
一、
课程设计的基本要求
《应用软件综合设计》是计算机专业及相关专业学生的一门实践课程。
本课程对于检验学生阶段性(前三个学期)学习成果,对于软件开发主流方法和思想——面向对象程序设计方法和思想的牢固掌握和熟练应用是一个非常重要的检测,是后续课程得以顺利进行的必要保证,对学生的程序设计能力培养和软件工程能力的培养具有重要的作用和意义。
本实践课程要求学生综合应用已学的计算机相关知识,例如程序设计基本思想和方法、C语言、C++语言、面向对象程序设计思想和方法,通过对真实世界的模拟和抽象来解决一些比较简单的实际问题。
课程要求学生针对一个比较系统的题目进行编码、测试,并进行设计说明书的撰写,从而培养和锻炼学生初步的工程意识和做法。
二、进度安排
时间
任务
17周
发题:
学生自由选择课程设计题目;
18周
预作:
对自己选择的题目要有大致的思路和程序框架,并完成部分代码;
19周
设计、指导:
学生集中时间完成程序设计和设计说明书的编写;
最后一个单元时间
优秀答辩、检查、验收、递交设计报告
三、应收集资料及主要参考文献
应收集的资料:
面向对象程序设计思想和方法
C/C++语言参考手册
主要参考文献:
1.刘斌,王忠。
面向对象程序设计——VisualC++。
清华大学出版社
2.钱能主编,C++程序设计教程,清华大学出版社
3.郑莉.C++语言程序设计.北京:
清华大学出版社,1999年
4.《软件工程》(第一版)李伟波编著武汉大学出版社
四、课程设计摘要(中文)
1.本学生信息管理系统中,运用了I/O流就进行输入输出、链表、结构等基本功能,利用封装把多个函数放在一起,使主程序看起来很明了。
在程序的界面里面可以选择输入、添加、删除、查询、更新和输出学生信息,输出学生的总分以及平均分,以及把链表保存到文件、从文件输出链表的功能。
2.在添加学生信处息时有一种方式进行插入,即提供学号,新记录将插于此学号之后。
3.在删除与查询学生信息时,只要提供学号,即可查找和删除特定的学生的信息。
4.此程序还能够将所有的学生信息按照使用者的需要统计出学生的总分、平均分。
5.本程序最大的特色是退出是自动保存,运行程序是自动下载相关信息。
6.本程序能基本满足简单学生信息管理系统的使用需要,但功能还不够齐全,程序不够简洁、完善,我会继续努力学习,改正程序中存在的不足。
五、
1.StudentwhomIdotheinformationmanagementsystem,theimportationthatmakesuseoftheI/Otoflowoutput,basicfunctionofetc.ofthechainform,makeuseoftosealtopacktoputseveralfunctionstogether,makemainprocedurelookunderstandvery.Canchoosetoincrease,delete,search,renewandoutputstudent'sinformationintheinterfaceoftheprocedure,outputtotalcentandaveragecentsofstudent,analyzeandthefunctionthatthechainformkeepsthedocumentandoutputsthechainformfromthedocument.
2.Haveakindofmethodtocarryoninsertwhileincreasetheletteraninterestofstudent,thenprovidetheregistrationnumber,thenewrecordwillbeafterputtingheretheregistrationnumber.
3.Whiledeletingandsearchingstudent'sinformation,aslongasprovidetheregistrationnumber,canimmediatelychecktoseekanddeletetheparticularstudent.
4.Thisprocedurecanstilldivideequallyallstudent'sinformationsaccordingtototalcentofastudentofthedemandcovarianceofuserpeaceably.
5.Thebiggestspecialfeaturesinthisprocedureistowithdrawtokeepautomatically,circulatingtheproceduretodownloadtherelatedinformationautomatically.
6.Thisprocedureabilityisbasictosatisfythesimplestudentinformationmanagementtheusagedemandofthesystem,butthefunctionreturnnotenoughwell-found,theprocedureisnotenoughsimpleanddirectandperfect,Iwillcontinueworkhardstudy,correcttheprocedureintheexistentshortage.
六、指导教师评语与成绩评定
5.1指导教师评语
指导教师签字:
200年月日
5.2成绩评定
项目
评价
项目
评价
实践能力(20)
工作量(20)
分析、解决问题能力(10)
工作态度(10)
回答问题(10)
报告质量(20)
创新(10)
得分(100分)
七、答辩记录
答辩教师签字:
200年月日
4.程序执行过程……………………………………………………………12
第一章问题分析
1.问题描述
1.完成字符串类、学生信息类、结点类、链表类、应用程序类等的定义,用链表实现学生信息的管理;
2.实现学生信息的添加、查询、修改以及结点的插入和输出等功能;
3.把学生信息封装成一个结构体或者类,把最终的主程序也封装成一个类,只调用少数几个接口实现功能;
4.重载输入输出流,完成所有数据从文本文件的读入和写入,在必要时重载部分其它运算符。
2.需求分析
运用链表实现学生信息的添加、查询、修改以及结点的插入和输出等功能。
运用I/O流完成所有数据从文本文件的读入和写入。
在其中要用到友元函数实现运算符的重载,使得输出的时候和输入的时候减轻编程的工作量,并且使程序看起来简洁明了。
3.编写目的
为使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个项目开发工作的基础,我们制定这个软件需求说明书,供项目开发组和用户使用。
本系统是为了适应现代化学校管理学生信息的需要,加快推进高等院校数字化校园建设、方便学生各种信息的管理、利用多媒体等计算机应用技术和手段,提高办公效率、改善质量的高效管理信息系统。
4.对性能的规定
1.时间特性要求
查询服务部分:
用户通过电脑提交查询到返回结果不超过1秒钟。
数据管理部分:
提交一录入到结果返回不超过1秒钟。
不会出现死循环或无限等待。
2.灵活性
本系统使用很方便,无须专业的计算机知识,有着友好的人机交互界面。
兼容性较好,可使用于各种软件和硬件环境。
3.输入、输出要求
姓名:
至多10个字符
学号:
至多10数字
性别:
至多5个字符
年龄:
0~100,至多保留两位小数
语文:
0~100,至多保留两位小数
数学:
0~100,至多保留两位小数
外语:
0~100,至多保留两位小数
4.数据管理能力要求
本系统对学生纪录的管理是无限的,只要计算机有足够的容量。
5.支持软件
本软件是在Windons操作系统环境下,用C++编写开发而成
第二章总体设计
1.功能分析
(1)添加、删除、查询、更新和输出学生信息.(保证学生信息能全部正确输入)。
(2)能够统计出学生总人数、最高分、最低分、平均分。
(便于统计,以及直观了解整体与个人的情况)。
(3)能将输入的信息以文本的形式导出保存(便于文件的保存防止丢失)。
(4)可将键入的文本信息输出链表。
(便于输出链表)。
2.数据抽象
首先是结构list它里面包含了所有的要使用的数据成员,然后定义了各种函数,它们的功能如下:
insert_chengji()//插入
delete_chengji()//删除
search_chengji()//查寻
modify_chengji()//修改
printf_list() //输出
sum() //求总分
pingjufen() //求平均分
Save() //保存
3.结构关系
4.程序执行过程
第三章详细设计
1.list结构
概述类的主要功能:
定义了学号,姓名,性别,年龄,成绩等基本成员。
还定义了运算符的重载,
主要数据成员和主要成员函数说明:
intnumber;//学号成员函数,用来保存学号。
charname[256];//姓名成员函数,用来保存姓名。
charsex[8];//性别成员函数,用来保存性别。
intage;//年龄成员函数,用来保存年龄。
Intsumm//总分成员函数,用来保存各科总分。
Intchina//语文成员函数,用来保存语文成绩。
Intmath//数学成员函数,用来保存数学成绩。
Intenglish//英语成员函数,用来保存英语成绩。
2.函数说明
主要数据成员和主要成员函数说明:
insert_chengji();//插入是输入函数。
当函数执行后把使用者所输入的信息插入到你想插入的地方。
delete_chengji();//删除是输入函数。
当函数执行后把使用者所输入的信息在链表中查找然后删除最后把删除后的信息返回给使用者。
search_chengji();//查寻是输入函数。
当函数执行后把使用者所输入的信息在链表中查找后,把使用者想查找的信息返回给使用者。
modify_chengji();//修改是输入函数。
当函数执行后把使用者所输入的信息在链表中查找后,把使用者当前输入的信息替换掉以有的信息。
然后返回的是新的信息。
printf_lis();//输出是输出函数。
把使用者想知道的数据完全输出到界面上。
Sum(); //求总分是一个输出函数,即输出所有学生的总分
Pingjunfen(); //求平均分是一个输出函数,
Save();//把链表保存到文件是输入函数,把链表中的信息保存到相应的文件中。
3.1ist结构的定义
typedefstructlist{
intnum;//学号
charname[256];//姓名
charsex[8];//性别
intage;//年龄
intchina;//语文
intenglish;//英语
intmath;//数学
intsumm;//总分
structlist*next;//指向结构的指针
};
第四章功能测试
1.要实现的功能目标
(1).编辑功能:
对学生的各种信息进行编辑,和相关的管理。
(2)浏览功能:
对学生的各种信息进行管理。
(3)查找功能:
查找特定学生的信息.。
(4)删除功能:
删除特定学生的信息。
(5)插入功能:
添加一条记录,并插到某一条记录之后。
(6)统计功能:
如,求某学生的总分,求各学科的平均成绩。
(7)打印功能:
对学生的各种信息进行打印输出。
2.具体测试过程
主界面:
选择1,输入学生的信息:
选择2,查找学生信息:
选择3,修改学生信息:
选择4,删除学生信息:
选择5,添加学生信息:
选择6,输出平均分:
选择7,输出总分:
选择8,输出所有学生的信息:
第五章总结
课程设计引导我们尽可能多地运用所学知识点,灵活地完成编码。
通过问题分析和任务定义体现我们的分析问题的能力;通过逻辑设计体现我们的抽象能力;通过详细设计和程序编码体现我们解决问题的能力;通过程序调试与测试体现我们动手能力;通过结果分析体现我们认识问题的能力;通过编写课程设计报告体现我们书写程序文档的能力。
在编程过程中我运用了以下知识:
1.运用友元,友元提供了在不同类的成员函数之间,类的成员函数与一般函数之间进行数据共享的机制。
通过友元关系,一个普通函数或另一个类中的成员函数可以访问其他类中的私有和保护成员,友元的正确使用对于提高程序的运行效率是非常有益处的。
2.运用了运算符重载,函数重载的意义在于他能用同一个名字访问一组相关的函数,在类中普通成员函数和构造函数都可以重载,特别是构造函数的重载(他提供了多种初使化方式)给用户更大的灵活性。
在基类和派生类的函数重载有两种情况:
一种是参数有所差别的重载。
另一种是参数没有差别的重载,只是他们属于不同的类。
3.运用了链表。
建议与意见:
对于课程设计这门课的开设我觉得很有必要,但是这门课程开设的时间我觉得有必要调整一下,例如在开始学习《面向对象程序设计》这门课时就可以把要做的课程设计的内容告诉我们,我们边学习学边做,在学完时刚好把课程设计完成,这样的话既不会占用考试前几周复习的时候,也能让我们写的程序更加完善。
本设计题目要求我综合应用面向对象的方法编制一个比较简单的应用系统,能够较好的检验我对课程和知识技能的掌握程度。
同时,通过课程设计我对面向对象程序设计方法和思想的牢固掌握和熟练应用可以比较顺利的进行应用,对我的程序设计能力培养和软件工程能力的培养具有重要的作用和意义。
引导我按照面向对象的思想,发挥自己的创造力来分析问题、解决问题。
参考文献
1《C++程序设计》清华大学出版社
2钱能主编,C++程序设计教程,清华大学出版社,1999年
3郑莉.C++语言程序设计.北京:
清华大学出版社,1999年
4《软件工程》(第一版)李伟波编著武汉大学出版社
5《C++程序设计》清华大学出版社
代码清单:
#include
#include
#include
#include
#include
charfname[]="data.hh";
typedefstructlist{
intnum;
charname[256];
charsex[8];
intage;
intchina;
intenglish;
intmath;
intsumm;
structlist*next;
}link;
voidprintf_list(link*head)//显示
{
link*pointer;
pointer=head;
if(pointer==NULL)
{
cout<<"没有找到纪录"<cout<return;
}
cout<<"学号"<<""<<"姓名"<<""<<"性别"<<""<<"年龄"<<""<<"语文"<<""<<"英语"<<""<<"数学"<while(pointer!
=NULL)
{
printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\n",pointer->num,pointer->name,pointer->sex,
pointer->age,pointer->china,pointer->english,pointer->math);
pointer=pointer->next;
}
return;
}
link*creat_list(link*head)//录入
{
link*pointer,*new_one;
head=(link*)malloc(sizeof(link));
if(head==NULL)
{
printf("memoryallocatefailure!
!
\n");
exit(0);
}
else
{
printf("请输入学号(输入0可退出录入):
");
scanf("%d",&head->num);
printf("请输入姓名:
");
scanf("%s",head->name);
printf("请输入性别(男-m,女-w):
");
scanf("%s",head->sex);
printf("请输入年龄:
");
scanf("%d",&head->age);
printf("请输入语文:
");
scanf("%d",&head->china);
printf("请输入英语:
");
scanf("%d",&head->english);
printf("请输入数学:
");
scanf("%d",&head->math);
}
pointer=head;
while
(1)
{
new_one=(link*)malloc(sizeof(link));
if(new_one==NULL)
{
printf("memoryallocatefailure!
!
\n");
exit(0);
}
printf("\n请输入学号:
");
scanf("%d",&new_one->num);
if(new_one->num==0)
{
pointer->next=NULL;
free(new_one);
break;
}
printf("请输入姓名:
");
scanf("%s",new_one->name);
printf("请输入性别:
");
scanf("%s",new_one->sex);
printf("请输入年龄:
");
scanf("%d",&new_one->age);
printf("请输入语文:
");
scanf("%d",&new_one->china);
printf("请输入英语:
");
scanf("%d",&new_one->english);
printf("请输入数学:
");
scanf("%d",&new_one->math);
pointer->next=new_one;
pointer=new_one;
}
cout<<"你刚录入的信息如下:
"<cout<returnhead;
}
voidsearch_chengji(intkey1,link*head)//查找
{
link*pointer;
pointer=head;
if(pointer==NULL)
{
printf("没有找到相关记录\n");
cout<}
while(pointer!
=NULL)
{
if(pointer->num==key1)
{
cout<<"相关信息已经找到,如下所示:
"<cout<<"学号"<<""<<"姓名"<<""<<"性别"<<""<<"年龄"<<""<<"语文"<<""<<"英语"<<""<<"数学"<printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\n",pointer->num,pointer->name,pointer->sex,
pointer->age,pointer->china,pointer->english,pointer->math);
}
pointer=pointer->next;
}
return;
}
link*modify_chengji(link*head,intkey3)//修改
{
link*pointer;
pointer=head;
if(pointer==NULL)
{
printf("没有找到相关记录\n");
cout<returnhead;
}
while
(1){
if(pointer->num==key3)
{
cout<<"请重新输入如下信息:
"<cout<cout<<"姓名"<<""<<"性别"<<""<<"年龄"<<""<<"语文"<<""<<"英语"<<""<<"数学"<cin>>pointer->name>>pointer->sex>>pointer->age>>pointer->china>>pointer->english>>pointer->math;
cout<<"修改以成功,修改后的信息如下:
"<cout<cout<<"学号"<<""<<"姓名"<<""<<"性别"<<""<<"年龄"<<""<<"语文"<<""<<"英语"<<""<<"数学"<printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\n",pointer->num,pointer->name,pointer->sex,
pointer->age,pointer->china,pointer->english,pointer->math);
returnhead;
}
pointer=pointer->next;
}
}
link*delete_chengji(link*head,intkey2)//删除
{
link*pointer;
link*back;
pointer=head;