C#程序课程设计报告.docx
《C#程序课程设计报告.docx》由会员分享,可在线阅读,更多相关《C#程序课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
C#程序课程设计报告
课程设计报告
课程名称《C#程序设计》
课题名称教师工作量统计系统
专业信息管理与信息系统
班级信管1302
学号************
姓名陈静
指导教师李峰、赵锦元、谢雅
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周星期二8时:
00分
1系统需求分析
利用C++语言和access数据库的相关知识设计与开发一个教师工作量统计系统,具有教师编号,姓名,工作学时的输入功能;可以在数据库中查询和删除所保存的记录:
并具有退出该系统模块的功能。
2总体设计
2.1总体设计图
输入教师信息
图2.1
2.2各函数之间的调用关系
图2.2
图2.1各函数的调用关系
2.3数据结构及数据库
程序利用C++语言编写,数据保存到access数据库实现数据保存和查询以及数据库的更新。
3详细设计
3.1C++语言定义的相关数据类型
classPerson
{
public:
voiddisplay()
{
cout<<"姓名:
";cin>>name;
cout<<"编号:
";cin>>num;
}
charname[20];//名字
intnum;};//编号
classTeacher:
publicPerson//教师
{public:
Teacher(ints=800)
{score=s;}
voiddisplay1();
intscore;//基本工资
inttime;//月工作量
};
classShiyanyuan:
publicPerson//实验员
{public:
Shiyanyuan(ints=650,intb=150)
{score=s;buzu=b;}
voiddisplay1()
{cout<<"请输入实验员的";
Person:
:
display();
}
intscore;//基本工资
intbuzu;//补助
};
classJianzhi1:
publicTeacher,publicShiyanyuan//教师兼职实验员
{public:
Jianzhi1(ints=800,intb=150):
Teacher(s=800),Shiyanyuan(b=150){}
voiddisplay1()
{cout<<"请输入教师兼职实验员的";
Teacher:
:
display();
cout<<"请输入教师兼职实验员的月工作量(小时):
";cin>>time;
}
};
Teachert[100];
Shiyanyuans[100];
Jianzhi1j[100];
3.2各模块的类C码算法
3.2.1文件录入函数
voidwenjianluru()//文件录入
{
intc;
for(i=0;;i++)
{
show();cin>>c;
if(c==4){cout<<"退出录入成功。
"<}
else
switch(c)
{
case1:
jiaoshiluru();break;
case2:
shiyuanyuanluru();break;
case3:
jianzhi1luru();break;
default:
{cout<<"上一次输入错误。
"<}
}
3.2.2文件录入函数
voidshuchu()//输出显示
{
cout<<"输出顺序为:
编号,名字,工资"<jiaoshishuchu();
shiyanyuanshuchu();
jianzhi1shuchu();
}
3.2.3文件查询函数
voidwenjianchaxun()//文件查询
{
intc;
for(i=0;;i++)
{
show3();cin>>c;
if(c==4){cout<<"退出查询成功。
"<}
else
switch(c)
{
case1:
jiaoshichaxun();break;
case2:
shiyanyuanchaxun();break;
case3:
jianzhi1chaxun();break;
default:
{cout<<"上一次输入错误。
"<}
}
3.2.4统计函数
voidtongji()//统计
{
intc;
for(i=0;;i++)
{
show4();cin>>c;
if(c==4){cout<<"退出统计成功。
"<}
else
switch(c)
{
case1:
jiaoshitongji();break;
case2:
shiyanyuantongji();break;
case3:
jianzhi1tongji();break;
default:
{cout<<"上一次输入错误。
"<}
}
4调试分析及设计体会
4.1相关数据截图
1)菜单截图
2)文件录入截图
3)文件显示截图
4)查询截图
4.2程序调试中的问题
开始对库不太熟悉,之前没有用过,所以在当使用再程序中始出现过语法错误,后来查询相关资料了解后发现其实所有对象都能够把一个文件名当成构造函数的变量,并能够自动的打开文件,如:
std:
:
ofstreamdictionary("myfile.txt");使用非常方便。
5.心得体会
这次的课程设计是我第一次通过自己构思,和同学讨论并且不断查阅资料来设计一项程序。
这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。
C语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。
要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。
只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。
在有解决不了的问题时,我会主动查阅相关的资料,或向其他同学询问,这不仅丰富了我们的知识,还增进了我们同学之间的友谊。
为了增大信息的安全性,需要用文件来存储信息,由于我们在上课时不注重对文件的运用,所以在这方面有较大的困难。
我先将书本认认真真地看了一遍,又做了一下课后习题来验证和增进自己的理解,终于,经过我们的不懈努力,我的程序有了突破,成功地实现了用文件来保存并查看学生的信息。
这次设计中,我的收获还有就是学会了用流程图来表达自己的想法,并根据流程图来逐步实现程序的功能。
开始的时候,我画流程图很是困难,需要一个多小时才能清楚的根据自己的想法画出图来,后来画多了,就更加了解它的功能,十分得心应手,能够比较快而准确的画出来。
6.附录
6.1源代码.
#include
#include
#include
#include
usingnamespacestd;
inti;
classPerson
{
public:
voiddisplay()
{
cout<<"姓名:
";cin>>name;
cout<<"编号:
";cin>>num;
}
charname[20];//名字
intnum;};//编号
classTeacher:
publicPerson//教师
{public:
Teacher(ints=800)
{score=s;}
voiddisplay1();
intscore;//基本工资
inttime;//月工作量
};
voidTeacher:
:
display1()
{cout<<"请输入";
Person:
:
display();
cout<<"请输入教师的月工作量(小时):
";
cin>>time;
}
classShiyanyuan:
publicPerson//实验员
{public:
Shiyanyuan(ints=650,intb=150)
{score=s;buzu=b;}
voiddisplay1()
{cout<<"请输入实验员的";
Person:
:
display();
}
intscore;//基本工资
intbuzu;//补助
};
classJianzhi1:
publicTeacher,publicShiyanyuan//教师兼职实验员
{public:
Jianzhi1(ints=800,intb=150):
Teacher(s=800),Shiyanyuan(b=150){}
voiddisplay1()
{cout<<"请输入教师兼职实验员的";
Teacher:
:
display();
cout<<"请输入教师兼职实验员的月工作量(小时):
";cin>>time;
}
};
Teachert[100];
Shiyanyuans[100];
Jianzhi1j[100];
voidshow()
{
cout<<"请输入你要录入的对象:
"<cout<<"1:
教师"<cout<<"2:
实验员"<cout<<"3:
教师兼职实验员"<cout<<"4:
退出录入"<cout<<"请选择:
";
}
voidjiaoshiluru()//教师录入
{
ofstreamoutfile("教师.txt",ios:
:
app);
if(!
outfile)
{
cerr<<"openerror!
"<exit(0);
}intb;
cout<<"请选择你要录入教师的个数:
";cin>>b;
for(i=0;i
{
t[i].display1();
outfile<}
outfile.close();
}
voidshiyuanyuanluru()//实验员录入
{
ofstreamoutfile("实验员.txt",ios:
:
app);
if(!
outfile)
{
cerr<<"openerror!
"<exit(0);
}intb;
cout<<"请输入你要录入实验员的个数:
";cin>>b;
for(i=0;i
{
s[i].display1();
outfile<
}
outfile.close();
}
voidjianzhi1luru()//教师兼职实验员录入
{
ofstreamoutfile("教师兼职实验员.txt",ios:
:
app);
if(!
outfile)
{
cerr<<"openerror!
"<exit(0);
}intb;
cout<<"请输入你要录入教师兼职实验员的个数:
";cin>>b;
for(i=0;i
{
j[i].display1();
outfile<:
num<<""<:
name<<""<:
score<<""<}
outfile.close();
}
voidwenjianluru()//文件录入
{
intc;
for(i=0;;i++)
{
show();cin>>c;
if(c==4){cout<<"退出录入成功。
"<}
else
switch(c)
{
case1:
jiaoshiluru();break;
case2:
shiyuanyuanluru();break;
case3:
jianzhi1luru();break;
default:
{cout<<"上一次输入错误。
"<}
}
voidjiaoshishuchu()//教师输出显示
{
ifstreaminfile("教师.txt",ios:
:
in);
intm;
for(i=0;i<100;i++)
{
infile>>t[i].num>>t[i].name>>t[i].score>>t[i].time;
if(t[i].num==0)break;
m=t[i].score+(t[i].time-24)*30;
cout<<"教师:
"<}
infile.close();
}
voidshiyanyuanshuchu()//实验员输出
{
fstreamiofile("实验员.txt",ios:
:
in);
intm;
for(i=0;i<100;i++)
{
iofile>>s[i].num>>s[i].name>>s[i].score>>s[i].buzu;
if(s[i].num==0)break;
m=s[i].score+s[i].buzu;
cout<<"实验员:
"<
}
iofile.close();
}
voidjianzhi1shuchu()//教师兼职实验员输出
{
fstreamiofile("教师兼职实验员.txt",ios:
:
in);
intm;
for(i=0;i<100;i++)
{
iofile>>j[i].Teacher:
:
num>>j[i].Teacher:
:
name>>j[i].Teacher:
:
score>>j[i].buzu>>j[i].time;
if(j[i].Teacher:
:
num==0)break;
m=j[i].Teacher:
:
score+j[i].buzu+(j[i].time-12)*30;
cout<<"教师兼职实验员:
"<:
num<<""<:
name<<""<}
iofile.close();
}
voidshuchu()//输出显示
{
cout<<"输出顺序为:
编号,名字,工资"<jiaoshishuchu();
shiyanyuanshuchu();
jianzhi1shuchu();
}
voidshow3()
{
cout<<"请输入你要查询的对象:
"<cout<<"1:
教师查询"<cout<<"2:
实验员查询"<cout<<"3:
教师兼职实验员查询"<cout<<"4:
退出查询"<cout<<"请选择一个操作:
";
}
voidjiaoshichaxun()
{
ifstreaminfile("教师.txt",ios:
:
in);
charnam[20];intm,n;
cout<<"请输入你要查询教师的名字:
";cin>>nam;
for(i=0,n=0;i<100;i++)
{
infile>>t[i].num>>t[i].name>>t[i].score>>t[i].time;
if(t[i].num==0)break;
if(strcmp(t[i].name,nam)==0)
{
n++;m=t[i].score+(t[i].time-24)*30;
cout<<"教师:
"<}
}
if(n==0)cout<<"没有你要查询的教师。
"<infile.close();
}
voidshiyanyuanchaxun()//实验员查询
{
fstreamiofile("实验员.txt",ios:
:
in);
intm,n;charnam[20];
cout<<"请输入你要查询实验员的名字:
";cin>>nam;
for(i=0,n=0;i<100;i++)
{
iofile>>s[i].num>>s[i].name>>s[i].score>>s[i].buzu;
if(t[i].num==0)break;
if(strcmp(s[i].name,nam)==0)
{
n++;m=s[i].score+s[i].buzu;
cout<<"实验员:
"<
}
}
if(n==0)cout<<"没有你要查询的实验员。
"<iofile.close();
}
voidjianzhi1chaxun()//教师兼职实验员查询
{
fstreamiofile("教师兼职实验员.txt",ios:
:
in);
intm,n;
charnam[20];
cout<<"请输入你要查询的教师兼职实验员的名字:
";
cin>>nam;
for(i=0,n=0;i<100;i++)
{
iofile>>j[i].Teacher:
:
num>>j[i].Teacher:
:
name>>j[i].Teacher:
:
score>>j[i].buzu>>j[i].time;
if(j[i].Teacher:
:
num==0)break;
if(strcmp(j[i].Teacher:
:
name,nam)==0)
{
n++;m=j[i].Teacher:
:
score+j[i].buzu+(j[i].time-12)*30;
cout<<"教师兼职实验员:
"<:
num<<""<:
name<<""<}
}
if(n==0)cout<<"没有你要查询的教师兼职实验员。
"<iofile.close();
}
voidwenjianchaxun()//文件查询
{
intc;
for(i=0;;i++)
{
show3();cin>>c;
if(c==4){cout<<"退出查询成功。
"<}
else
switch(c)
{
case1:
jiaoshichaxun();break;
case2:
shiyanyuanchaxun();break;
case3:
jianzhi1chaxun();break;
default:
{cout<<"上一次输入错误。
"<}