




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内蒙古科技大学课程设计说明书内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 影碟信息管理系统学生姓名:学 号:专 业:班 级:指导教师:46内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目影碟信息管理系统指导教师时间一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。影碟信息管理系统图影碟息包括:电影名称、出品公司、导演姓名、主演姓名(至少2个)、上映时间、库存数量、价格等。试设计一影碟信息管理系统,使之能提供以下功能:v 影碟信息录入功能(影碟信息用文件保存)输入;影碟信息浏览功能输出v 查询或排序功能:(至少两种查询方式)算法按电影名称查询 按主演姓名查询v 影碟信息的插入、删除与修改v 影碟的借出与归还三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社第一部分:程序总体设计思路41.1结构体设计41.2运行界面设计4第二部分 详细设计92.1 输入模块设计92.2 输出模块设计112.3查找模块设计122.4 借阅与归还模块设计142.5 删除模块设计18第三部分 课程设计总结19附录:程序代码20参考文献32简介 由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。程序具体设计思路如下:程序的需求是设计影碟信息管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先如果设计一个添加函数把要录入的碟片录入一个文件中,再建立一个借阅者文件把借阅人放入其中。然后建立添加、浏览删除、查询、借阅和归还等函数,通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内容所包含的数据的操作。整个程序的设计思路到此结束。开始NY请根据菜单进行选择结束是否退出菜单4.碟片借阅归还3.碟片信息查询2.浏览碟片信息1.录入碟片信息5.用户信息添加第一部分:程序总体设计思路1.1结构体设计数据项描述=数据项名,数据类型,长度;影片信息=影片ID,CHAR,10; 片名,CHAR,20;导演,CAHR,20;介绍,CAHR,200;上映时间,DATE,10;租借记录=记录项ID,CHAR,10;借出时间,DATE,10;归还时间,DATE,10;租金,INT,41.2运行界面设计进入主菜单图1.1 选择1进行碟片添加图1.2选择2进行查询图1.3选择(1)碟片名查询图1.4选择(2)演员名查询图1.5选择3进行碟片借阅 图1.7选择6进行碟片浏览图1.8选择4碟片归还图1.9选择7碟片删除图1.10第二部分 详细设计2.1 输入模块设计定义一个add添加函数添加碟片开始输入影碟信息If 0=cd_numberelse以写入方式打开文件进行添加以追加方式打开文件进行添加cd_number+结束void add(void)/ FILE *a; /文件指针printf(请输入碟片名称:n); scanf(%s,CDcd_number.film_name);printf(请输入出品公司:n);scanf(%s,CDcd_number.film_gongsi);printf(请输入导演姓名:n); scanf(%s,CDcd_number.film_daoyan); printf(请输入主演姓名:n); scanf(%s,CDcd_number.film_zhuyan);printf(请输入上映时间:n);scanf(%s,CDcd_number.shijie);getchar();n = 1; /修改借阅标记if(0=cd_number)a=fopen(cd.txt,wb);fwrite(&CDcd_number,sizeof(struct cd),1,a);elsea=fopen(cd.txt,ab);fwrite(&CDcd_number, sizeof(struct cd), 1, a);cd_number+;printf(影片添加成功n); getchar();fclose(a);2.2 输出模块设计定义一个read函数浏览所有碟片信息开始I=0;i+输出影碟信息icd_number结束void read(void) int i; system(cls); for(i=1; icd_number; i+) printf(nn); printf( 碟片名称 :); printf(%sn,CDi.film_name); printf( 出品公司 :); printf(%sn,CDi.film_gongsi); printf( 导演姓名 :); printf(%sn,CDi.film_daoyan); printf( 主演姓名 :); printf(%sn,CDi.film_zhuyan); printf( 上映时间 :); printf(%sn,CDi.shijie); printf(输入任意键返回); getch();scanf(%d,&n);2.3查找模块设计定义一个cheak函数从文件中查找相应的碟片信息开始I=0;CDi.film_name,cd_name=0I+输出影碟信息icd_number结束void check(void)/ int i;char cd_name10; system(cls);printf(请要查询的输入碟片名:n); scanf(%s,cd_name); printf(碟片名称 出品公司 导演姓名 主演姓名 上映时间n);for(i = 0; i cd_number; i+) if(strcmp(CDi.film_name,cd_name)=0) printf(%s %s %s %s %s %dn,CDi.film_name,CDi.film_gongsi,CDi.film_daoyan,CDi.film_zhuyan,CDi.shijie);if(i=cd_number) printf(抱歉,不能找到。n);getchar();getchar();2.4 借阅与归还模块设计定义一个借阅和归还函数,通过输入碟片名查找与之相符的碟片进行借阅或归还。找到要借阅的碟片借阅借阅结束开始归还借阅的碟片,n-1归还void rent(void) / int n;char user_name10; char cd_name10; FILE *a;/ FILE *b;/ int k=0;a = fopen(rent.txt,r);b = fopen(cd.txt,r);for (int i = 0; i cd_number; i+) fread(&CDi, sizeof(struct cd),1,b);for (i = 0; i user_number; i+) fread(&RENTi,sizeof(struct rent),1,a); printf(请输入借阅人:n); scanf(%s,user_name);getchar(); printf(请输入碟片名称n); scanf(%s,cd_name); getchar(); printf(请再次输入碟片名称:n); scanf(%s,RENTi.film_namek);k+; getchar();printf(已借%d张n,k); for (int j = 0; j cd_number; j+) if(strcmp(CDj.film_name, cd_name)=0) n=0; printf(请输入借出日期:n); scanf(%d,&RENTi.rent_time); printf(借阅成功n);scanf(%d,&n);fclose(a); fclose(b); /-碟片归还函数-void returnn (void) /int n;char user_name10; char cd_name10; FILE *a; FILE *b; int i; int j; int k = 0;a = fopen(rent.txt,r);b = fopen(cd.txt,r);for (i = 0; i cd_number; i+) fread(&CDi, sizeof(struct cd), 1, b);for (i = 0; i user_number; i+) fread(&RENTi, sizeof(struct rent), 1, a); printf(请输入借阅人:n); scanf(%s,user_name); for (i = 0; i user_number; i+) if (strcmp(user_name, RENTi.username)=0) printf(输入要归还的碟片名:n); scanf(%s,cd_name); for (j = 0; j cd_number; j+) if(strcmp(CDj.film_name, cd_name)=0) n = 1; break; printf(借出日期:%dn,RENTi.rent_time);printf(归还日期:n); scanf(%d,&RENTi.return_time); getchar();if (RENTi.return_time - RENTi.rent_time) % 3)=0) RENTi.money = (RENTi.return_time - RENTi.rent_time) / 3; else RENTi.money = (RENTi.return_time - RENTi.rent_time) / 3 + 1; printf(租金:%dn,RENTi.money); scanf(%d,&n);fclose(a); fclose(b); 2.5 删除模块设计通过定义一个Delete删除函数进行删除,首先从文件中查找到与之对应的信息后面的覆盖到前面进行删除。void shanchu(void) int i,j,key;char cd_name10;system(cls);printf(请输入要删除的碟片:);scanf(%s,&cd_name);if(cd_name=0) return;for(i=0;icd_number;i+)if(strcmp(CDi.film_name,cd_name)=0)cd_number-;for(j=i;jcd_number;j+)strcpy(CDi.film_name,CDj+1.film_name);strcpy(CDi.film_gongsi,CDj+1.film_gongsi);strcpy(CDi.film_daoyan,CDj+1.film_daoyan);strcpy(CDi.film_zhuyan,CDj+1.film_zhuyan);strcpy(CDi.shijie,CDj+1.shijie);key=1;printf(删除成功!);getchar();getchar();if(key!=1)printf(无此碟片!);getchar();getchar();第三部分 课程设计总结经过几周的课程设计,我学到了很多东西:巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。经过实际编译系统的分析设计、编程调试。能够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。 课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去。另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。附录:程序代码#include #include #include #includevoid check2(void);void add(void); /新片上架函数void read(void);/浏览碟片void shanchu(void);/删除碟片void check(void); / 碟片查询函数void rent(void); /碟片借阅函数void returnn (void);/ 碟片归还函数int user_number =2; /定义会员函数int cd_number =1; /定义碟片函数struct cd/碟片结构体 char film_name100; /碟片名称 char film_gongsi100; /出品公司 char film_daoyan100; /导演姓名 char film_zhuyan100; /主演姓名 char shijie11; /上映时间;int n;/借阅标记struct rent/碟片借阅结构体 char username10;/使用者名 char userxingbie10;/使用者性别 int userage;/使用者年龄 int year;/使用者出生年份 int month;/使用者出生月份 int day;/使用者出生天数 char film_name1010; /碟片名称 char rent_time; /借出日期 int return_time; /归还日期 int money; /租金;struct cd CD1000; /定义CD函数struct rent RENT1000; /定义出租函数void main() /主函数 char choice; char op; system(cls);a: printf(1:碟片添加 n);printf(2:碟片预览 n); printf(3:碟片查询 n); printf(4:碟片删除 n);printf(5:碟片借阅n); printf(6:碟片归还 n); printf(0:退出程序 n); printf(请输入你的选择:n); scanf(%c,&choice); switch(choice) /多条件选择判断 case1:system(cls);add(); /碟片添加函数break;case2:system(cls);read();/浏览函数break; case3:system(cls);printf(1.按影碟名查询 n);printf(2.按主演名查询 n);printf(请输入查询方式:n);getchar();scanf(%c,&op);switch (op)case 1:system(cls);check();break;case 2:system(cls);check2();break;break; case4:system(cls);shanchu(); /删除函数break; case5:system(cls);rent(); /碟片借出函数break; case6:system(cls);returnn();/碟片归还函数break; case0: system(cls); printf (感谢您对此系统的使用,再见!n); exit(0);/退出函数 system(cls); goto a;void add(void)/新片添加 FILE *a; /文件指针 printf(请输入碟片名称:n); scanf(%s,CDcd_number.film_name); printf(请输入出品公司:n); scanf(%s,CDcd_number.film_gongsi); printf(请输入导演姓名:n); scanf(%s,CDcd_number.film_daoyan); printf(请输入主演姓名:n); scanf(%s,CDcd_number.film_zhuyan); printf(请输入上映时间:n); scanf(%s,CDcd_number.shijie); getchar(); n = 1; /修改借阅标记 if(0=cd_number) a=fopen(cd.txt,wb); fwrite(&CDcd_number,sizeof(struct cd),1,a); else a=fopen(cd.txt,ab); fwrite(&CDcd_number, sizeof(struct cd), 1, a); cd_number+; printf(影片添加成功n); fclose(a); printf( 输入任意键返回);getch();void read(void)/-浏览影碟信息- int i; system(cls); for(i=1; icd_number; i+) printf( 碟片名称 :); printf(%sn,CDi.film_name); printf( 出品公司 :); printf(%sn,CDi.film_gongsi); printf( 导演姓名 :); printf(%sn,CDi.film_daoyan); printf( 主演姓名 :); printf(%sn,CDi.film_zhuyan); printf( 上映时间 :); printf(%sn,CDi.shijie); printf(输入任意键返回); getch();void check(void)/影碟信息查询 int i; char cd_name10; system(cls); printf(请要查询的输入碟片名:n); scanf(%s,cd_name); for(i = 0; i cd_number; i+) if(strcmp(CDi.film_name,cd_name)=0) printf(nn); printf( 碟片名称 :); printf(%sn,CDi.film_name); printf( 出品公司 :); printf(%sn,CDi.film_gongsi); printf( 导演姓名 :); printf(%sn,CDi.film_daoyan); printf( 主演姓名 :); printf(%sn,CDi.film_zhuyan); printf( 上映时间 :); printf(%sn,CDi.shijie); break; if(i=cd_number) printf(抱歉,不能找到。n); getchar(); printf( 输入任意键返回); getch();void rent(void) /-碟片借阅函数- int n; char user_name10; char cd_name10; FILE *a;/ FILE *b;/ int k=0; int i,j; a = fopen(rent.txt,r); b = fopen(cd.txt,r); for (i = 0; i cd_number; i+) fread(&CDi, sizeof(struct cd),1,b); for (i = 0; i user_number; i+) fread(&RENTi,sizeof(struct rent),1,a); printf(请输入碟片名称n); scanf(%s,cd_name); k+; getchar(); printf(已借%d张n,k); for (j = 0; j cd_number; j+) if(strcmp(CDj.film_name, cd_name)=0) n=0; printf(请输入借出日期:n); scanf(%d,&RENTi.rent_time); printf(借阅成功n); fclose(a); fclose(b); printf( 输入任意键返回); getch();void returnn (void) /碟片归还函数- int n; char user_name10; char cd_name10; FILE *a; FILE *b; int i; int j; int k = 0; a = fopen(rent.txt,r); b = fopen(cd.txt,r); for (i = 0; i cd_number; i+) fread(&CDi, sizeof(struct cd), 1, b); for (i = 0; i user_number; i+) fread(&RENTi, sizeof(struct rent), 1, a); for (i = 0; i user_number; i+) if (strcmp(user_name, RENTi.username)=0) printf(输入要归还的碟片名:n); scanf(%s,cd_name); for (j = 0; j cd_number; j+) if(strcmp(CDj.film_name, cd_name)=0) n = 1; break; printf(借出日期:%dn,RENTi.rent_time); printf(归还日期:n); scanf(%d,&RENTi.return_time); getchar(); if (RENTi.return_time - RENTi.rent_time) % 3)=0) RENTi.money = (RENTi.return_time - RENTi.rent_time) / 3; else RENTi.money = (RENTi.return_time - RENTi.rent_time) / 3 + 1; printf(租金:%dn,RENTi.money); printf( 输入任意键返回); getch(); fclose(a); fclose(b);void shanchu(void)/删除碟片 int i,j,key; char cd_name10; system(cls); printf(请输入要删
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年病理学病理切片鉴别诊断判断题模拟考试卷答案及解析
- 2025年驾驶员考核试题及答案
- 2025年第三届全国应急管理普法知识竞赛题库及答案
- 2025年查对制度考试模拟题库题库及解析答案
- 中国医科大学2025年6月《肿瘤护理学》作业考核试题及答案
- 2025年康复医学脑卒中康复训练常见问题考试答案及解析
- 2025年神经内科帕金森病辅助治疗真伪题答案及解析
- 光伏项目施工安全保障方案
- 金属表面处理生产计划管理方案
- 老旧小区消防设施完善工程方案
- 《创新创业教育》说课课件
- 卡丁车俱乐部管理制度
- 代理记账财务会计管理制度范文
- T/CHC 1001-2019植物源高有机硒食品原料
- 青岛租房合同协议书下载
- 企业内部培训合格证明书(5篇)
- 2024年纺织行业招聘要点试题及答案
- 气道净化护理团体标准解读
- 医疗设备采购项目实施进度计划
- 试油监督培训班
- 国内安全保卫学课件
评论
0/150
提交评论