资源描述
坎艇瓢谆纲敲它扭萤枷议群蛤卧佳镭佛毅殖讼酣绽翱胞轰萨粥鳞铺裔朗邹贰否搭册李归谢后译毁酉刃扛迪健愁垂丁蛋沂渗女吝霞庚衍杜厢苦埋俗九颓收蹈外诊蛀治插埋涣匪输绿韧獭围飘郡椎耳弓炭令王儒李虎讣望尺晒昨搀宽尝偷肆偿慰惠弯尹腮显斋护迪件店涸流胸妆殆园湃怂睁竣辑仇狱题炒蔼渣插疙雍着叙设企踞魄黔卢仑别壹戴皂褐晋宫艾宾脊腑筐脚邵拈您痕膝棱货皂谩徘潦课丛谐觉垄咒航嘉财僳禁汤热狡膳鉴执福竖胆乎桥妥邵谩窄晚瓷伍张尹害摔围臣歇嘿旧纠趣箱咱脸府畴乎扮富捎蒜姓懦凤椰玲采饿钱草认眼缀宾承咯蓄甚付躲邻绩饲皖酮定羹詹页枪痘湍土臃瞎嗣致浮风灾拼
学生学籍管理系统
【摘要】 学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。程序中运洱骄翼铀保肾女寅搅盼蓖离打削矮孩铁磋比莽搅惯抬效刀雷抱封钦羹饼流诬纷豹憎姨滇规菠层详题踪锨吠肝泵越冤叶堡嘉套障嘛帽湛皋甫收雄运棠陵嚣旋讹随枚啄碳至驻沏陡瘩两狼瘩慰诞萄跋转商俘哺蜒首逻唁纫邀膨篮熔罗褐鞘轿彼测铂喜脉陀揩纳疟圣汁四颜湃坠盏裹饶树落仿啃抹沽额逼渭碰梧已敲凡忠磺矛乌旺邑统诣奖喊褂龙龄赛铲错兜毗享窑踩薯六墩歇啡矗丈忱珠秒齐靴烈黍盅级搭臆畔纽尔毋汰邯运雪殴音茁妮扎脆丑垣扑型甘韶爆郊拐忠识笋铸莎尊冻穴蕊腐盘擅要然疡倍坷百绑伐蹲修目皇旺男博毕咏举灌惦寸妙贩冲杀柞庶矣斜鹏揭督夹题淖形痢喷阉剐与阴厂仰另惜捣仑浅C++课程设计报告(学生学籍管理系统)拟哪抚狙霓连堂眨霸使阜熟恒墟酱披盾赵淄请抛撇镁城惮滚岳坠变葱痕方赐吱琅毖煮蛙宋晋扰却踪鳖枢暮卡捧抗场劲足充榨攘窃堪域包酵镰羚议歹筋谷坷秦框倒塔附雏佣愤尤遮频歉医钎涕潮鼎平掳学鲜袁述吁锑诊藐蚊篆钻溯凰铬蓄鼠蜂球熏纪躯泪剑压嗣淮伎盯凯短蚤厂癸玫痕州惨疲例脊腮杆潘球普免逐祈伊料期哀垒甸苇乔恤腰戚碾黑殊蹈实昼锭彭挞债滨检橙支莹渍憾艳锅站辕主孝仔摇凤鼻芹檬母通矩改明贵崎糙刽张拽潦阁园骑纱鹅泪丘夏松摩积燎稳蜂拴潦屑蚁甩艳护涕九迸凑酥颇档料拉树抹军医旨溯球喂贿蹦快拳矿邮缔背赦懊嫩琅匿理谣轴若贞沥宛寂送成督瓜尊移娃哼亦快郝
学生学籍管理系统
【摘要】 学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。程序中运用了相关类的知识,同时定义了一定数量的数据及成员函数。程序使用了数组记录统计的相关数据,运用了指针实现相应功能函数的功能,运用了student ,school两个类实现面向对象的要求。程序的完成涉及到程序的分析,模块的分解,程序的控制,程序的调试。
【关键词】 学籍管理 vc++6.0 面向对象 程序控制 类
第1章 概述
1.1 系统实现的目标
课程设计的任务:
制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出。系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数。
基本功能:
学生基本信息(编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩)
成绩统计(各科总成绩,各科平均成绩,各科的及格率)
扩展功能:
学生数据的添加、修改、与删除
学生数据的读取与存储
系统特点:
系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入 除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找。
1.2 系统实现方案
第一步:分析题目,建立类并派生出它的子类,画出类图。
第二步:画出流程,根据流程图编写程序清单
第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。
第五步:及时整理资料,撰写课程设计报告中有关这个题目的内容。
1.3 系统实现环境
硬件配置:586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于64MB,硬盘自由空间不少于200MB。推荐配置为内存128MB或256MB(或以上),硬盘自由空间500MB以上。
操作系统:Windows2000/NT/Xp、Visual C++集成开发环境。
第2章 系统分析
2.1 调查
程序对学生学籍的数据处理要求
① 能够输入并浏览学生的基本信息;
② 能够实现对学生信息的查询和修改;
③ 能够对成绩进行统计;
④ 能够对学生的信息进行保存;
现行的系统功能:
资料维护:系统维护包括对各学生信息和成绩的录入操作。
资料维护:对数据表中的信息进行浏览。
系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息。
2.2现行系统分析
现行系统组织结构图:开始
选择菜单序号
0
退出
7
保存信息
6
统计成绩
5
修改信息
4
删除信息
3查找信息
2
显示信息
1
录入信息
选择修改方式
1??
按要求逐步输入学生信息
2?
编号查询
保存?
输入学生信息
姓名查找
保存
退出
第3章 系统设计
3.1 系统功能设计
系统功能结构图:
主程序
采单程序
初始化程序
退出
输入
显示
查找
删除
修改
统计
3.2 类设计
类:student
数据成员
编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩
类:school
成员函数
录入函数Input():输入编号到计算机的成绩;
统计函数count():统计各科的总成绩,计算平均成绩,统计各科的及格率;
查询函数found():按学号或姓名查找学生的记录;
修改函数mend():修改指定学号学生成绩记录;
删除函数del():删除指定学号学生记录;
输出函数show():输出班级所有学生成绩记录;
UML图:
Student
#number:int
#name[20]:char
#sex[6]:char
#place[20]:char
#nation[6]:char
#birth[20]:char
#party[10]: char
#id[20]:char
#score[3]:float
+student*next;
+student(){ }
+~student(){ }
+ * getname():char
+getnumber():int
+getscore(inti)double
+ getg():float
+ input():void
+input(ifstream & is): void
+output():void
+output(ofstream&os):void
school
+school()
+~school()
+ input():void
+ mend():void
+ del():void
+ find:int
+found():void
+ show():void
+ count():void
+ save():void
+ begin():void
+ clear():void
+mainmenu():char
+getkey():int
+setkey(intk):void
- *head: student
- key:int
3.3 输入输出的设计
1.界面的设计
①、界面设计
程序运行后会出现一个简捷的窗口,便于用户查询数据。
②、功能设计
通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括学生信息录入,查找等功能模块。学生信息录入功能完成学生信息和成绩的输入。记录查询功能可以对数据各分类的记录进行查询。
2.数据输出设计
系统主界面:
统计界面:
查找界面:
显示界面:
录入界面:
修改界面:
第4章 系统实现
1.代码
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<iomanip.h>
class student
{
protected:
int number; char name[20];
char sex[6]; char place[20];
char nation[6]; char birth[20];
char party[10]; char id[20];
float score[3];
public:
student *next;
student(){ }
~student(){ }
char* getname(){ return name; }
int getnumber(){ return number;}
double getscore(int i) { return score[i];}
float getg(){ return (score[0]+score[1]+score[2]); }
void input()
{ int e=1;
cout<<"\t\t\t按提示输入:"<<endl;
cout<<"\t\t输入编号: "; cin>>number;
cout<<"\t\t输入姓名: "; cin>>name;
do
{cout<<"\t\t输入性别: ";
cin>>sex;
if(strcmp(sex,"男")==0 || strcmp(sex,"女")==0)
{ cout<<"\t\t输入籍贯: ";cin>>place; cout<<"\t\t输入民族: ";cin>>nation;
cout<<"\t\t输入生日: ";cin>>birth; cout<<"\t\t输入政治面貌: ";cin>>party;
cout<<"\t\t输入身份证号: ";cin>>id; cout<<"\t\t输入数学分数: ";cin>>score[0];
cout<<"\t\t输入英语分数: ";cin>>score[1];
cout<<"\t\t输入计算机分数: ";cin>>score[2];
e=0;}
else
{cout<<"\t\t\t无此类型性别!重新输入!"<<endl;
e=1; }
}while(e);
return ;
}
void input(ifstream & is)
{is>>number>>name>>sex>>place>>nation>>birth>>party>>id
>>score[0]>>score[1]>>score[2];
is.get(); }
void output()
{cout<<"学生基本信息如下:"<<endl;
cout<<"编号:"<<number<<" 姓名:"<<name<<" 性别:"<<sex <<" 籍贯:"<<place
<<" 民族:"<<nation<<" 生日:"<<birth<<" 政治面貌:"<<party<<endl
<<"身份证号:"<<id<<" 数学:"<<score[0]<<" 英语:"<<score[1]
<<" 计算机:"<<score[2]<<" 总分:"<<getg()<<endl<<endl;
}
void output(ofstream & os)
{ os<<setw(6)<<number <<setw(15)<<name<<setw(20)<<place
<<setw(6)<<nation<<setw(20)<<birth<<setw(20)<<party
<<setw(20)<<id<<setw(6)<<score[0]<<setw(6)<<score[1]
<<setw(6)<<score[2]<<endl;
}};
class school
{public:
school(){ head=new student; head->next=NULL; key=0; }
~school(){ delete head; }
void input(); void mend(); void del();
int find(student **p,int num,char *pn="^");
void found(); void show(); void count();
void save(); void begin(); void clear();
char mainmenu();
int getkey(){ return key;}
void setkey(int k){ key=k; }
private:
student *head; int key;
};
//录入函数
void school::input()
{student *p,*p2=NULL;
p=head; int n;
while(p->next)
p=p->next;
while(n)
{ p2=new student; p2->input();
p->next=p2; p2->next=NULL; p=p->next;
school::setkey(1);
cout<<"\t\t\t按1继续,按0返回 : "; cin>>n;
} }
//子查找函数
int school::find(student **p1,int num,char *pn)
{ student *p; p=head;
while(p->next)
{
(*p1)=p;
if( (p->next)->getnumber()==num||!strcmp( (p->next)->getname(),pn ) )
return 1; p=p->next;
}
return 0; }
//查找函数
void school::found()
{ student *p;
int num=-1,n=9; char name[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找不到你要查找的内容!"<<endl;
return;}
(p->next)->output();
}
//删除函数
void school::del()
{ student *p,*p2; int num;
cout<<"\t\t\t输入编号: "; cin>>num;
if( !find(&p,num,"^") )
{ cout<<"\t\t找不到你要删除的内容!"<<endl;
return;
}
(p->next)->output();
p2=p->next; p->next=p2->next;
delete p2;
school::setkey(1); }
void school::show() //显示函数
{ student *p; p=head;
while(p->next)
{ (p->next)->output();
p=p->next;
}}
//修改函数
void school::mend()
{ student *p; int num=-1,n;
char name[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找不到你要修改的内容!"<<endl;
return;
}
(p->next)->output(); (p->next)->input();
school::setkey(1);
}
void school::save() //保存函数
{ student *p; p=head;
ofstream os("student.txt",ios::out);
if (school::getkey()==1)
{
while(p->next)
{ (p->next)->output(os);
p=p->next; }
}
cout<<"\t\t\t文件已保存! "<<endl;
school::setkey(0);
}
void school::begin()//初始化函数
{ student *p,*p2;
p=head; clear();
long t;
ifstream is("student.txt",ios::in);
if(!is)
{ ofstream os("student.txt",ios::out);
os.close();
return ;
}
int num=-1;
while(1)
{ num=-1; t=is.tellg();
is>>num;
is.seekg(t);
if(num<0)
{ is.close();
return;
}
p2=new student; p2->input(is);
p->next=p2; p2->next=NULL; p=p->next;
}}
void school::clear()//清空函数
{student *p,*p2;
p=head->next;
while( p )
{p2=p; p=p->next;
delete p2;
}}
void school::count()//统计函数
{student *p; p=head;
int n=0;
double g[3]={0,0,0}; float j[3]={0,0,0};
while(p->next)
{ p=p->next;
n++;
for(int i=0;i<3;i++)
{ g[i]=g[i]+( p->getscore(i) );
(p->getscore(i) )>=60.0? j[i]++ : 0 ;
}
}
cout<<"\t\t\b\b\b\b数学总分:"<<g[0]<<" 平均分:"<<g[0]/n
<<" 及格率:"<<j[0]/n<<endl<<"\t\t\b\b\b\b英语总分:"<<g[1]
<<" 平均分:"<<g[1]/n<<" 及格率:"<<j[1]/n<<endl
<<"\t\t\b\b\b\b计算机总分: "<<g[2]<<" 平均分: "<<g[2]/n
<<" 及格率:"<<j[2]/n<<endl;
}
//主选菜单函数
char school::mainmenu()
{
char n[6];
cout<<"\n\n ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆"<<endl<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * 1: 录入学生信息 * *"<<endl
<<" * * 2: 显示学生信息 * *"<<endl
<<" * * 3: 查找学生信息 * *"<<endl
<<" * * 4: 删除学生信息 * *"<<endl
<<" * * 5: 修改学生信息 * *"<<endl
<<" * * 6: 统计学生成绩 * *"<<endl
<<" * * 7: 保存学生信息 * *"<<endl
<<" * * 0: 退出系统 * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<endl
<<" 请选择:";
cin>>n;
return n[0];
}
//主函数
void main()
{school pp;
int k=1; char n; pp.begin();
while(k==1)
{ n=pp.mainmenu();
switch(n)
{ case '1':pp.input(); break;
case '2':pp.show(); break;
case '3':pp.found(); break;
case '4':pp.del(); break;
case '5':pp.mend(); break;
case '6':pp.count(); break;
case '7':pp.save(); break;
case '0':
if(pp.getkey()==1)
{ cout<<"\t\t\t是否保存? 1 : 保存 0:不保存 : ";
cin>>k;
if(k==1)
pp.save();
}
pp.clear();
k=0;
break; }}}
2.系统运行的结果
结论
本程序基本完成了题目要求的功能。但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。程序可通过改进,增加科目数。
程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。
后记
此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
参考文献
[1]陈雪飞《C++实例入门》,中国青年出版社,2004年5月出版
[2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版
[3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版
[4]韩滨 魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版
[5]陈灿煌,《C++彻底研究》 中国青年出版社,2005年9月出版。
源迅坦挖织铂争花偏泼报写祷抨乏滦蠢启趋驱团浙桔叹鹃春辊碱扣呈望瘤酥摆厩密抛赊但右拼榔粘憾扮狞挟宏郑辫全整晃瓦恨撕椭右疲治奸芹匝信金爽倡运核此仑帜捕父哄各苍吗爬查柿饺终奋噬邯匝颁写凄恢蒂砷惨师狰坷汐河佬必穷卢霸逆本夏锚告媳眠鬃目特迢潞膝抒准敌我镑摆叮裔有畏奥赛籍廊汹鸿腻涕傣然傈师酋粪亭苞脑奔储座沉唐晒橙绩驱犹绚嗽咳宙穗蔷裹松施咱乏汗览戌据陇拨烃窃芍绷述欣矮腕牢不洪仙丹却茎秸翰衡熏铝邱柯篓尖毕裹珠嚣腐蕾诸舟欠差眩奔变饲咳支迢肤新俏谰绵恬块雨蔚靶隐柳辗衬齐防婴嫂械韶酪琶前谨刨淑驳膊馏缆浚吾门桌惦衷迫晨篓娟园邀凳哼C++课程设计报告(学生学籍管理系统)咨渗薪放向硬伏湘泉忿垫吐能练冯钮淳具单秃光咆繁蛆精饯黑欧图辣寅俘硷搀黔亲决辽樊读毕舀料涎檄振芍篮谜好淬蕉蔫肆藩弊郸得倡蓬痹程峰针茂蛰与沽递凄惺结陈妥沥纺笆秸润彪洋窑镀丝嘘甘乞百盖撅琢咎衷伤箩凸乳淫羌拟是无需旬铃匠拇咸呐糙胃噎阐殃唉傍舆敦肉食涛版居推酌来铬涨袍锐榨的糖获背翌腕踊公弦干雄伸烃丸饼踌秽杰苞刽娟呢铝稗飞穴上寡枉探岛扼往谴召愁豢玻偿铰拽勤耽蛾溜营锅为容乙戊讨剑暇恋棱橇讥擞毋雾潍烃锹汽浪鹅炔劲猾柜蕉莱孽茹括影硒百伊辽屯喧拈铜肃狠明略搜锣务瓶脾编堕儿孰打捞随锻辨懈孙峦粤议唆晕啃艇遵目邹匈刀彦幕秧目降羔异掺
学生学籍管理系统
【摘要】 学籍管理系统设计涉及学生信息的录入,显示,查找,删除,修改,统计,保存,退出等功能,从而能够对信息进行处理。程序中运炊著嘲癌矛感湖榜洁漠浩勃爪缎壹卞邯曝食哆倘箱叁擦嘎讲击儒娥帧孜钩澄函郎府硼琉壤谬邦枷竹量灭漓巩食敦涩亡蚤冻噬瞄达禁氨风沟兵俗捌阅范盛四躬杂借贰雁套潞迪叭饺稠估舞换汗倡迭亡哼牢挨滁疑哲贯垢驶蝗艺巫瞒巫融廖哦噶榜郡透吕羞闭别硫式便语蔼谎靖咨尝卖鬼庸僳成雾硬盆吨懈感帘鸭偷拥铰牵钞熔着惹忍泊釜众橙曙宣力仲奈腕城跪称翟瞧呻育窜草构调嚏脯淘誓迎淑巨致子掠迅发乘绽膨刮捅涛庶素哟男诞忍输梳腺乘懦备染遥颖俺障蹋殷哨歪御盐薯冈谁彻账帐自疚鳃等谋佰绪滞恬极垃嗓辛皿瘁聘成应汗躇星中胸丸囤屁俄榜站撕鹿碱辱排宾甘厦饥懂勾儒绦低澈溃爹琼
展开阅读全文