课 程 设 计 任 务 书
题 目 影碟出租管理系统
学 院 国际教育学院
专 业 电气工程及其自动化
班 级 国电132班
学生姓名
学 号
6 月 16 日至 6 月 19 日 共 1 周
指导教师(签字)
1、设计内容及要求 影碟出租管理(★★★)(限最多3人选) 总体需求 编写一个影碟出租管理程序 影碟信息的组成部分为:碟片名称、国家、类型、借阅标记等 出租信息的组成部分为:会员名、碟片名称、借阅日期、归还日期、租金等 功能需求 1) 新片上架:添加碟片信息 2) 碟片查询:按片名查询某片是否可借阅,结果有三种(可借阅、已借出、无此片)。 3) 碟片借阅:输入会员名、碟片名称、借阅日期,修改碟片的租借标记(每个会员一次可借阅多片) 4)碟片归还:输入会员名、碟片名称、归还日期,修改碟片的租借标记,计算每片租金(每三天的租金为1元,不满三天的按三天计算)。因为每个会员一次可借阅多片,所以也可能一次归还多片。在该操作结束前,应输出该会员此次归还所需支付的总租金。 5)用子函数实现各个子功能 用户界面 输入: 程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。 输出: 1) 应用程序正常运行后,要在屏幕上显示一个文字菜单 2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等 |
二、设计原始资料 |
三、设计完成后提交的文件和图表 1.计算说明书部分 |
2.图纸部分: #include <iostream> #include <string> #include <stdio.h> #include <iomanip> using namespace std; class yingdie { char num[20]; char name[20]; char country[20]; char type[20]; int tag; public: yingdie *next; yingdie() { num[0]=0; name[0]=0; country[0]=0; type[0]=0;next=NULL;tag=1; } ~yingdie(){} char *getname(){return name;} int gettag(){return tag;} void Input() { cout<<"请输入影碟编号:"; cin>>num; cout<<endl; cout<<"请输入影碟名称:"; cin>>name; cout<<endl; cout<<"请输入影碟国家:"; cin>>country; cout<<endl; cout<<"请输入影碟类型:"; cin>>type; cout<<endl; } void Output() { cout<<setw(11)<<num; cout<<setw(12)<<name; cout<<"\t"<<setw(16)<<country; cout<<setw(15)<<type; } friend class cangku; }; class huiyuan { char hy_name[20]; public: int rent_time[2]; int return_time[2]; double money; huiyuan *next1; huiyuan() { hy_name[0]=0; money=0; for(int i=0;i<2;i++) { rent_time[i]=0; return_time[i]=0; } } ~huiyuan(){} char *gethyname(){return hy_name;} void sethyname(char *hyname) { strcpy(hy_name,hyname); } friend class cangku; }; class cangku { yingdie *head,*tail; huiyuan *top,*end; public: cangku() { head=NULL; tail=NULL; top=NULL; end=NULL; } ~cangku() { yingdie* p; huiyuan *q; while(head) { p=head; head=head->next; delete p; } while(top) { q=top; top=top->next1; delete q; } } void addyd(); void addhy(); void Delete(); void search(); void print(); void chuzu(); void guihuan(); }; void cangku::addyd() { cout<<"\n\t\t\t\t** 增加影碟的相关信息 **\t\t\n\n"; char ch; A: yingdie *p=new yingdie; p->Input(); p->tag=1; p->next=NULL; if(tail) tail->next=p; else head=p; tail=p; while(1) { cout<<"是否继续输入?(Y/N)\n"; cin>>ch; if(ch=='Y'||ch=='y') goto A; if(ch=='N'||ch=='n')break; } } void cangku::addhy() { B: huiyuan *p=new huiyuan; char hyname[20],ch; cout<<"\n\t\t\t\t** 增加会员的相关信息 **\t\t\n\n"; cout<<"请输入要添加的会员名称:\n"; cin>>hyname; p->sethyname(hyname); p->next1=NULL; if(end) end->next1=p; else top=p; end=p; while(1) { cout<<"是否继续输入?(Y/N)\n"; cin>>ch; if(ch=='Y'||ch=='y') goto B; if(ch=='N'||ch=='n')break; } } void cangku::Delete() { cout<<"\n\t\t\t\t** 删除影碟 **\t\t\n\n"; yingdie *p1,*p2; char nam[20]; char a[20]; if(head==NULL) { cout<<"\t\t现无任何记录!\n"; } else { p2=head; cout<<"\n\n请输入要删除的影碟名称:\n"; cin>>nam; while(strcmp(p2->getname(),nam)!=0&&p2->next!=NULL) { p1=p2; p2=p2->next; } if(strcmp(p2->name,nam)==0) { if(p2==head) head=p2->next; else p1->next=p2->next; strcpy(a,p2->name); delete p2; cout<<"\t\t\t\t影碟《"<<a<<"》已被删除!\n\n"; } else { cout<<"\n无此影碟,请重输!\n\n"; } } } void cangku::search() { cout<<"\n\t\t\t\t** 查找影碟 **\t\t\n\n"; char nam[20]; yingdie *p; p=head; cout<<"请输入影碟名称:\n"; cin>>nam; while(strcmp(p->getname(),nam)!=0&&p->next!=NULL) p=p->next; if(strcmp(p->getname(),nam)==0) { cout<<"\n\t\t\t\t** 查找结果**\t\t\n\n"; cout<<"\t编号 "<<"\t影碟名称"<<"\t影碟国家"<<"\t影碟类别"<<"\t可否借阅\n"; p->Output(); if(p->tag==1) cout<<"\t\t"<<"可借阅"; else cout<<"\t\t"<<"已借出"; cout<<"\n查找完成!\n\n"; } else cout<<"此影碟没有找到!\n"; } void cangku::print() { cout<<"\n\t\t\t\t** 影碟信息列表 **\t\t\n\n"; cout<<"\t编号 "<<"\t影碟名称"<<"\t影碟国家"<<"\t影碟类别"<<"\t可否借阅\n"; yingdie *p=head; while(p) { p->Output(); if(p->tag==1) cout<<"\t\t"<<"可借阅"; else cout<<"\t\t"<<"已借出"; p=p->next; cout<<endl; } cout<<"\n\n"; } void cangku::chuzu() { yingdie *p,*p1; huiyuan *q; p=head; p1=head; q=top; char hyname[20],ydname[20],ch; cout<<"\n\t\t\t\t** 出租影碟 **\t\t\n\n"; C: cout<<"请输入会员名称:\n"; cin>>hyname; while(strcmp(q->gethyname(),hyname)!=0&&q->next1!=NULL) q=q->next1; if(strcmp(q->gethyname(),hyname)==0) { cout<<"请输入要借阅的影碟名称:\n"; cin>>ydname; while(strcmp(p->getname(),ydname)!=0&&p->next!=NULL) p=p->next; if(strcmp(p->getname(),ydname)==0) { if(p->tag==1) { cout<<"请输入借阅的时间(格式:月-日):\n"; scanf("%d-%d",&(q->rent_time[0]),&(q->rent_time[1])); p->tag=0; } else cout<<"此影碟已借出!"<<endl; } else cout<<"无此影碟!"<<endl; } else cout<<"无此会员!"<<endl; while(1) { cout<<"是否继续借阅?(Y/N)\n"; cin>>ch; if(ch=='Y'||ch=='y') goto C; if(ch=='N'||ch=='n')break; } cout<<endl; } void cangku::guihuan() { yingdie *p,*p1; huiyuan *q; p=head; p1=head; q=top; char hyname[20],ydname[20],ch; cout<<"\n\t\t\t\t** 归还影碟 **\t\t\n\n"; D: cout<<"请输入会员名称:\n"; cin>>hyname; while(strcmp(q->gethyname(),hyname)!=0&&q->next1!=NULL) q=q->next1; if(strcmp(q->gethyname(),hyname)==0) { cout<<"请输入要归还的影碟名称:\n"; cin>>ydname; while(strcmp(p->getname(),ydname)!=0&&p->next!=NULL) p=p->next; if(strcmp(p->getname(),ydname)==0) { if(p->tag==0) { cout<<"请输入归还的时间:(格式:月-日)\n"; scanf("%d-%d",&(q->return_time[0]),&(q->return_time[1])); if((q->return_time[0]-q->rent_time[0])!=0) { if(((q->return_time[0]-q->rent_time[0]-1)*30+q->return_time[1]+(30-q->rent_time[1]))%3==0) q->money=((q->return_time[0]-q->rent_time[0]-1)*30+q->return_time[1]+(30-q->rent_time[1]))/3; else q->money=((q->return_time[0]-q->rent_time[0]-1)*30+q->return_time[1]+(30-q->rent_time[1]))/3+1; } else { if((q->return_time[1]-q->rent_time[1])%3==0) q->money=(q->return_time[1]-q->rent_time[1])/3; else q->money=(q->return_time[1]-q->rent_time[1])/3+1; } cout<<"需要支付的金钱为:"<<q->money<<endl; cout<<endl; p->tag=1; cout<<"此影碟已归还!\n"<<endl; } } } else cout<<"无此会员!"<<endl; while(1) { cout<<"是否继续归还?(Y/N)\n"; cin>>ch; if(ch=='Y'||ch=='y') goto D; if(ch=='N'||ch=='n')break; } cout<<endl; } void menu()//菜单 { cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 影 碟 出 租 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加碟片信息 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.增 加 会 员 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.显示碟片信息 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.删除碟片信息 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.查找碟片信息 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.出 租 碟 片 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 7.归 还 碟 片 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"; cout<<"\n\t\t\n\t\t请选择:\n"; } int main() { system("color 05f"); int i; int x; cangku ck; cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl; for(i=0;i<3;i++) cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl; cout<<"\t\t◎★★★★【 欢迎进入影碟出租管理系统 】★★★★◎"<<endl; for(i=0;i<3;i++) cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl; cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl; cout<<"\n\n\n"<<endl; cout<<"按回车键进入主界面..."<<endl; getchar(); while(x) { menu(); cin>>x; switch(x) { case 1:ck.addyd();break; case 2:ck.addhy();break; case 3:ck.print();break; case 4:ck.Delete();break; case 5:ck.search();break; case 6:ck.chuzu();break; case 7:ck.guihuan();break; case 0:x=0;break; default :cout<<"输入错误,请重新输入...";break; } } return 0; } |
四、进程安排 (一)设计方法 1.查询相关资料,了解本系统的研究意义。可以上网搜索或者是去图书馆查阅相关 资料。 2.通过查询资料了解该系统要如何做,及要做哪些东西。 3.设计出大体上的功能模块,画出模块图。 4.通过进一步的了解,对每个功能模块进行细化,将每一步都想清楚。制定出每一 步的做法和注意的地方。 5.对设计好的程序进行调试,通过调试发现存在的问题并解决,从而达到完善系统 的目的。 6.最后,整理各阶段的设计记录文档,写成论文稿。 |
5、主要参考资料 1.谭浩强,c程序设计,第四版,北京:清华大学出版社 2,教育部考试中心主编,全国计算机等级考试二级教程—C语言程序设计,北京:高等教育出版社 3,王静,武春岭,C语言程序设计基础习题集,北京:中国水利水电出版社 4,丁亚涛,C语言程序设计上机实训与考试指导,北京:中国水利水电出版社 5,周彩英,C语言程序设计教程,北京:清华大学出版社 6,王敬华等,C语言程序设计教程,(第二版)习题解答与实验指导,北京:清华大学出版社 |
年度营销任务计划书模版20xx年营销计划任务书根据集团公司20xx年总体经营计划结合XX分公司市场实际对XX分公司下达20xx年营…
商业计划书模板XXX公司或XXX项目商业计划书年月公司资料地址邮政编码联系人及职务电话传真网址电子邮箱报告目录第一部分摘要最后汇总…
课程设计任务书题目影碟出租管理系统学院国际教育学院专业电气工程及其自动化班级国电132班学生姓名学号6月16日至6月19日共1周指…
年度营销任务计划书模版20xx年营销计划任务书根据集团公司20xx年总体经营计划结合XX分公司市场实际对XX分公司下达20xx年营…
XXX软件项目计划任务书作者完成日期签收人签收日期修改情况记录1目录1项目背景范围及目标32项目可行性分析33项目的软件开发生命周…
系统集成部任务执行计划表填表说明1计划的内容填写实在的内容拒绝形式内容要求简明扼要具体明确简单清楚可操作2只有参与项目实施的人员才…