1、学生毕业设计管理系统_课程设计报告书 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 《C++面
2、向对象程序设计》 综合项目报告 项目名称: 学生毕业设计管理系统 专 业: 班 级: 项目成员: 报告日期:2010年12月 31 设计任务 一、基本要求 (1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 (4)要求利用
3、面向对象的方法以及C++的编程思想来完成系统的设计; (5)要求在设计的过程中,建立清晰的类层次; (6)在系统中至少要定义三个类,每个类中要有各自的属性和方法; 二、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。 三、设计方法和基本原理: 1、问题描述(功能要求): 某学校,主要有四类学生:专科生、本科生、硕士研究生和博士研究生.现在,需要存储这些学生的编号、姓名、年级和班级、级别、论文题目、指导老师和成绩,并显示全部信息。 要求: 1)其中,学生编号在生成学生信息时同时生成,每输入一个学生信息编号顺序加1
4、 2)程序对所有学生都有提升级别的功能 3)能按姓名或者编号显示、查找、增加、删除和保存各类学生的信息 2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 四、程序设计和调试: ; 以对话框的形式,展现程序的实现。 1、设计思路: 根据对学生信
5、息的增删改查,为四个基本的模块,然后展开,运用文件流的方法,实现数据的保存。在原有基础上增加4个基本模块的一些功能,如以不同形式查看学生的信息。 系统功能模块图 类的层次图 学生类 学生信息结构体 姓名 学位 学号 调试过程 --—————--—-——-——--—-Configuration: Test — Win32 Debug-----———-—-—--—-—--— Compiling... Test
6、cpp H:\C++项目\学生毕业设计管理系统\Test。cpp(50) : error C2039: 'next’ : is not a member of 'student’ H:\C++项目\学生毕业设计管理系统\Test.cpp(23) : see declaration of 'student’ H:\C++项目\学生毕业设计管理系统\Test.cpp(159) : error C2039: 'next’ : is not a member of ’student' H:\C++项目\学生毕业设计管理系统\Test.cpp(23) : see
7、 declaration of ’student’
H:\C++项目\学生毕业设计管理系统\Test.cpp(159) : fatal error C1903: unable to recover from previous error(s); stopping compilation
执行 cl。exe 时出错。
Test。obj — 1 error(s), 0 warning(s)
程序代码
#include 〈iostream〉
#include 〈string>
#include〈cmath>
#include 8、manip>
using namespace std;
int amount=0;
int num=100; //当前最高学号
ofstream *file[50];
struct info //学生信息结构体
{
string xy;
string zy;
string bj;
string teacher;
string lw;
string score;
struct info *next;
};
class student //学生数据类
{
public:
int id;
string mun;
st 9、ring name;
info sc3;
class student *next;
};
void input(student *head); //录入 //函数声明//
void search1(student *head); //姓名查询
void search2(student *head); //学号查询
void change(student *head); //修改
void shanchu(student *head); //删除
void get(student *he 10、ad); //取数据
void display(); //显示菜单
void show(student *head); //显示数据
void readin(student *head); //保存数据
string int_char(int);
void main() ////主函数
{
system(”color f0");
char x;
bool flag2=0;
student *head=new student; / 11、/初始化学生数据
head—>next=NULL;
cout<<” ╭═══════════════╮ "<〈endl;
cout〈〈” ║ 学生毕业管理设计系统 ║ ”〈 12、dl;
cout〈<" ║ ╰═══════════════╯ ║"〈〈endl;
cout〈<” ║ ╭───────────────────────╮ ║”<〈endl;
cout<<" ╰══┤ 作者: 王雪亮 毛亚明 陈晓琴 ├══╯”< 13、 do
{
do
{
cin〉>x;
if((x〉=’0’&&x<='8'))
flag2=1;
else
{
cout〈〈”指令错误!!!!!!!!!!”〈〈endl;
cout〈〈” 请选择相应的数字进行操作: ";
}
}while(flag2==0);
switch(x)
{
case '1’:cout〈<”******************************现在进行学生信息录入***************************** 14、*\n”;
input(head);
cout〈〈"输入的学生信息为:\n”;
show(head);
cout<〈endl;
display();
break;
case '2':
{
char z;
cout<<"******************************现在进行学生信息查询******************************\n";
cout〈<”请选择查询方式:";
cout〈<”(0).姓名查询;(1)。学号查询:”;
cin〉> 15、z;
while(z!=’0’&&z!=’1’)
{
cout〈〈"指令错误<请选择(0)或者(1)!〉!!!!!!!"〈〈endl;
cout〈<”请选择查询方式:(0)。姓名查询;(1).学号查询:";
cin>>z;
}
switch(z)
{
case ’0’: search1(head);break;//按姓名查询
case '1’: search2(head);break;//按学号查询
}
cout< 16、ndl;
display();
break;
}
case ’3': cout<〈"******************************现在进行学生信息修改******************************\n";
change(head);
cout<〈endl;
display();
break; //按姓名修改
case '4’: cout〈〈”******************************现在进行学生信息删除******************** 17、**********\n”;
shanchu(head);
show(head);
cout〈〈endl;
display();
break; //删除
case ’5': cout〈<"******************************现在进行显示学生信息******************************\n”;
show(head);
cout〈〈endl;
display();
break; 18、 //显示数据
case ’6’:cout〈〈"******************************现在进行提取学生信息******************************\n";
get(head);
cout〈 19、
display();
break;
case ’8':
cout〈 20、 \n";
cout<〈” [1]-录入; [2]-查询; \n”;
cout<〈” [3]—修改; [4]—删除; \n";
cout<<” [5]—显示; [6]—提取; \n";
cout〈<” [7]-保存; [8]—退出; \n";
cout<〈" 请选择你需要的数字进行操作: ";
}
void show(st 21、udent *head) //显示学生数据
{
student *stu=head;
cout<〈”| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 | 成绩| ”< 22、 | ”< 23、 *head) //保存学生数据
{
char a;
student *stu=head—>next;
cout<〈"现在保存输入学生数据,是否继续操作?(y/n)";
cin〉>a;
ofstream outfile(”D:\\课设\\学生信息.txt”,ios::out);
if(! outfile)
{
cout〈<”打开文件错误!!!!!!!\n”;
exit(0);
}
while(a!=’n’)
{
while(stu!=NULL)
{
outfile<<"* 24、**********************第"<〈amount<<"个学生的数据:*************************\n”;
outfile< 25、"< 26、eak;
}
cout〈<”。。....成功将学生数据保存到<学生信息.txt〉中! ";
outfile。close();
}
void input(student *head) //录入学生数据
{
char c;
int j=0;
student *p=head;
file[j]=new ofstream("D:\\课设\\学生信息。txt",ios::app);
do
{
student *stu=new student;
(*stu)。id=num+1;
num++;
cout〈<”请输入学位(专 27、科生,本科生,硕士研究生,博士研究生):"<〈setw(9);
cin>>(*stu)。mun;
cout<<”请输入姓名:”〈〈setw(20);
cin>>(*stu).name;
cout<<”请输入该生所在学院:"<〈setw(20);
cin〉〉(*stu)。sc3.xy;
cout<<”请输入该生所在专业:"<〈setw(20);
cin〉>(*stu)。sc3。zy;
cout〈<”请输入该生所在班级:”< 28、生导师姓名:”〈〈setw(20);
cin〉>(*stu).sc3。teacher;
cout<<”请输入该生论文标题:”〈 29、c!='n')
{
cout<〈”指令错误<请输入y/n!>!!!!!!”〈 30、0;
cout〈<”请输入你要查询的学生姓名:";
cin〉>name;
do{
if(stu!=NULL&&name==(*stu)。name) //输出总成绩
{
flag=1;
cout〈<”您要查询的学生是:”〈 31、t〈<"| ”〈 32、 cout〈<" | "< 33、
cout〈〈"您想继续查询吗?(y/n)";
cin〉>c;
}
} while(c==’y');
}
void search2(student *head)//用学号查询学生数据
{
char c;int no;
do
{
student *stu=head-〉next;
int flag=0;
cout〈〈”请输入你要查询的学生学号:”;
cin>>no;
do
{
if(stu!=NULL&&no==(*stu)。id)
{
flag= 34、1;
cout〈<”您要查询的学生是:"〈 35、out〈<” | "〈 36、flag==0)
cout〈<”对不起!您要查询的学生不存在!!!!!!!"〈〈endl;
cout<〈"您想继续查询吗?(y/n)”;
cin>>c;
while(c!=’y'&&c!='n')
{
cout〈〈”指令错误<请输入y/n!>!!!!!!!”〈〈endl;
cout〈<"您想继续查询吗?(y/n)"〈 37、 char c;
do
{
bool flag2=0;
student *stu=head ;
info sc3;
string mu;
cout<〈"请输入您要修改的学生的姓名:";
cin>〉name;
do
{
if(name==(*stu).name)
{
flag2=1;
cout〈<”请输入新学位信息:”;
cin>〉mu;
cout<〈”请输入新学院信息:";
cin〉>sc3。xy;
cout〈〈"请输入新专业信息:" 38、
cin〉〉sc3。zy;
cout〈<"请输入新班级信息:”;
cin〉>sc3。bj;
cout〈〈”请输入新导师信息:";
cin>〉sc3。teacher;
cout<<"请输入新论文信息:”;
cin〉〉sc3.lw;
cout<〈"请输入新加权成绩信息:”;
cin>>sc3.score;
(*stu).mun=mu;
(*stu).sc3.xy=sc3.xy;
(*stu).sc3。zy=sc3。zy;
(*stu) 39、sc3。bj=sc3。bj;
(*stu).sc3.teacher=sc3.teacher;
(*stu).sc3.lw=sc3。lw;
(*stu)。sc3.score=sc3.score;
cout〈〈”| 学号 | 学位 | 姓名 | 学院 | 专业 | 班级 | 导师 | 论文 | 成绩 | "<〈endl;
cout〈〈”| ”〈 40、〈setw(6)<〈(*stu).name;
cout<<” | "〈 41、cout<<"|"< 42、in〉〉c;
}
}while(c==’y');
}
void shanchu(student *head)//删除学生数据
{
char c;int no;
do
{
int flag=0;
cout<<"请输入你要删除的学生学号:”;
cin〉〉no;
student *q,*p;
q=head;
while(q—〉next!=NULL&&q->next—>id!=no)
q=q-〉next;
if(q—〉next!=NULL)
{
flag=1;
p 43、q—〉next;
q—>next=q—>next—>next;
amount—-;
free(p);
cout<〈"...。。.成功删除! ”;
}
if(flag==0)
cout<<”对不起!您要删除的学生不存在!!!!!!!"<〈endl;
cout<<"您想继续删除吗?(y/n)";
cin〉〉c;
while(c!='y’&&c!='n’)
{
cout<〈”指令错误〈请输入y/n!>!!!!!!!”<〈endl;
cout〈<"您想继续删除吗?(y/n)";
44、cin>〉c;
}
}while(c==’y');
}
void get(student *head) //提取学生数据
{
student *p;
p=head;
int j=0;
string no;
cout<〈"请输入您想提取的学号前3位:";
cin〉>no;
string aa;
aa=int_char(p—>next—〉id);
while(p—>next!=NULL)
{
if(no==aa.substr(0,7))
{
cout〈〈"管理系统有您要提取的信息!”<〈endl;
45、j=1;
}
else p=p—>next;
if(j==1)
break;
}
if(j==1)
{
int c,m=0;
string b,b1,e,infoma[6]={"xueyuan”,"zhuanye”,”banji”,”daoshi”,”lunwen",”jiaquan”};
string kemu[6]={"学院","专业",”班级",”导师",”论文",”加权"};
cout<<”输入您想提取的信息代码:"< 46、endl;
cout〈<”4—->导师 5—-〉论文 6——>加权"< 47、
{
cout〈<"打开错误!!!!!!!"< 48、—--—————-——-—--————"〈〈endl;
outfile〈<”|”〈〈setw(11)<〈p->next-〉id〈<” | ”〈 49、se 3:outfile〈 50、 |”;
outfile<〈endl;
break;
}
p=p—>next;
}
outfile〈〈" —————--—--—--——-—--———---————”<






