内蒙古科技大学本科生课程设计说明书题目:C语言课程设计——影碟信息管理系统学生姓名:代做课设QQ838458640 学号:代做课设QQ838458640 专业:代做课设QQ838458640 班级:代做课设QQ838458640 指导教师:代做课设QQ838458640内蒙古科技大学课程设计任务书目录内蒙古科技大学课程设计任务书............ 错误!未定义书签。
简介 (III)第一部分:程序总体设计思路 (4)1.1 结构体设计 (4)1.2 运行界面设计 (4)第二部分:详细设计 (10)2.1 输入模块设计 (10)2.2 输出模块设计 (11)2.3 查找模块设计 (13)2.4 借阅与归还模块设计 (14)2.5 删除模块设计 (19)第三部分:课程设计总结 (21)附录:程序代码 (22)简介由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体设计思路如下:程序的需求是设计影碟信息管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先如果设计一个添加函数把要录入的碟片录入一个文件中,再建立一个借阅者文件把借阅人放入其中。
然后建立添加、浏览删除、查询、借阅和归还等函数,通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内容所包含的数据的操作。
整个程序的设计思路到此结束。
第一部分:程序总体设计思路1.1结构体设计数据项描述={数据项名,数据类型,长度};影片信息={影片ID,CHAR,10;片名,CHAR,20;导演,CAHR,20;介绍,CAHR,200;上映时间,DATE,10};租借记录={记录项ID,CHAR,10;借出时间,DATE,10;归还时间,DATE,10;租金,INT,4}1.2运行界面设计进入主菜单图1.1选择1进行碟片添加图1.2 选择2进行查询图1.3选择(1)碟片名查询图1.4 选择(2)演员名查询图1.5选择5进行借阅人注册图1.6 选择3进行碟片借阅图1.7选择6进行碟片浏览图1.8 选择4碟片归还图1.9选择7碟片删除图1.10第二部分详细设计2.1输入模块设计定义一个add添加函数添加碟片void add(void)//{FILE *a; //文件指针printf("请输入碟片名称:\n");scanf("%s",CD[cd_number].film_name);printf("请输入出品公司:\n");scanf("%s",CD[cd_number].film_gongsi);printf("请输入导演姓名:\n");scanf("%s",CD[cd_number].film_daoyan);printf("请输入主演姓名:\n");scanf("%s",CD[cd_number].film_zhuyan);printf("请输入上映时间:\n");scanf("%s",CD[cd_number].shijie);getchar();n = 1; //修改借阅标记if(0==cd_number){a=fopen("cd.txt","wb");fwrite(&CD[cd_number],sizeof(struct cd),1,a);}else{a=fopen("cd.txt","ab");fwrite(&CD[cd_number], sizeof(struct cd), 1, a);}cd_number++;printf("影片添加成功\n");getchar();fclose(a);}2.2输出模块设计定义一个read函数浏览所有碟片信息void read(void){int i;system("cls");for(i=1; i<cd_number; i++){printf("\n\n");printf(" 碟片名称:");printf("%s\n",CD[i].film_name);printf(" 出品公司:");printf("%s\n",CD[i].film_gongsi);printf(" 导演姓名:");printf("%s\n",CD[i].film_daoyan);printf(" 主演姓名:");printf("%s\n",CD[i].film_zhuyan);printf(" 上映时间 :");printf("%s\n",CD[i].shijie);}printf("输入任意键返回");getch();}scanf("%d",&n);} 2.3查找模块设计定义一个cheak 函数从文件中查找相应的碟片信息void check(void)//{int i;char cd_name[10];system("cls");printf("请要查询的输入碟片名:\n");scanf("%s",cd_name);printf("碟片名称出品公司导演姓名主演姓名上映时间\n");for(i = 0; i < cd_number; i++){if(strcmp(CD[i].film_name,cd_name)==0){printf("%s %s %s %s %s %d\n",CD[i].film_name,CD[i].film_gongsi,CD[i].film_daoyan,CD[i].film_zhuyan,CD[i].shijie);}if(i==cd_number) printf("抱歉,不能找到。
\n");}getchar();getchar();}2.4 借阅与归还模块设计定义一个借阅和归还函数,通过输入碟片名查找与之相符的碟片进行借阅或归还。
void rent(void) //{int n;char user_name[10];char cd_name[10];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(&CD[i], sizeof(struct cd),1,b);}for (i = 0; i < user_number; i++){fread(&RENT[i],sizeof(struct rent),1,a);}printf("请输入借阅人:\n");scanf("%s",user_name);getchar();printf("请输入碟片名称\n");scanf("%s",cd_name);getchar();printf("请再次输入碟片名称:\n");scanf("%s",RENT[i].film_name[k]);k++;getchar();printf("已借%d张\n",k);for (int j = 0; j < cd_number; j++){if((strcmp(CD[j].film_name, cd_name))==0){n=0;}}printf("请输入借出日期:\n");scanf("%d",&RENT[i].rent_time);printf("借阅成功\n");scanf("%d",&n);fclose(a);fclose(b);}//--------------碟片归还函数---------------------------- void returnn (void) //{int n;char user_name[10];char cd_name[10];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(&CD[i], sizeof(struct cd), 1, b);}for (i = 0; i < user_number; i++){fread(&RENT[i], sizeof(struct rent), 1, a);}printf("请输入借阅人:\n");scanf("%s",user_name);for (i = 0; i < user_number; i++){if ((strcmp(user_name, RENT[i].username))==0){printf("输入要归还的碟片名:\n");scanf("%s",cd_name);for (j = 0; j < cd_number; j++){if((strcmp(CD[j].film_name, cd_name))==0){n = 1;break;}}}}printf("借出日期:%d\n",RENT[i].rent_time);printf("归还日期:\n");scanf("%d",&RENT[i].return_time);getchar();if (((RENT[i].return_time - RENT[i].rent_time) % 3)==0){RENT[i].money = (RENT[i].return_time - RENT[i].rent_time) / 3;}else{RENT[i].money = (RENT[i].return_time - RENT[i].rent_time) / 3 + 1; }printf("租金:%d\n",RENT[i].money);scanf("%d",&n);fclose(a);fclose(b);}2.5 删除模块设计通过定义一个Delete删除函数进行删除,首先从文件中查找到与之对应的信息后面的覆盖到前面进行删除。