欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《程序设计语言(C++)》课程设计.doc

    • 资源ID:1818710       资源大小:260KB        全文页数:52页
    • 资源格式: DOC        下载积分:28金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要28金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《程序设计语言(C++)》课程设计.doc

    目录一、设计目的.3二、环境配置要求:.3三、设计题目.3题目 1 学生学籍管理系统.3题目 2 学生选修课系统.6四、课程设计文字资料要求.9五、总结报告.9六、考核.9七、实间安排.10附录:参考代码.11学生学籍管理系统.11选修课系统.26程序设计语言(C+) 课程设计一、设计目的一、设计目的1、进一步掌握利用 C+进行类的定义和操作方法; 2、进一步掌握类的继承和派生方法; 3、进一步理解虚函数和多态; 4、综合利用上述知识,学习设计并编写面向对象的 C+简单应用程序; 5、培养学生团结协作的能力。二、环境配置要求:二、环境配置要求:硬件配置硬件配置:586 以上 PC 兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于64MB,硬盘自由空间不少于 200MB。推荐配置推荐配置为内存 128MB 或 256MB(或以上) ,硬盘自由空间 500MB 以上。操作系统操作系统:Windows2000/NT/Xp、Visual C+集成开发环境。三、设计题目三、设计题目题目 1 学生学籍管理系统(一)(一) 、系统的主要功能、系统的主要功能 1. 添加系统将提示用户输入新添加的职员的信息,插入在链表中。2. 删除首先由用户输入要删除的学生的学号,然后调用删除函数,删除该名学生的资料。3. 查找首先由用户输入要查找的学生的学号,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的学生资料。4. 修改首先由用户输入要修改的学生的学号,然后系统用修改函数查找,显示该名学生的资料,然后系统提示用户输入需要修改的项目和新的资料。5. 其他功能在上述功能的基础上进行进一步完善。(二)(二) 、系统总框架图、系统总框架图主要提示的 菜单界面开 始 界 面查找 资 料修改 资 料删除 资 料输出 资料插入 资 料(三)(三) 、系统数据结构定义、系统数据结构定义 class listNode/这是数据节点! public: listNode() listNode(Inform listNode(listNode listNode *create();/创建链表 listNode *insert(listNode *);/对链表进行插入操作; listNode *del(listNode *,char *);/删除资料中含有 char*的节点; void printlistNode(listNode *);/打印链表; listNode(); void search(char *,listNode *);/查找链表中含有 char*的学生; listNode *modify(listNode *);/修改 private: Inform data; static int num; listNode *nextPtr; ;*Inform.h*class Inform friend ostream public: Inform(); Inform(Inform int operator=(const Inform int operator=(char *); int operator!=(char *); Inform Inform();private: char *number; char *id; char *name; char *sex; achieve ach; char *phonenumber; char *roomnumber;*achieve.h*cclass achieve friend ostream public: achieve(); void countaverage(subject *); int operator=(achieve achieve void instruction(); achieve(); void setnum(int a);int getnum(); subject *TT; private: int num; float sum; float average;*subject.h*class subject friendistream friend ostream listNode(listNode listNode *create(); listNode *insert(listNode *);/对链表进行插入操作; listNode *del(listNode *,char *);/删除资料中含有 char*的节点; void printlistNode(listNode *);/打印链表; listNode(); void search(char *,listNode *);/查找链表中含有 char*的学生; listNode *modify(listNode *); private: Inform data; static int num; listNode *nextPtr; ; #endif*listNode.cpp*#include“listNode.h“int listNode:num=0; listNode:listNode(Inform nextPtr=new listNodeLEN; listNode:listNode(listNode nextPtr=new listNodeLEN; assert(nextPtr!=0); nextPtr=copy.nextPtr; listNode *listNode:create() /从文件 f3.txt 中读入链表数据; listNode *head=NULL; listNode *p1,*p2; p1=p2=new listNodeLEN; char ch; cout>p1->data; num=num+1; if(num=1) head=p1; else p2->nextPtr=p1; p2=p1; p1=new listNodeLEN; cout>ch; while(ch='y');p2->nextPtr=NULL;cout>insertdata; listNode *p0,*p1; p0=new listNodeLEN; assert(p0!=0); p0->data=insertdata; p0->nextPtr=NULL; p1=new listNodeLEN; assert(p1!=0); p1=head; head=p0; p0->nextPtr=p1;num+=1; cout>ch; if(ch='y') if(head=NULL) coutdata!=DELDATA p1=p1->nextPtr; if(p1->data=DELDATA) if(p1=head) head=p1->nextPtr;else p2->nextPtr=p1->nextPtr;coutdatanextPtr; while(p!=NULL); void listNode:search(char *sea,listNode *head) listNode *p=new listNodeLEN; listNode *tMAX2; int n=0,j=0; for(int i=0;idata=sea) n+=1; while(jnextPtr; if(n=0) cout>c; if(c='y') coutdata=0;j-) coutdata>ch; search(ch,head); cout>c; if(c='y') head=del(head,ch); cout>insertdata; head=insert(head); return head; else return head; listNode:listNode() delete nextPtr; *Inform.h*#ifndef Inform_h #define Inform_h #include #include #include #include #include #include #include #include“achieve.h“class Inform friend ostream public: Inform(); Inform(Inform int operator=(const Inform int operator=(char *); int operator!=(char *); Inform Inform(); private: char *number; char *id; char *name; char *sex;achieve ach; char *phonenumber; char *roomnumber; #endif*Inform.cpp*#include #include“Inform.h“ostream if(a='y') cout>(istream cout>t.number; cout>t.id; cout>t.sex; cout>t.phonenumber; cout>t.roomnumber; cout>a; if(a='y') cout>ch; (t.ach).setnum(ch); input>>t.ach; else (t.ach).setnum(0); return input; Inform:Inform() id=new char19; number=new char12; name=new char10; sex=new char4; phonenumber=new char8; roomnumber=new char4; Inform:Inform(Inform assert(id!=0); strcpy(id,p.id); number=new char12; assert(number!=0); strcpy(number,p.number);name=new char10; assert(name!=0); strcpy(name,p.name); sex=new char4; assert(sex!=0); strcpy(sex,p.sex); phonenumber=new char8; assert(phonenumber!=0); strcpy(phonenumber,p.phonenumber); roomnumber=new char4; assert(roomnumber!=0); strcpy(roomnumber,p.roomnumber); ach=p.ach; int Inform:operator=(const Inform else return 0; int Inform:operator=(char *s) if( (strcmp(number,s)=0)|(strcmp(name,s)=0)|(strcmp(id,s)=0)|(strcmp(roomnumber,s)=0)|(strcmp(phonenumber,s)=0) return 1; else return 0; int Inform:operator!=(char *t) if( (strcmp(number,t)=0)|(strcmp(name,t)=0)|(strcmp(id,t)=0)|(strcmp(phonenumber,t)=0)|(strcmp(roomnumber,t)=0) return 0; else return 1; Inform strcpy(id,a.id); strcpy(name,a.name);strcpy(number,a.number); strcpy(sex,a.sex); strcpy(phonenumber,a.phonenumber); strcpy(roomnumber,a.roomnumber); return *this; Inform:Inform() delete number; delete id; delete name; delete sex; delete phonenumber; delete roomnumber; *achieve.h* #ifndef achieve_h #define achieve_h #include“subject.h“class achieve friend ostream public: achieve(); void countaverage(subject *); int operator=(achieve achieve void instruction(); achieve(); void setnum(int a);int getnum(); subject *TT; private: int num; float sum; float average; #endif*achieve.cpp*#include“achieve.h“ achieve:achieve() TT=new subjectsizeof(subject); void achieve:setnum(int a=0) num=a; int achieve:getnum() return num; void achieve:countaverage(subject *t) sum=average=0; float temp=0; for(int i=0;ixuefen; temp+=(t+i)->achievement)*(t+i)->xuefen); average=temp/sum; ostream i>t.TTi; return input; int achieve:operator=(achieve else return 0; achieve sum=t.sum; for(int i=0;i #include #include #include #include #define MAX1 5class subject friendistream friend ostream cout>T.achievement; cout>T.xuefen; return input; ostream void welcome();/ void INSTRUCTION();/主界面函数; void main() char pass5; do /clrscr(); welcome(); cin>>pass; if(strcmp(pass,“E“)=0) exit(1); while(strcmp(pass,passwords)!=0);static listNode *head=new listNodeLEN; INSTRUCTION(); head=head->create(); INSTRUCTION();char ch,c; cin>>ch; while(1) switch(ch) case 'I':head=head->insert(head);break;case 'P':head->printlistNode(head);break;case 'D':cout>deldata;head=head->del(head,deldata);break;case 'S':char *search;search=new char20;cout>search;head->search(search,head);break;case 'M':head=head->modify(head);break;case 'E':exit(2);break;default:cout>c; INSTRUCTION();cin>>ch; void INSTRUCTION() cout #include #include #include #include #include #include / /定义课程 struct course /某个学生所学的课程中的某一个 char cname20; /课程名称 float grade; /课程成绩 course *Next; /指向下一个课程的指针 ; / /学生类 class student public: student() root = NULL; const maxcourse = 5; factcourse = 0; void readname(char N ); /读入学生的姓名 void getname(char N); /得到学生的姓名 void wrecourse(char N,float score); /要据课程名写入学生课程的成绩 float average(); /学生课程的平均成绩 void addcourse(char N,float g); /给学生增加一门课 int findcourse(char N); /查找是否已有此课程,如果有返回 1,如果没有返回 0int retfactcourse() return factcourse; /得到所学的课程数目course *retroot() return root; /利用键表将所有的课程保存起来 int retmaxcourse() return 5; /得到最多可学的课程数目 void clrroot() /清零 root = NULL; factcourse = 0; private: char sname20; /学生的姓名 int maxcourse; /学生最多可以学五门课程 int factcourse; /学生实际所学的课程数目 course *root; /课程的根结点指针 ;void student:readname (char N)/读入学生的姓名 strcpy(sname,N); void student:getname(char N)/得到学生的姓名 strcpy(N,sname); void student:wrecourse(char N,float score)/要据课程名写入学生课程的成绩 course *p = root; if(p=NULL) return; if(p!=NULL) p = p->Next; while(p) if(strcmp(p->cname,N)=0) p->grade = score; p = p->Next; float student:average()/学生课程的平均成绩 float aver=0.0; course *p = root; while (p) aver = aver+p->grade; aver = aver/factcourse; return aver; void student:addcourse (char N,float g)/给学生增加一门课 course *s = new course; s->Next=NULL; if(root = NULL) root = s; course *p = root; course *newcourse = new course; newcourse->Next = p->Next; p->Next=newcourse; strcpy(newcourse->cname,N); newcourse->grade = g; factcourse+; int student:findcourse (char N)/查找是否已有此课程,如果有返回 1,如果没有返回 0 course *p = root; if(root=NULL) return 0; p = p->Next; while(p) if(strcmp(p->cname,N)=0) return 1; p = p->Next; return 0; / struct studentdb student stu; studentdb *Next; ;struct studentname char tname20; /学生的名字 float result; /学生所得的该课程分数 studentname *Next; ; /课程类 class subject public: subject() first = NULL; maxstudent=30; activestudnet=0; float readcredit(); /得到课程的学分 void getcredit(float a); /设置学分 float getaverage(); /得到学生的平均成绩 float getresult(char N); /查找某个学生的成绩 void getkname(char N); /读出课程的名称 void setkname(char N); /读入课程的名称studentname *retfirst() return first; /返回根结点 void findstudent(studentdb *P); /根据该课程的名称,寻找选这课程的学生 int retactivestudent() return activestudnet; /返回实际学生数 int retmaxstudent() return 30; /返回最多学生数 30 void clractivestudnet() activestudnet = 0; /从文件中读出来后将实际学生数清零 private: int maxstudent; /最多学生数 int activestudnet; /实际学生数 studentname *first; /学生名单 float credit; /该课程的学分 float averagerusult; /该课程的平均成绩 char kname20; /该课程的名称 ;float subject:readcredit ()/得到课程的学分 return credit; void subject:getcredit (float a)/设置学分 credit=a; float subject:getaverage()/得到学生的平均成绩 float k = 0.0; studentname *p; p=first->Next; if(p=NULL) return 0; while(p) k = k + p->result; p = p->Next ; return k/activestudnet; float subject:getresult (char N) /查找某个学生的成绩 studentname *p; p = first; while(p) if(strcpy(p->tname ,N)=0) return p->result; p = p->Next ; return -1; void subject:getkname (char N) /读出课程的名称 strcpy(N,kname); void subject:setkname (char N) /读入课程的名称 strcpy(kname,N); void subject:findstudent(studentdb *P) /根据该课程的名称,寻找选这课程的学生 studentname *newcode = new studentname; newcode->Next=NULL; first = newcode; studentname *T = first; studentdb *K = P->Next; while(K) course *Y = K->stu.retroot(); if(Y =NULL) K = K->Next; continue; if(Y!=NULL) Y = Y->Next; while(Y) if(strcmp(Y->cname,kname)=0) studentname *Acode = new studentname; char Name20; K->stu.getname(Name); strcpy(Acode->tname,Name); Acode->result = Y->grade; Acode->Next = T->Next; T->Next = Acode; activestudnet = activestudnet + 1; break; Y = Y->Next; K = K->Next; return ; /void tuichu() system(“cls“); cout>a; if(strlen(a)=1) for(i='1'i2) system(“cls“); cerr>A; if(strlen(A)=1) for(i='1'i2) system(“cls“); cerr>A; if(strlen(A)=1) for(i='0'i2) cerr=3) system(“cls“); cerrNext; int i; char N20,M20; if(q!=NULL) coutstu.getname(N); coutNext ; q = P->Next; if(q=NULL) return 1; cout>N; i=0; q=P->Next; while(q) q->stu.getname(M); if(strcmp(N,M)=0) i+; q = q->Next; int j=0,k=1; if(i=0) cout1) cout>k; if(k>i|kNext; j=0; while(q) q->stu.getname(M); if(strcmp(N,M)=0) j+; if(j=k) if(q->stu.retfactcourse()>=q->stu.retmaxcourse() coutNext; char N120; system(“cls“); if(t!=NULL) coutsub.getkname(N1); coutsub.readcredit()Next ; char N220; cout>N2; t = X->Next; while(t) t->sub.getkname(N1); if(strcmp(N1,N2)=0) if(q->stu.findcourse(N2)=1) coutNext; char NA20; while(t) t->sub.getkname(NA); if(strcmp(NA,N2)=0) if(t->sub.retactivestudent()>=t->sub.retmaxstudent () coutNext; q->stu.addcourse(N2,0.0); coutNext; cerrNext; return 1; int menu_1_2(studentdb *P,subjectdb *X) /学生情况 studentdb *q=P->Next; char N20; system(“cls“); coutstu.getname(N); coutstu.retfactcourse()Next ; char M20; cout>M; i=0; q=P->Next; while(q) q->stu.getname(N); if(strcmp(N,M)=0) i+; q = q->Next; int j=0,k=1;if(i=0) cout1) cout>k; if(k>i|kNext; j=0; q=P->Next; while(q) q->stu.getname(N); if(strcmp(N,M)=0) j+; if(j=k) system(“cls“); course *T=q->stu.retroot(); if(T=NULL) coutNext; coutstu.retfactcourse()cnamecname)gradeNext; j=0; q = q->Next; coutNext; char N20; system(“cls“); coutsub.getkname(N); coutsub.retactivestudent()Next ; cout>N; coutNext = P->Next ; newnode->stu.readname(N); P->Next = newnode ; return 1; int menu_2_2(subjectdb *P) /增加课程 float k; char N20,M20;

    注意事项

    本文(《程序设计语言(C++)》课程设计.doc)为本站会员(创****公)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开