武汉理工大学_第1页
武汉理工大学_第2页
武汉理工大学_第3页
武汉理工大学_第4页
武汉理工大学_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机基础强化训练任务书学生姓名: 专业班级: 指导教师: 工作单位: 题目:初始条件:理论:学完计算机基础知识,掌握C++语言编程基础和VC开发平台的使用。实践:计算机科学系实验中心提供计算机及软件开发环境。要求完成的主要任务:(1) 系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。(2) 系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行。)(2)编制好程序后,设计若干测试用例,上机测试所设计的程序)(4)设计报告按格式要求书写。设计报告正文的内容应包括:1)系统描述 包括问题说明、数据需求和功能需求)2) 系统设计包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计)3)系统测试 包括测试用例的描述、测试方法和测试结果)4) 设计的特点、不足、收获和体会)时间安排:1、 第20周(7月4日至7月8日)完成)2、 7月8日8:00到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(CD盘)指导教师签名:系主任(或责任教师)签名:指导教师签名:系主任(或责任教师)签名:2011年7月3日2011年7月3日课程信息管理的设计与实现系统描述1.1问题说明运用所学知识,在内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计的基础上,结合链表组织,数据文件用文本文件,用户界面用字符界面等设计一个课程信息管理系统,包括课程代码、课程名称、上课教室、授课教师、上课时刻以及具体时间,并实现对数据记录的增加、修改、删除、查询。1.2数据需求char*课程代码char*课程名称char*上课教室char*授课教师char*上课时间char*具体时间1.3功能需求增加添加课程信息修改对查找到的课程信息进行修改删除删除查找到得课程信息查询按课程代码或课程名称或授课教师查询课程信息系统设计2.1内存数据结构设计(我们采用单链表方式来实现)2.1.1抽象数据类型线性表的定义ADTStack{数据对象:D={ailaiW三 】二-r.n:}数据关系:Rl={vai-l,ai>lai-l,ai二-'=-■T'}基本操作:InitList(&L)操作结果:构造一个空的线性表L。DestroyList(&L)初始条件:线性表L已存在。操作结果:线性表L被销毁。ClearList(&L)初始条件:线性表L已存在。操作结果:将线性表L重置为空表。ListEmpty(L)初始条件:线性表L已存在。操作结果:若线性表为空表,则返回TRUE,否则FALSE。ListLength(L)初始条件:线性表L已存在。操作结果:返回L的元素个数。ListInsert(&L,i,e)初始条件:线性表已存在,1v=iv=ListLength(L)+1。操作结果:在L中第i个位置之前插入元素e,L的长度加1。ListDelete(&L,i,&e)初始条件:线性表已存在且非空,1v=iv=ListLength(L)+1。操作结果:删除L中第i个元素。并用e返回其值,L的长度减1。}ADTStack2.1.2建立一个course类来存放课程信息classcourse{private:charnumber[MAXINT];//课程代号;charname[MAXINT]; //课程名字;charclassroom[MAXINT];//上课教室;charteacher[MAXINT];//授课教师charday[MAXINT]; //时刻时间chartime[MAXINT]; //授课具体时间public:course。{}voidInitCourse();//课程信息初始化voidAddCourse();//添加课程信息longGetNumber();//获得课程编号intCompare(charch[]);//查找课程名与ch[]相同的课程voidPrintCourse();//打印课程信息};2.1.3线性表的单链表存储结构typedefstructLNode{coursedata;structLNode*next;}LNode,*LinkList;LNode*first=NULL;voidInitLinkList(){//链表括初始化inti;for(i=l;iv=Total;i++){//使用尾插法经行初始化coursecs;cs.InitCourse();LNode*newlink=newLNode;newlink->data=cs;newlink->next=first;first=newlink;}}2.2数据文件设计我们采用C++中文件输出流的方式来对文件进行设计,将原始信息存放在文档in.txt中,通过增加、删除等操作,最后通过输入输出流打印所有课程信息,存放在文档out.txt中。2.3代码设计#includeviostream>#includevfstream>#include<string>#includevstdlib.h>//foratoi();#includevstdio.h>//forgetchar();#includeviomanip>//forsetw();usingnamespacestd;ifstreamfin("in.txt");ofstreamfout("out.txt");constintMAXINT=100;intTotal;//设定Total为全局变量,用来记录当前课程总数classcourse{private:charnumber[MAXINT];//课程代号charname[MAXINT];//课程名字charclassroom[MAXINT];//上课教室charteacher[MAXINT];//授课教师charday[MAXINT]; //时刻时间chartime[MAXINT]; //授课具体时间public:course(){}voidInitCourse(){//课程信息初始化fin>>number;fin>>name;fin>>classroom;fin>>teacher;fin>>day;fin>>time;}voidAddCourse(){//添加课程信息cout<<endl<<"课程代号为:";cin>>number;cout<<"课程名为:”;cin>>name;cout<<"上课教室:";cin>>classroom;cout<<"授课教师:";cin>>teacher;cout<<"上课时间:";cin>>day;cout<<"第几节课:";cin>>time;}longGetNumber(){//获得课程编号returnatoi(number);}intCompare(charch[]){//查找课程名与ch[]相同的课程inti=0;charc='y';//intt=strcmp(c_name,ch);//t=0时表示name=chif(strcmp(name,ch)==0)returnl;//name=ch返回1;if(strcmp(number,ch)==0)return1;//number=ch返回1;if(strcmp(teacher,ch)==0)return1;//teacher=ch返回1return0;}voidPrintCourse(){//打印课程信息coutvvsetw(10)<<number<<setw(10)<<name<<setw(10)<<classroom<<setw(10)<<teacher<<setw(10)<<setw(10)<<day<<setw(10)<<timevvsetw(10)<<endl;foutvvsetw(10)<<number<<setw(10)<<name<<setw(10)vvclassroom<<setw(10)<<teacher<<setw(10)<<setw(10)<<day<<setw(10)<<time<<setw(10)<<endl;}};typedefstructLNode{//使用单向链表作为存储结构coursedata;structLNode*next;}LNode,*LinkList;LNode*first=NULL;voidManager(LinkListL);voidManager_MemuList();voidInitLinkList(){//链表初始化inti;for(i=1;iv=Total;i++){//使用尾插法经行初始化coursecs;cs.InitCourse();LNode*newlink=newLNode;newlink->data=cs;newlink->next=first;first=newlink;}}voidInsertLinkList(){//添加课程coursecs;cs.AddCourse();LNode*newlink=newLNode;newlink->data=cs;newlink->next=first;first=newlink;Total++;//课程总数加1;coutvv"\n添加完毕"vvendl;}intSearchCourse(){//寻找课程名为"ch"的全部信息inti=0;intopt;charch[MAXINT];coutvv"\n查询的项目菜单:\n";//选择要查询的项目

coutvv1.按课程号查询"vvendl;coutvv2.按课程名查询"vvendl;coutvv3.按教师姓名查询coutvv1.按课程号查询"vvendl;coutvv2.按课程名查询"vvendl;coutvv3.按教师姓名查询"vvendl;coutvv"\n请选择查询的项目:";cin»opt;if(opt==1)coutvv"请输入课程号:";if(opt==2)coutvv"请输入课程名:";if(opt==3)coutvv"请输入教师姓名:"cin»ch;LNode*current=first;while(current!=NULL){if(current->data.Compare(ch)==1){〃coutvv"Iamhere!"vv"i="vvivvendl;coutvv"您要查询的课程信息如下:\n";coutvvendlvvsetw(10)vv"课程代号"vvsetw(10)vv"课程名为"vvsetw(10)vv"上课教室"vvsetw(10)vv"授课教师"vvsetw(10)vv"上课时间"vvsetw(10)vv"第几节课"vvsetw(10)vvendl;current->data.PrintCourse();//打印当前课的信息returni;}current=current->next;i++;}coutvv"\n查找不成功有关"vvchvv"的信息未被收录";return-1;voidChangeltem(){//修改课程信息inti=SearchCourse();if(i!=-1){charch;coutvv"\n确认修改该课程(y/n):";cin»ch;讦(ch=='y'){//修改该课程;LNode*current=first;intj=0;while(current->next!=NULL&&j<i){current=current->next;j++;}current->data.AddCourse();coutvv"\n修改成功\n";}else{coutvv"修改操作取消\n";Manager_MemuList();〃回到管理员单界面;}}}voidDelItem(){//删除课程信息inti=SearchCourse();if(i!=-1){charch;coutvv"\n确认删除该课程(y/n):";cin>>ch;讦(ch=='y'){//删除该课程;LNode*current=first;intj=0;while(current->next!=NULL&&jvi-l){current=current->next;j++;}LNode*q=current->next;current->next=q->next;deleteq;Total--;coutvv"\n删除成功\n";}else{coutvv"删除操作取消\n";Manager_MemuList();//回到管理员菜单界面;}}}voidPrintltem(){//打印所有课程信息coutvv"\n当前所有"vvTotalvv"门课程的信息如下:"vvendl;//控制台输出coutvvendlvvsetw(10)vv"课程代号"vvsetw(10)vv"课程名为"vvsetw(10)vv"上课教室vvsetw(10)vv"授课教师"vvsetw(lO)vv"上课时间"vvsetw(10)vv"第几节课"vvsetw(10)vvendl;foutvv"\n当前所有"vvTotalvv"门课程的信息如下:"vvendl;//外部文件输出foutvvendlvvsetw(10)vv"课程代号"vvsetw(10)vv"课程名为"vvsetw(10)vv"上课教室vvsetw(10)vv"授课教师"vvsetw(10)vv"上课时间"vvsetw(10)vv"第几节课"vvsetw(10)vvendl;LNode*current=first;while(current!=NULL){current->data.PrintCourse();current=current->next;}}voidstarline(){inti;for(i=0;i<40;i++)coutvv"*";coutvvendl;}voidManager_MemuList(){//管理员操作界面coutvvendl;coutvv"\n欢迎进入管理员系统\n";starline();coutvv"*"vvsetw(15)vv"0."vvsetw(20)vv"安全注销"vvsetw(4)vv"*"vvendl;coutvv"*"vvsetw(15)vv"1."vvsetw(20)vv"添加课程信息vvsetw(4)vv"*"vvendl;coutvv"*"vvsetw(15)vv"2."vvsetw(20)vv"查看课程信息"vvsetw(4)vv"*"vvendl;coutvv"*"vvsetw(15)vv"3."vvsetw(20)vv"修改课程息"vvsetw(4)vv"*"vvendl;coutvv"*"vvsetw(15)vv"4."vvsetw(20)vv"删除课程信息"vvsetw(4)vv"*"vvendl;coutvv"*"vvsetw(15)vv"5."vvsetw(20)vv"打印所有课程i"vvsetw(4)vv"*"vvendl;starline();}voidManager(LinkListL){//管理员操作系统intopt=1;while(opt!=0){//管理员操作界面Manager_MemuList();coutvv"请输入下面操作动作的序号:";cin>>opt;switch(opt){case0:coutvv"\n该账号已安全退出"vvendl;break;case1:InsertLinkList();system("cls");break;case2:system("cls");SearchCourse();break;//查看指定课程情况case3:system("cls");ChangeItem();system("cls");break;//修改课程信息case4:system("cls");DelItem();system("cls");break;//删除课程case5:system("cls");PrintItem();;break;//打印课程default:break;}}}intmain(){LinkListL;L=newLNode;fin>>Total;InitLinkList();//课程信息初始化;Manager(L);//进入系统管理return0;}2.4输入输出设计我们采用C++中的文件输入输出流,程序首先从文件in.txt中提取预先存好的课程信息生成单链表,然后根据用户界面提示操作对课程信息进行一系列的操作,比如新的课程的添加,查询课程,删除已存在的课程,修改课程信息和打印

课程信息,将最终结构输出到文件0ut.txt中。2.5用户界面设计利用C++中I/O格式化,我们设计用户界面如下图所示:欧迎进入管理员系统012345心息息息畑任、王士一012345心息息息畑任、王士一R亠一一旦一一旦一耳果,rmFmRmRmK.4?谁ilil谁亠厅加看改除印I-Iff请输入下面操作动作的序号:2.6处理过程设计通过循环语句使菜单界面循环显示,每次执行命令完后都会显示菜单界面,知道选择退出命令,系统停止后不再显示,并且加入了刷屏函数,不至于在界面上出现过多的信息,使界面更加简洁,明了。系统测试3.1测试用例描述原有课程信息如下表:1001数据结构5-504刘春周二1、2节1002大学英语5-606方新洪周一1、2节1003通信原理5-606许毅周四5、6节

1004组成原理5-415姚寒冰周三3、4节1005概论1-602王盛开周五1、2节1006体育操场王炎军周五3、4节添加课程信息如下:1007军事理论5-401王希征周四3、4节查看课程信息:分别以课程编号、课程名称和授课教师查询,选取的实例如下:1001数据结构5-504刘春周二1、2节修改课程信息:将1006号信息中的授课老师“王炎军”修改为“王彦军”。删除课程信息,删除1005号课程信息;最后将操作完毕后的课程信息打印出来。3.2测试方法和测试结果添加课程信息:(输入“第几节课:3、4节”时会刷屏)炎迎进氷管理員系统-wi2345全-wi2345全安课课课课所加看改除印馨_修黑心息息息程'王亠一一5士一空一E亠一一R票为为S.8KT1课课课几賢糰入下面操作动作的序号卡1:1007军事理论5-401王希征周四查看课程信息:(这里采用选取编号查看,另外两种查看方式得出的结果一样)查询的项目菜单:3.KJOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOC憊要查询的课程信息如下:师春SmR挖课程代号i!师春SmR挖欢迎进入管理员系统二"二"销悬息自3息程„„、王亠一一営回一豆巨巣.卄安课课课课所加看改除印.二X二X二X二X二X二X二X二X二X二X二X二X二XXXKNKNKNKNKNKNKNKNKNKNKNKNKNKNKNKNKNKNKNXX请輸药下面操作动作的序号:修改课程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论