程序设计报告教务处任选课管理系统.docx

上传人:b****2 文档编号:24414510 上传时间:2023-05-27 格式:DOCX 页数:44 大小:308.24KB
下载 相关 举报
程序设计报告教务处任选课管理系统.docx_第1页
第1页 / 共44页
程序设计报告教务处任选课管理系统.docx_第2页
第2页 / 共44页
程序设计报告教务处任选课管理系统.docx_第3页
第3页 / 共44页
程序设计报告教务处任选课管理系统.docx_第4页
第4页 / 共44页
程序设计报告教务处任选课管理系统.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

程序设计报告教务处任选课管理系统.docx

《程序设计报告教务处任选课管理系统.docx》由会员分享,可在线阅读,更多相关《程序设计报告教务处任选课管理系统.docx(44页珍藏版)》请在冰豆网上搜索。

程序设计报告教务处任选课管理系统.docx

程序设计报告教务处任选课管理系统

程序设计报告

(2012/2013学年第一学期)

 

题目:

教务处任选课管理系统

 

专业计算机科学与技术(信息安全)

学生姓名陈松健

班级学号11001024

指导教师王少辉

指导单位计算机学院信息安全系

日期2012/12/5

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

 

教师签名:

年月日

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

一、课题内容和要求

用C/C++设计,能实现对教务处中的任选课进行添加、修改、查询、冲突提示等功能,能对全校任选课的情况进行记录和管理。

基本要求:

(1)任选课记录中的每一条信息包括:

课程名、教师名、开课的院系、上课时间、课程简介、电子邮件。

(2)将任选课记录用一个文件存储,文件类型可以是文本文件或是二进制文件。

系统必须的基本功能:

(1)查看功能:

1当输入某课程名时,显示出此课程名中所有数据的信息,如教师名、开课的院系、上课时间等信息;

2当输入某院系名时,显示出此院系开设的所有任选课;

(2)添加数据功能:

1能录入新数据添加到任选课记录文件中,当录入了重复的任选课时,则提示数据录入重复并取消录入;

2录入的新数据能按递增的顺序自动进行条目编号。

(3)修改功能:

选中某个任选课名时,可对此任选课在任选课记录中相应数据进行修改。

(4)删除功能:

选中某个任选课名时,可对此任选课名在任选课记录中的相应数据进行删除,并自动调整后续条目的编号。

(5)主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。

 

二、需求分析

 

查看

添加

 

修改/删除

教务处任选课管理系统

保存

 

恢复

(1)查看功能:

3当输入某课程名时,显示出此课程名中所有数据的信息,如教师名、开课的院系、上课时间等信息;

4当输入某院系名时,显示出此院系开设的所有任选课;

(2)添加数据功能:

3能录入新数据添加到任选课记录文件中,当录入了重复的任选课时,则提示数据录入重复并取消录入;

4录入的新数据能按递增的顺序自动进行条目编号。

(3)修改功能:

选中某个任选课名时,可对此任选课在任选课记录中相应数据进行修改。

(4)删除功能:

选中某个任选课名时,可对此任选课名在任选课记录中的相应数据进行删除,并自动调整后续条目的编号。

(5)主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。

(6)恢复功能:

把数据恢复到上次退出程序时的内容。

三、概要设计

//(任选课)

classCourse{

charname[40];

charteacher[20];

charcollege[20];

chartime[40];

charintro[40];

charemail[20];

public:

//*********课程*缺省构造函数**********************

Course(){

strcpy(name,"");

strcpy(teacher,"");

strcpy(college,"");

strcpy(time,"");

strcpy(intro,"");

strcpy(email,"");

}

//*********课程*构造函数**********************

Course(char*name,char*teacher,char*college,char*time,char*intro,char*email){

strcpy(this->name,name);

strcpy(this->teacher,teacher);

strcpy(this->college,college);

strcpy(this->time,time);

strcpy(this->intro,intro);

strcpy(this->email,email);

}

//*********课程*Show函数(显示课程信息)**********************

voidShow(){

cout<<"课程名:

"<

cout<<"教师名:

"<

cout<<"开课的院系:

"<

cout<<"上课时间:

"<

cout<<"课程简介:

"<

cout<<"电子邮件:

"<

}

//*********课程*isSame函数(查询课程名)**********************

boolisSame(constchar*name){

if(strcmp(name,this->name)==0)

return1;

else

return0;

}

//*********课程*isInCollege函数(查询学院名)**********************

boolisInCollege(constchar*college){

if(strcmp(college,this->college)==0)

return1;

else

return0;

}

//*********课程*GetName函数(输出课程名)**********************

char*GetName(){

returnname;

}

//*********课程*Getall函数(输出课程内容)**********************

voidGetall(char*all){

strcpy(all,name);

strcpy(all+50,teacher);

strcpy(all+70,college);

strcpy(all+90,time);

strcpy(all+130,intro);

strcpy(all+230,email);

}

};

//(顺序表)

classList{

Course*p;

intlen;

intmax;

public:

List(){

p=NULL;

len=0;

max=0;

}

~List(){

if(p)

delete[]p;

}

//*********顺序表*GetElem函数(查找与查询的名字相同的课程地址)**********************

Course*GetElem(constchar*name){

inti;

for(i=0;i

if(p[i].isSame(name)==1)

returnp+i;//如果存在,返回地址,如果不存在,返回NULL

returnNULL;

}

//*********顺序表*Creat函数(添加课程信息)**********************

Course*Creat(){

charname[50],teacher[20],college[20],time[40],intro[100],email[20];

cout<<"请依次输入课程名、教师名、开课的院系、上课时间、课程简介、电子邮件"<

cin>>name>>teacher>>college>>time>>intro>>email;

Course*c=newCourse(name,teacher,college,time,intro,email);

returnc;

}

//*********顺序表*ListInsert函数(将新的课程信息插入顺序表)**********************

voidListInsert(Courset){

if(!

p)

p=newCourse();

if(len==max){

Course*newp=(Course*)realloc(p,(max+10)*sizeof(Course));//当长度不够时,申请10个Course空间

if(!

newp){

cout<<"ERROR:

CANNOTGETSPACE"<

return;

}

p=newp;//将新申请的空间接到原表后

max+=10;

}

p[len]=t;

len++;

}

//*********顺序表*ListDelete函数(将课程信息移除出表)**********************

voidListDelete(inti){

for(intj=i;j

*(p+j-1)=*(p+j);//将后面的Course前移覆盖前一个Course

}

len--;//长度减一

}

//*********顺序表*Showdefaultname函数(显示已有课程名)**********************

voidShowdefaultname(){

cout<<"已有的课程:

"<

for(inti=0;i

{

cout<

cout<

}

}

//*********顺序表*ShowByName函数(检查查询名称是否存在并输出)**********************

voidShowByName(){

charname[50];

cout<<"请输入欲查询的课程名称"<

cin>>name;

if(len==0)

cout<<"系统尚未录入任何信息"<

else{

Course*c=GetElem(name);

if(!

c)

cout<<"未查询到相关信息"<

else

c->Show();

}

}

//*********顺序表*ShowByCollege函数(检查查询名称是否存在并输出)**********************

voidShowByCollege(){

charcollege[20];

cout<<"请输入欲查询的院系名称"<

cin>>college;

if(len==0)

cout<<"系统尚未录入任何信息"<

else{

inti;

boolflag=1;

for(i=0;i

if(p[i].isInCollege(college)){

p[i].Show();

flag=0;

}

if(flag)

cout<<"未查询到相关信息"<

}

}

//*********顺序表*Add函数(添加课程)**********************

voidAdd(){

Course*c=Creat();

if(GetElem(c->GetName())!

=NULL){

cout<<"该课程已经存在"<

return;

}

ListInsert(*c);

}

//*********顺序表*Remove函数(删除课程)**********************

voidRemove(){

charname[50];

cout<<"请输入欲删除的课程名称"<

cin>>name;

if(len==0)

cout<<"系统尚未录入任何信息"<

else{

Course*c=GetElem(name);

if(!

c)

cout<<"未查询到相关信息"<

else

ListDelete(c-p+1);//删除c-p+1位置的Course

}

}

//*********顺序表*Change函数(修改课程)**********************

voidChange(){

charname[50];

cout<<"请输入欲修改的课程名称"<

cin>>name;

if(len==0)

cout<<"系统尚未录入任何信息"<

else{

Course*old=GetElem(name);

if(!

old){

cout<<"未查询到相关信息"<

return;

}

Course*c=Creat();

*old=*c;

}

}

//*********顺序表*exitcopy函数(退出时备份)**********************

voidexitcopy(){

charall[250];

inti;

ofstreamfout("thelastcopy",ios:

:

out|ios:

:

binary);

if(!

fout){

cout<<"备份失败,请检查系统!

"<

system("pause");

exit

(1);

}

for(i=0;i

p[i].Getall(all);

fout.write(all,250);

}

fout.close();

}

//*********顺序表*Save函数(保存)**********************

voidSave(){

charall[250];

inti;

ofstreamfout("default_1",ios:

:

out|ios:

:

binary);//以任意形式输出到文件

if(!

fout){

cout<<"无法打开"<

exit

(1);

}

for(i=0;i

p[i].Getall(all);

fout.write(all,250);

}

cout<<"保存成功"<

fout.close();

system("pause");

}

//*********顺序表*Load函数(读入文件)**********************

voidLoad(){

charfilename[50];

inti=0;

cout<<"输入文件名"<

cin>>filename;

ifstreamfin(filename,ios:

:

in|ios:

:

binary|ios:

:

nocreate);

if(!

fin){

cout<<"无法打开"<

return;

}

charname[50],teacher[20],college[20],time[40],intro[100],email[20];

Course*c;

while(!

fin.eof()){

fin.read(name,50);

fin.read(teacher,20);

fin.read(college,20);

fin.read(time,40);

fin.read(intro,100);

fin.read(email,20);

if(fin.gcount()!

=20)

return;

c=newCourse(name,teacher,college,time,intro,email);

if(GetElem(c->GetName())!

=NULL){

cout<GetName()<<"已经存在"<

system("pause");

continue;

}

ListInsert(*c);

}

fin.close();

}

//*********顺序表*Load_default_1函数(启动时自加载文件)**********************

voidLoad_default_1(){

ifstreamfin("default_1",ios:

:

in|ios:

:

binary|ios:

:

nocreate);

if(!

fin){

cout<<"无法打开"<

return;

}

charname[50],teacher[20],college[20],time[40],intro[100],email[20];

Course*c;

while(!

fin.eof()){

fin.read(name,50);

fin.read(teacher,20);

fin.read(college,20);

fin.read(time,40);

fin.read(intro,100);

fin.read(email,20);

if(fin.gcount()!

=20)

return;

c=newCourse(name,teacher,college,time,intro,email);

ListInsert(*c);

}

fin.close();

}

//*********顺序表*Load_copy函数(恢复)**********************

voidLoad_copy(){

len=0;

ifstreamfin("thelastcopy",ios:

:

in|ios:

:

binary|ios:

:

nocreate);

if(!

fin){

cout<<"无法打开"<

return;

}

charname[50],teacher[20],college[20],time[40],intro[100],email[20];

Course*c;

while(!

fin.eof()){

fin.read(name,50);

fin.read(teacher,20);

fin.read(college,20);

fin.read(time,40);

fin.read(intro,100);

fin.read(email,20);

if(fin.gcount()!

=20)

return;

c=newCourse(name,teacher,college,time,intro,email);

ListInsert(*c);

}

fin.close();

cout<<"恢复成功!

"<

}

};

主函数流程图:

查找函数流程图:

添加函数流程图:

修改删除函数流程图:

四、详细设计

源代码如下:

#include

#include

#include

#include

//(任选课)

classCourse{

charname[40];

charteacher[20];

charcollege[20];

chartime[40];

charintro[40];

charemail[20];

public:

//*********课程*缺省构造函数**********************

Course(){

strcpy(name,"");

strcpy(teacher,"");

strcpy(college,"");

strcpy(time,"");

strcpy(intro,"");

strcpy(email,"");

}

//*********课程*构造函数**********************

Course(char*name,char*teacher,char*college,char*time,char*intro,char*email){

strcpy(this->name,name);

strcpy(this->teacher,teacher);

strcpy(this->college,college);

strcpy(this->time,time);

strcpy(this->intro,intro);

strcpy(this->email,email);

}

//*********课程*Show函数(显示课程信息)**********************

voidShow(){

cout<<"课程名:

"<

cout<<"教师名:

"<

cout<<"开课的院系:

"<

cout<<"上课时间:

"<

cout<<"课程简介:

"<

cout<<"电子邮件:

"<

}

//*********课程*isSame函数(查询课程名)**********************

boolisSame(constchar*name){

if(strcmp(name,this->name)==0)

return1;

else

return0;

}

//*********课程*isInCollege函数(查询学院名)**********************

boolisInCollege(constchar*college){

if(strcmp(college,this->college)==0)

return1;

else

return0;

}

//*********课程*GetName函数(输出课程名)**********************

char*GetName(){

returnname;

}

//*********课程*Getall函数(输出课程内容)**********************

voidGetall(char*all){

strcpy(all,name);

strcpy(all+50,teacher);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1