C课程设计报告学生上机管理系统.docx
- 文档编号:24777836
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:23
- 大小:152.60KB
C课程设计报告学生上机管理系统.docx
《C课程设计报告学生上机管理系统.docx》由会员分享,可在线阅读,更多相关《C课程设计报告学生上机管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
C课程设计报告学生上机管理系统
学生上机管理系统
1.需求分析
实现的目标
课程设计的任务:
制作一个小型的学生上机管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。
系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。
基本功能:
学生基本信息(学号,姓名,上机对应的设备编号,设备名称,设备状态)
扩展功能:
学生数据的添加、修改、与删除
学生数据的读取与存储
系统特点:
系统要能够对相应的数据进行很好的测试,系统的统计对设备的状态,人数都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名;程序中查找运用了两种查找方式即学号查找和姓名查找。
系统实现方案
第一步:
分析题目,建立类并派生出它的子类,画出类图。
第二步:
画出流程,根据流程图编写程序清单
第三步:
上机调试程序(使用单步调试,设置断点、分块调试的方法)。
第五步:
及时整理资料,撰写课程设计报告中有关这个题目的内容。
界面设计与数据
程序对学生上机据处理要求
1能够输入并浏览学生的基本信息;
2能够实现对学生信息的查询和修改;
3能够对成绩进行统计;
4能够对学号排序;
5能够对学生的信息进行保存;
现行的系统功能:
资料维护:
系统维护包括对各学生信息和成绩的录入操作。
资料维护:
对数据表中的信息进行浏览。
系统查询:
可以对学生的姓名,学号,设备信息来查询。
2.概要设计
1.现行系统组织结构图:
2.系统功能结构图:
3.详细设计
1.类设计
类:
student
数据成员
学号,姓名,性别,设备编号,设备名称
类:
school
成员函数
录入函数Input():
输入编号到计算机的成绩;
统计函数count():
统计各科的总成绩,计算平均成绩,统计各科的及格率;
查询函数found():
按学号或姓名查找学生的记录;
修改函数mend():
修改指定学号学生成绩记录;
统计函数ncount():
统计学生人数;
排序函数sort():
按学号排序;
删除函数del():
删除指定学号学生记录;
输出函数show():
输出班级所有学生成绩记录;
UML图:
2.界面设计
1.界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
2.功能设计
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。
应用系统主控界面包括学生信息录入,查找等功能模块。
学生信息录入功能完成学生信息和成绩的输入。
记录查询功能可以对数据各分类的记录进行查询。
3.系统主界面:
4.调式分析
本程序基本完成了题目要求的功能。
但是由于显示的限制,我未完成统计的运行功能,老师指导下完成了,要动脑子。
程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。
解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
5.用户使用说明
按1录入
按2显示
按3查找
按4删除
按5统计
等等来操作的学生上机管理系统的
6.测试结果
7.附录
""
classstudent
{
protected:
intnumber;
charname[20];
chardevicestatus[8];
chardeviceid[10];
chardevicename[20];
public:
student*next;
friendvoidschool:
:
sort();
student()
{
}
~student()
{
}
char*getname()
{
returnname;
}
intgetnumber()
{
returnnumber;
}
voidinput()
{
inte=1;
cout<<"\t\t\t按提示输入:
"< cout<<"\t\t输入编号: "; cin>>number; cout<<"\t\t输入姓名: "; cin>>name; do { cout<<"\t\t输入设备状态: "; cin>>devicestatus; if(strcmp(devicestatus,"开")==0||strcmp(devicestatus,"关")==0) { cout<<"\t\t输入设备编号: "; cin>>deviceid; cout<<"\t\t输入设备名称: "; cin>>devicename; e=0; } else { cout<<"\t\t\t无此类型状态! 重新输入! "< e=1; } } while(e); return; } voidinput(ifstream&is) { is>>number>>name>>devicestatus>>deviceid>>devicename; (); } voidoutput() { cout<<"学生基本信息如下: "< cout<<"编号: "< "< "< "< <<"设备名称: "< } voidoutput(ofstream&os) { os< < } }; school: : school() { head=newstudent; head->next=NULL; key=0; } school: : ~school() { deletehead; } voidschool: : input()//录入函数 { student*p,*p2=NULL; p=head; intn; while(p->next) p=p->next; while(n) {p2=newstudent; p2->input(); p->next=p2; p2->next=NULL; p=p->next; school: : setkey (1); cout<<"\t\t\t按1继续,按0返回: "; cin>>n; } } intschool: : find(student**p1,intnum,char*pn)//子查找函数 { student*p; p=head; while(p->next) { (*p1)=p; if((p->next)->getnumber()==num||! strcmp((p->next)->getname(),pn)) return1; p=p->next; } return0; } voidschool: : found()//查找函数 { student*p; intnum=-1,n=9; charname[20]="^"; do {cout<<"\t\t1: 按编号查找,2: 按姓名查找: "; cin>>n; } while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入编号: "; cin>>num; } if(n==2) { cout<<"\t\t\t输入姓名: "; cin>>name; } if(! find(&p,num,name)) { cout<<"\t\t找不到你要查找的内容! "< return; } (p->next)->output(); } voidschool: : del()//删除函数 { student*p,*p2; intnum; cout<<"\t\t\t输入编号: "; cin>>num; if(! find(&p,num,"^")) { cout<<"\t\t找不到你要删除的内容! "< return; } (p->next)->output(); p2=p->next; p->next=p2->next; deletep2; school: : setkey (1); } intschool: : ncount()//统计函数 { student*p; p=head; intamount=0; while(p->next) { p=p->next; amount++; } returnamount; } voidschool: : sort()//排序函数 { student*p1; student*temp=newstudent; student*temp1; student*temp2; inti,j,count; intn=ncount(); for(j=0;i { p1=head; for(i=0;i { count=i; while(count! =0) { p1=p1->next; count--; } if(p1->number>p1->next->number) { temp1=p1->next; temp2=p1->next->next; memcpy(temp,p1,sizeof(student)); memcpy(p1,p1->next,sizeof(student)); p1->next=temp1; memcpy(p1->next,temp,sizeof(student)); p1->next->next=temp2; } } } } voidschool: : show()//显示函数 { student*p; p=head; intn=0; while(p->next) { (p->next)->output(); p=p->next; n++; } } voidschool: : mend()//修改函数 { student*p; intnum=-1,n; charname[20]="^"; do { cout<<"\t\t1: 按编号修改,2: 按姓名修改: "; cin>>n; } while(n<1||n>2); if(n==1) { cout<<"\t\t\t输入编号: "; cin>>num; } if(n==2) { cout<<"\t\t\t输入姓名: "; cin>>name; } if(! find(&p,num,name)) { cout<<"\t\t找不到你要修改的内容! "< return; } (p->next)->output(); (p->next)->input(); school: : setkey (1); } voidschool: : save()//保存函数 { student*p; p=head; ofstreamos("",ios: : out); if(school: : getkey()==1) { while(p->next) { (p->next)->output(os); p=p->next; } } cout<<"\t\t\t文件已保存! "< school: : setkey(0); } voidschool: : begin()//初始化函数 { student*p,*p2; p=head; clear(); longt; ifstreamis("",ios: : in); if(! is) { ofstreamos("",ios: : out); (); return; } intnum=-1; while (1) { num=-1; t=(); is>>num; (t); if(num<0) { (); return; } p2=newstudent; p2->input(is); p->next=p2; p2->next=NULL; p=p->next; } } voidschool: : clear()//清空函数 { student*p,*p2; p=head->next; while(p) { p2=p; p=p->next; deletep2; } } charschool: : mainmenu()//主选菜单函数 { charn[8]; cout<<"\n\n☆☆☆☆欢迎进入学生上机管理系统☆☆☆☆"< <<"****************************"< <<"****************************"< <<"**1: 录入学生信息**"< <<"**2: 显示学生信息**"< <<"**3: 查找学生信息**"< <<"**4: 删除学生信息**"< <<"**5: 统计学生数量**"< <<"**6: 学生学号排序**"< <<"**7: 修改学生信息**"< <<"**8: 保存学生信息**"< <<"**0: 退出系统**"< <<"****************************"< <<"****************************"< <<"请选择: "; cin>>n; returnn[0]; } student; classschool { public: school(); ~school(); voidinput(); voidmend(); voiddel(); intfind(student**p,intnum,char*pn="^"); voidfound(); intncount(); voidsort(); voidshow(); voidsave(); voidbegin(); voidclear(); charmainmenu(); intgetkey(){returnkey;} voidsetkey(intk){key=k;} private: student*head; intkey; }; "" voidmain()//主函数 { schoolpp; intk=1; charn; (); while(k==1) { n=(); switch(n) { case'1': ();break; case'2': ();break; case'3': ();break; case'4': ();break; case'5': ();break; case'6': ();break; case'7': ();break; case'8': ();break; case'0': if()==1) { cout<<"\t\t\t是否保存? 1: 保存0: 不保存: "; cin>>k; if(k==1) (); } (); k=0; break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 学生 上机 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)