C#程序设计课设报告.docx
- 文档编号:6714907
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:30
- 大小:366.22KB
C#程序设计课设报告.docx
《C#程序设计课设报告.docx》由会员分享,可在线阅读,更多相关《C#程序设计课设报告.docx(30页珍藏版)》请在冰豆网上搜索。
C#程序设计课设报告
课程设计报告
课程名称《C#程序设计》
课题名称图书管理系统
专业信息管理与信息系统
班级信管
学号
姓名
指导教师李峰、赵锦元、谢雅
2015年6月10日
湖南工程学院
课程设计任务书
课程名称《C#程序设计》
课题图书管理系统
专业班级信管1302班
学生姓名刘洁
学号
指导老师李峰
审批
任务书下达日期2015年6月10日
任务完成日期2015年6月27日
一、设计内容与设计要求
1.课程设计目的:
全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C++语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。
进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。
2.课题题目
1、学生成绩管理系统
2、职工信息管理系统
3、图书管理系统程序系统
4、教师工作量统计系统
3.设计要求:
●主要模块
1、学生成绩管理系统
具有功能:
1、显示统计数据2、查找学生成绩3、修改学生成绩4、删除学生成绩5、插入学生成绩6、按平均分降序排列7、显示全部学生成绩8、退出本系统
2、职工信息管理
具有功能:
1、添加信息2、显示统计数据3、查找学生成绩4、修改信息5、删除信息6、插入信息7、显示全部信息8、退出本系统
3、图书管理系统程序
具有功能:
1、浏览书籍信息2、修改书籍信息3、统计书记情况4、查询书的基本信息5、录入新书信息
4、教师工作量统计系统
具有功能:
1、输入教师信息2、查看教师信息3、清空记录4、退出程序
课程设计报告规范
1、完成系统需求分析:
包括系统设计目的与意义;系统功能需求;输入输出的要求。
2、完成系统概要设计:
程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
3、完成系统详细设计:
包括采用C++语言定义相关的数据类型;写出各模块的类C++码算法;画出函数的调用关系图。
4、调试分析、设计体会、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
5、关键源程序(带注释)
6、其他
1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
5)实际操作过程中遇到的问题及解决方法:
设计总结及心得体会.
6)上机演示。
二、进度安排
第16周星期一14时:
00分
星期二14时:
00分
星期四14时:
00分
星期五14时:
00分
第17周星期一14时:
00分
星期二14时:
00分
1系统需求分析
1.1系统设计目的与意义
全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C++语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。
进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。
1.2系统功能需求
利用C++语言和access数据库的相关知识设计与开发一个图书管理系统的借书模块、还书模块和图书存储模块,具有读者编号、读者信息、书籍编号、书籍信息的输入功能;可以在数据库中查询和删除所保存的记录;在借书功能里,用户可以通过此功能是否借出检索的书籍,还书功能里,读者可以查看所接书籍信息,并具有退出该系统模块的功能。
1.3输入输出要求
本系统是一个图书信息管理系统,采用VC++6.0编译器作为开发环境,这个环境是我们在学习的C++平台。
输入数据类型主要是char、int、float等数据类型,输入内容包括:
图书编号、图书名、读者编号、读者名等数据。
用户在输入图书信息保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确可用。
输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以修改、删除、查找、显示所有、保存等功能。
2总体设计
2.1总体设计图
本管理系统共分为五大功能:
分别为借书功能、还书功能、图书维护、读者维护、退出系统,系统设置模块各功能性需求见下表所示由图2.1所示
图2.1总体设计图
2.2各函数之间的调用关系
该模块完成了图书管理系统中新增图书、查询图书、删除图书信息、借书、还书以及读者信息录入的功能,其中在图书维护模块的功能中,又可实现新增图书、更改图书信息、删除图书、查询图书、显示全部图书、删除全部图书的功能。
同样在读者维护模块中也有类似的新增读者、更改读者信息、删除读者、查询读者信息等功能。
流程图如图2.2所示。
1.新增读者
1.更改读者信息
2.删除读者
3.查询读者
4.显示全部读者
5.删除全部读者
6.退出
图2.2各函数之间的调用关系
2.3数据结构及数据库
数据结构是指同一数据元素类中各数据元素之间存在的关系。
数据结构分别为逻辑结构、存储结构和数据的运算。
数据的逻辑结构是从具体问题抽象出来的数学模型,是描述数据元素及其关系的数学特性的,有时就把逻辑结构简称为数据结构。
而数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
图书管理系统程序利用C++语言编写,定义多个类,数据保存到access数据库实现数据保存和查询。
Access数据库中存储了输入的图书信息,读者信息以及图书的借阅情况。
2.4C#语言的简介
C#语言是在C、C++和Java基础上重新构造的、语法与C++和Java都比较相似的基于。
NET框架支持的一种完全面向对象的、类型安全的编程语言,也是。
NET的首选编程语言。
从开发效率来讲,C#为应用程序开发人员提供了快速的开发手段,但又不牺牲C++语言的特点和优点。
从继承性来讲,C#在更高层次上重新实现了C和C++。
从语法形式和易用性来讲,C#几乎综合了目前流行的所有高级语言的优点,提供了一种语法优雅、功能完善而又容易使用的外在表现形式。
3详细设计
3.1采用C++语言定义的相关数据类型
C/C++数据类型C语言包含5个基本数据类型:
void空类型、int整型、float浮点类型、double双精度浮点类型、char字符类型,在图书管理系统这个程序中用到了其中的大多数。
同时还用类和对象的方法来定义多个类,在这之前,曾采用结构体的方法来做个,但后来放弃了,因为采用数组或者结构体的方法定义多个事件,那样将会非常繁琐,代码重复比较大,因此,为了简化这些连接操作,在开发时设计个可重用的类,把对数据库的操作都封装在这个类中,需要用到时生成对象调用便可。
这样就避免了在出现错误时,为了去修改错误而产生的庞大的工作量。
3.2各模块的类C码算法
3.2.1采用类建立一个读者类,实现对读者信息的描述
根据课设要求定义一个读者类,在类中,定义了读者的编号、姓名,建立数组来存储读者所借阅的书籍,同时也建立多个成员函数像addreade()、borrowbook()、disp()实现新增读者,存储读者借阅信息显示读者信息等功能
classReader
{
private:
inttag;//删除标记1:
已删0:
未删
intno;//读者编号
charname[10];//读者姓名
intborbook[Maxbor];//所借图书
public:
Reader(){}
char*getname(){returnname;}//获取姓名
intgettag(){returntag;}//获取删除标记
intgetno(){returnno;}//获取读者编号
voidsetname(charna[])//设置姓名
{
strcpy(name,na);
}
voiddelbook(){tag=1;}//设置删除标记1:
已删0:
未删
3.2.2建立读者数据库,保存读者个人信息并实现查询功能、删除
在读者数据库中,通过构造函数,将reader.txt(输入的读者个人信息)读到read[]数组中,通过clear()函数来删除所有读者信息,不过在删除前会先用for循环来对数据库中的数据进行遍历,来查找读者是否存在。
通过在析构函数中,将read[]写到reader.txt文件中,进行读者库的维护
classRDatabase
{
private:
inttop;//读者记录指针
Readerread[Maxr];//读者记录
public:
RDatabase()//构造函数,将reader.txt读到read[]中
{
Readers;
top=-1;
fstreamfile("reader.txt",ios:
:
in);//打开一个输入文件
while
(1)
{
file.read((char*)&s,sizeof(s));
if(!
file)break;
top++;
read[top]=s;
}
file.close();//关闭reader.txt
}
3.2.3建立图书类,实现对图书的描述,图书的编号,书名,借出,还入等
同样根据课程设计要求,定义一个图书类,用来存储书籍的编号、名称,以及是否借阅的信息,通过delbook()、addbook()、borrowbook()、retbook()等函数来实现对图书的删除、增加、是否借阅和还书信息的记录
classBook
{
private:
inttag;//删除标记1:
已删0:
未删
intno;//图书编号
charname[20];//书名
intonshelf;//是否再架1:
再架2:
已借
public:
Book(){}
char*getname(){returnname;}//获取姓名
intgetno(){returnno;}//获取图书编号
intgettag(){returntag;}//获取删除标
3.2.4建立图书数据库,实现对图书的维护,查找,删除等
同样在图书数据库中,也是通过构造函数,将reader.txt(输入的图书信息)读到read[]数组中,通过clear()函数来删除所有图书信息,不过在删除前会先用for循环来对数据库中的数据进行遍历,来查找图书是否存在。
通过在析构函数中,将read[]写到reader.txt文件中,进行图书库的维护
classBDatabase
{
private:
inttop;//图书记录指针
Bookbook[Maxb];//图书记录
public:
BDatabase()//构造函数,将book.txt读到book[]中
{
Bookb;
top=-1;
fstreamfile("book.txt",ios:
:
in);
while
(1)
{file.read((char*)&b,sizeof(b));
if(!
file)break;
top++;
book[top]=b;
}
file.close();
}
3.2.5系统目录的设置
根据课程设计的要求,系统目录设置为五个模块,第一个模块,借书模块;第二个模块,还书模块;第三个模块,图书维护模块;第四个模块,读者维护模块;第五个模块,退出系统。
这五个模块简明而有效地实现了图书管理、读者管理、借阅功能,同时也实现了界面友好。
cout< cout< cout< cout< cout< \n"; cin>>choice; 4系统调试与结果 4.1程序运行结果 程序开始的主界面,分为借书还书,图书维护,读者维护。 在程序开始执行时要先选择3图书维护,然后选择4进行读者维护 图4.1.1主界面 进行图书维护、新增图书,按要求输入图书编号,图书名 图4.1.2新增图书 输入5可以显示所增加的书籍 图4.1.3显示所增书籍 输入2按要求即可修改书籍信息 图4.1.4更改图书信息 其他操作均按照界面中的要求来运行,对于读者系统的操作也同图书系统一样 图4.1.5新增读者 借书只需输入读者编码和图书编码 图4.1.6借书模块 在借了书后,图书管理系统中将会记录借阅信息 图4.1.7借阅记录 同样还书的方式也与借书一样 图4.1.8还书模块 图4.1.9还书后图书属性 4.2调试中出现的问题 (1)在开始程序运行的时候,输入读者编号输入的是字母结果导致程序死循环,后来经过多次运行发现在读者编号不能用字母,只能用数字,因为我最初定义读者编号时是定义的整形。 (2)由于刚开始时出现了输入读者编号出现死循环的错误,我又试了一下,同样在图书管理模块中图书编号也必须是输入数字才能运行。 还有为了更好的使用循环,设计了for语句,结果不能执行,最后无奈只能使用函数系统 另加函数,在主函数里调用。 (3)上机操作调试程序额的时候,发现了许多由于自己的粗心写错了单词,比如void写成了viod,还有粗心将private写成了privacy,调试的时候总是出现错误,后面一看才知道是自己的粗心造成的呀,还有就是有时候少些了分号或只打了半边括号,定义图书的时候忘了一项书号,结果最后无法输入,在打开文件的时候 fp 写错,经过很多的调试没成功,这也是个粗心错误。 作为一个学计算机的,这种错误以后得避免才行,不然小粗心会造成自己以后编程中的大问题! (4)由于该系统程序的开发过程比较细致和复杂,需用到的c++各方面的知识都比较多,而初学者对C++学习特别是其中指针、数组和链表及输入流与输出流等比较陌生,且难以灵活运用,因而我们团队在整个开发过程经历一段很长的时间,且难以让其一次性地准确地调试和运行。 (5)由于在程序中大量的使用switch语句,有时候输入相应的指令却没有得到需要的结果,是因为在写case时没有写break语句,导致程序运行后得不到想要的结果。 至于少加“;”的问题就不列举了 5使用说明 (1)运行程序到系统界面,先输入3进行图书维护或者输入4读者维护,然后按界面要求输入1新增图书和新增读者。 一定要先输入图书信息和读者信息才能够进行借书、还书等其他操作。 (2)如果需要更改、删除图书信息或者读者信息,可以在图书维护和读者维护中操作。 (3)按0返回系统界面,之后可按需求进行借书还书操作,借书还书只需要记得图书编号和读者自身编号即可,图书编号与读者编号都可在图书维护和读者维护中查询到。 (4)如果不记得自身的读者编号,可以在读者维护模块中通过姓名查询的方式查询到,同样,不记得要借的书籍的图书编号,也可以在图书维护模块中通过图书名的方式查询到。 同时,在图书维护模块中的显示功能里,可以了解到存储在数据库中的所有书籍和他们的编号。 6心得体会 通过这次课程设计,我深刻体会到这门课程并不是轻而易举就可也学好的,学习这门课程不仅需要细心严谨的态度,还需要充分发挥我们的想象力,让理论和实践充分的结合在一起,才能达到事半功倍的效果。 细节决定成败这句话在程序设计中最恰当不过了,因为一个小小的错误代码就可以使你的整个的程序无法进行,有时候绞尽脑汁也没能找出错误所在,只好老老实实的从新进行编写工作。 所以课程不仅理论性强,实际操作性更强,没有一个好的心态很难学好这门课程。 我们学习的不仅是科学的方法,还包括用什么样的态度去对待这门课程,并且让自理论性和实践性在自身得到充分的发挥,用细心严谨的态度去认识事物。 在课程设计过程中,我们每个人选择一个课题,认真研究,根据课堂讲授内容,借助书本,自己动手实践。 这样不但有助于我们消化课堂所讲解的内容,还可以增强我们的独立思考能力和动手能力;通过编写实验代码和调试运行,我们可以逐步积累调试C#程序的经验并逐渐培养我们的编程能力、用计算机解决实际问题的能力。 通过这次课程设计使我充分的了解了对类和对象中基本原理的应用,知道了类对象的定义关系方法,同时也学会了编写简单的带有成员函数的程序。 虽然此次的程序不是很完备,但是总体还是一个比较能体现类和对象知识点能力的程序,当然只是相对于我这个初学者来说。 通过这次的C#课程设计,我也深刻了解到这门学问的博大精深,要积极进取,不断学习,不断积累知识。 同时也认识到自己的不足和缺点,做什么事都需要细心和耐心,并坚持下去,这样才还有一个比较满意的成果.实践出真知,通过亲自动手,使我们掌握的知识不再是纸上谈兵。 课程设计是一个把需求分析、程序编写、程序调试、撰写报告结合为一体的过程。 在这个过程中,不仅锻炼了我们缜密的思维和坚持不解的毅力,更磨练了一个队伍的团结互助的精神。 只有通过大家一起努力才能将课程设计的所有环节都顺利的完成。 另外程序设计中我们遇到问题并解决问题的过程,使得我们独自探索并解决问题的能力了有了一个提高,这有利于我们以后的学习。 同时这整一个过程,也使我们对程序编写的整个过程有了一个统筹全局的思想,因为需求分析、程序编写、程序调试、撰写报告这些过程是环环相扣的,绝对不可能独立进行。 课程设计是一个重要的教学环节。 我们在一般情况下都能够重视实验环节,但是容易忽略实验的总结,忽略实验报告的撰写。 通过这次实验让我们明白: 作为一名大学生必须严格训练分析总结能力、书面表达能力。 需要逐步培养书写科学实验报告以及科技论文的能力。 只有这样,我们的综合素质才会有好的提高。 7附录 7.1源代码 #include #include #include #include usingnamespacestd; constintMaxr=100;//最多的读者 constintMaxb=100;//最多的图书 constintMaxbor=5;//每位读者最多借五本书 classReader { private: inttag;//删除标记1: 已删0: 未删 intno;//读者编号 charname[10];//读者姓名 intborbook[Maxbor];//所借图书 public: Reader(){} char*getname(){returnname;}//获取姓名 intgettag(){returntag;}//获取删除标记 intgetno(){returnno;}//获取读者编号 voidsetname(charna[])//设置姓名 { strcpy(name,na); } voiddelbook(){tag=1;}//设置删除标记1: 已删0: 未删 voidaddreader(intn,char*na)//增加读者 { tag=0; no=n; strcpy(name,na); for(inti=0;i borbook[i]=0; } voidborrowbook(intbookid)//借书操作 { for(inti=0;i { if(borbook[i]==0) { borbook[i]=bookid; return; } } } intretbook(intbookid)//还书操作 { for(inti=0;i { if(borbook[i]==bookid) { borbook[i]=0; return1; } } return0; } voiddisp()//读出读者信息 { cout< ["; for(inti=0;i if(borbook[i]! =0) cout< cout<<"]"< } }; classRDatabase { private: inttop;//读者记录指针 Readerread[Maxr];//读者记录 public: RDatabase()//构造函数,将reader.txt读到read[]中 { Readers; top=-1; fstreamfile("reader.txt",ios: : in);//打开一个输入文件 while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; read[top]=s; } file.close();//关闭reader.txt } voidclear()//删除所有读者信息 { top=-1; } intaddreader(intn,char*na)//添加读者时先查找是否存在 { Reader*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); return1; } return0; } Reader*query(intreaderid)//按编号查找 {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 程序设计 报告