《C++班级管理系统.pdf》由会员分享,可在线阅读,更多相关《C++班级管理系统.pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、仲恺农业工程学院课程设计报告班级管理系统课程面向对象课程设计姓名院(系)计算机科学与工程学院专业年级计算机科学与技术班学号指导教师日期 2011年 8 月 29 日-2011 年 9 月 12 日仲恺农业工程学院教务处制目录1.需求与功能分析.11.1 需求分析.11.2 功能分析.11.2.1 系统功能分析.12.系统框架图.13.类图设计.24.对每个类的说明,包括数据成员、成员函数的含义与功能.35.系统中定义的其它非成员函数及其说明.76.举例说明 1、2 个比较有特点的算法.10 7.存在的问题及对策.14 8.用户手册及测试结果.14 8.1 用户手册.14 8.2 测试结果.14
2、 9.心得体会.18 10.参考文献.18 11.附:程序源代码.19 1 1.需求与功能分析1.1 需求分析21 世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,班级管理系统软件为学校办公室带来了极大的方便。使用班级信息管理系统能够快速有效的对班级学生信息进行高效率的管理分类。能够节省下大量的时间,而且能对班级信息进行有效的分类,使管理过程更加轻松,更加有效。1.2 功能分析本系统性能力求
3、易于使用,具体有较高的扩展性和可维护性,其功能主要分为六大类:用户管理:用于对用户的添加、修改及查询。学生信息管理:添加、删除、输出、修改学生信息等。学生信息查询:对学生信息的查询,直接输出学生信息。1.2.1 系统功能分析录入功能:为一用户提供相应的录入功能。修改功能:对录入错误的信息进行修改的功能,避免由于输入错误而引起的信息保存错误。删除功能:对于过期信息的处理办法,直接进行删除处理。不保存不必要的信息。输出功能:将所有学生的信息进行一次性的输出,方便查阅。退出功能:结束并关闭系统。2.系统框架图2 图 1 系统框架3.类图设计class student private:int sno;
4、/学号char name8,sex2;int age;char birth10;/出生日期char folk2;/民族public:student();student();void luru();/学生信息录入构造函数3 void shuchu();/学生信息输出构造函数void setsno(int temp)sno=temp;int getsno()return sno;char*getname()return name;char*getspeciality();void change();/学生信息修改构造函数void read();void write();4.对每个类的说明,包括数据
5、成员、成员函数的含义与功能Student 类:数据成员:int sno;/学号char name8,sex2;int age;char birth10;/出生日期char folk2;/民族成员函数:void luru();4/学生信息录入构造函数 ifstream tfile(max.txt,ios:binary|ios:nocreate);tfile.close();ofstream ofile(max.txt);tfile.close();cout请输入学生信息 endl;cout学生学号:sno;cout学生姓名:name;cout性别(男,女):sex;while(strcmp(se
6、x,男)!=0&strcmp(sex,女)!=0)cout错误请重新输入!sex;cout 年龄:age;cout 出生日期:birth;cout民族:folk;void shuchu();/学生信息输出构造函数 coutsetw(8)setiosflags(ios:left)snosetw(10)setiosflags(ios:left)5 namesetw(8)setiosflags(ios:left)sexsetw(8)setiosflags(ios:left)agesetw(10)setiosflags(ios:left)birthsetw(8)setiosflags(ios:left
7、)folkendl;void setsno(int temp)sno=temp;int getsno()return sno;char*getname()return name;char*getspeciality();void change();/学生信息修改构造函数 cout请输入要修改人员的信息:endl;cout是否改写学号(Y/N)ch;if(ch=Y|ch=y)cout请输入新学号 sno;cout请输入新姓名:name;cout性别(男,女):sex;if(strcmp(sex,男)!=0&strcmp(sex,女)!=0)cout输入错误请重新输入!:sex;cout年龄:ag
8、e;cout出生日期:birth;cout民族:folk;cout你刚刚输入的学生信息如下:endl;shuchu();void read();/读数据 ifstream afile(student.txt,ios:nocreate);afile.read(char*)&information,sizeof information);void write();/写入数据 ofstream bfile(student.txt,ios:app);bfile.write(char*)&information,sizeof information);7 5.系统中定义的其它非成员函数及其说明void
9、shanchu()/删除函数 int ch;cout请输入要删除的学生的学号:ch;ifstream out(student.txt,ios:nocreate);ofstream in(student1.txt,ios:trunc);while(out)if(out.read(char*)&information,sizeof information)if(ch!=information.getsno()in.write(char*)&information,sizeof information);void menu()/菜单函数 cout endl;cout 班级管理系统 endl;cout
10、 endl;cout endl;cout 0.退出系统 endl;cout 1.学生信息录入 endl;cout 2.学生信息修改 endl;cout 3.学生信息删除 endl;cout 4.学生信息输出 endl;cout 请选择操作(0=4)endl;8 void input(void)/输入判停函数 char ch;information.luru();write();cout 你还要输入下一位学生的信息吗(Y/N)!ch;if(ch=Y|ch=y)input();void change()/学生信息修改函数 int ch,p=0,l=0;cout 请输入你要修改的学生的学号:ch;i
11、fstream efile(student.txt,ios:nocreate);while(efile.good()efile.seekg(sizeof(information)*p);if(efile.read(char*)&information,sizeof information)if(ch=information.getsno()information.shuchu();ch=0;information.change();ofstream ffile(student.txt,ios:nocreate|ios:in);ffile.seekp(sizeof(information)*p)
12、;ffile.write(char*)&information,sizeof information);9 ffile.close();l+;return;p+;efile.close();if(l!=1)/判断该学生是否存在cout 没有你所要修改的学生信息!ch;switch(ch)case 0:exit(0);menu();break;case 1:input();menu();break;case 2:10 change();menu();break;case 3:shanchu();menu();break;case 4:output();menu();break;default:m
13、enu();cout 输入无效请重新输入(0=4)endl;break;while(1);6.举例说明 1、2 个比较有特点的算法先输入想要进行修改的学生的学号,然后再进行判断。判断此学号是否存在。如果存在,则进行修改,如果不存在,输出错误信息并要求重新输入。void change()/修改函数 int ch,p=0,l=0;cout请输入你要修改的学生的学号:ch;ifstream efile(student.txt,ios:nocreate);while(efile.good()efile.seekg(sizeof(information)*p);11 if(efile.read(char
14、*)&information,sizeof information)if(ch=information.getsno()information.shuchu();ch=0;information.change();ofstream ffile(student.txt,ios:nocreate|ios:in);ffile.seekp(sizeof(information)*p);ffile.write(char*)&information,sizeof information);ffile.close();l+;return;p+;efile.close();if(l!=1)cout 没有你所要
15、修改的学生信息!endl;通过输入学号,打开文件,对文件里面的数据进行操作。根据学号,对学生信息进行删除处理。void shanchu()/删除函数 int ch;cout 请输入要删除的学生的学号:ch;ifstream out(student.txt,ios:nocreate);12 ofstream in(student1.txt,ios:trunc);while(out)if(out.read(char*)&information,sizeof information)if(ch!=information.getsno()in.write(char*)&information,size
16、of information);in.close();out.close();ofstream gfile(student.txt,ios:trunc);gfile.close();ifstream ifile(student1.txt,ios:nocreate);ofstream hfile(student.txt,ios:trunc);while(ifile)if(ifile.read(char*)&information,sizeof information)hfile.write(char*)&information,sizeof information);ifile.close();
17、hfile.close();选择菜单函数,对要进行的操作选项进行选择,选择是否录入新的学生信息,或者是修改已有的学生信息,删除过期的学生信息。void select()/选择菜单函数 int ch;do 13 cinch;switch(ch)case 0:exit(0);menu();break;case 1:input();menu();break;case 2:change();menu();break;case 3:shanchu();menu();break;case 4:output();menu();break;default:menu();cout 输入无效请重新输入(0=4)e
18、ndl;break;while(1);14 7.存在的问题及对策在编写代码的过程中,由于对数据库的理解运用能力的不足,缺乏这一方面的知识,结果用了文件流的方式来代替。总的来说。这个程序是非常简单的。系统功能也较为简单,但是比较使用。没有实现一些比较复杂的功能,也都是由于平常动手能力不足的结果,需要在今后的学习中去巩固去完善。8.用户手册及测试结果8.1 用户手册该程序使用简单,只需要在菜单输入想要进行的操作选项,然后按照指示进行输入、运行即可。8.2 测试结果图 2 主操作界面:正常15 图 3 学生信息输入界面:正常图 4 增加输入:正常16 图 5 学生信息修改:正常17 图 6 学生信息
19、删除结果:正常18 图 7 退出系统:正常9.心得体会在本次实验过程中,由于是第一次做系统。一开始对实现功能很模糊。不知道从哪里下手。在网上搜索了很多,最后从别人的模板中找到了适用的方法。从他们的代码中学习各个函数实现的办法。虽然实现了一定的功能,但是还是存在很多的缺陷。数据库也没有成功的实现,这些在以后的学习中都需要进行学习和提高。参考文献1 C+面向对象程序设计杜茂康 吴健 王永 编著 北京电子工业出版社2 C+基础教程徐孝凯 编著河南电子科技出版社19 11.附:程序源代码头文件:/class.h class student private:int sno;/学号char name8,s
20、ex2;int age;char birth10;/出生日期char folk2;/民族public:student();student();void luru();/学生信息录入构造函数void shuchu();/学生信息输出构造函数void setsno(int temp)sno=temp;int getsno()return sno;char*getname()return name;char*getspeciality();void change();/学生信息修改构造函数void read();void write();student:student()20 student:stu
21、dent()void student:luru()ifstream tfile(max.txt,ios:binary|ios:nocreate);tfile.close();ofstream ofile(max.txt);tfile.close();cout请输入学生信息 endl;cout学生学号:sno;cout学生姓名:name;cout性别(男,女):sex;while(strcmp(sex,男)!=0&strcmp(sex,女)!=0)cout错误请重新输入!sex;cout年龄:age;cout出生日期:birth;cout民族:folk;21 void student:shuch
22、u()coutsetw(8)setiosflags(ios:left)snosetw(10)setiosflags(ios:left)namesetw(8)setiosflags(ios:left)sex setw(8)setiosflags(ios:left)agesetw(10)setiosflags(ios:left)birthsetw(8)setiosflags(ios:left)folkendl;void student:change()cout请输入要修改人员的信息:endl;cout是否改写学号(Y/N)ch;if(ch=Y|ch=y)cout请输入新学号 sno;cout请输入
23、新姓名:name;cout性别(男,女):sex;if(strcmp(sex,男)!=0&strcmp(sex,女)!=0)cout输入错误请重新输入!:sex;22 cout年龄:age;cout出生日期:birth;cout民族:folk;cout你刚刚输入的学生信息如下:endl;shuchu();student information;/student 类的全局变量void menu()cout endl;cout 班级管理系统 endl;cout endl;cout endl;cout 0.退出系统endl;cout 1.学生信息录入endl;cout 2.学生信息修改endl;co
24、ut 3.学生信息删除endl;cout 4.学生信息输出endl;cout 请选择操作(0=4)endl;void read()ifstream afile(student.txt,ios:nocreate);23 afile.read(char*)&information,sizeof information);void write()ofstream bfile(student.txt,ios:app);bfile.write(char*)&information,sizeof information);void input(void)char ch;information.luru()
25、;write();cout你还要输入下一位学生的信息吗(Y/N)!ch;if(ch=Y|ch=y)input();void change()int ch,p=0,l=0;cout请输入你要修改的学生的学号:ch;ifstream efile(student.txt,ios:nocreate);while(efile.good()efile.seekg(sizeof(information)*p);if(efile.read(char*)&information,sizeof information)if(ch=information.getsno()24 information.shuchu(
26、);ch=0;information.change();ofstream ffile(student.txt,ios:nocreate|ios:in);ffile.seekp(sizeof(information)*p);ffile.write(char*)&information,sizeof information);ffile.close();l+;return;p+;efile.close();if(l!=1)cout没有你所要修改的学生信息!endl;void shanchu()/删除函数 int ch;cout请输入要删除的学生的学号:ch;ifstream out(student
27、.txt,ios:nocreate);ofstream in(student1.txt,ios:trunc);while(out)if(out.read(char*)&information,sizeof information)25 if(ch!=information.getsno()in.write(char*)&information,sizeof information);in.close();out.close();ofstream gfile(student.txt,ios:trunc);gfile.close();ifstream ifile(student1.txt,ios:
28、nocreate);ofstream hfile(student.txt,ios:trunc);while(ifile)if(ifile.read(char*)&information,sizeof information)hfile.write(char*)&information,sizeof information);ifile.close();hfile.close();void output()int i=0;ifstream cfile(student.txt,ios:nocreate);cout学号 setw(8)26 姓名 setw(8)姓别 setw(8)年龄 setw(10
29、)出生日期 setw(8)民族 endl;while(cfile)if(cfile.read(char*)&information,sizeof information)information.shuchu();i+;if(i!=0)cout一共有 i 个学生信息 endl;else cout还没有输入学生信息 ch;switch(ch)case 0:exit(0);27 menu();break;case 1:input();menu();break;case 2:change();menu();break;case 3:shanchu();menu();break;case 4:output();menu();break;default:menu();cout输入无效请重新输入(0=4)endl;break;while(1);28 源文件:#include#include#include#include#include#include#includeclass.h void main()menu();select();
限制150内