题目:影碟租赁信息管理系统要求:制作一个影碟租赁信息管理系统系统概述本系统是一个对影碟租赁信息进行录入、增加、删除、修改和查询的管理应用软件,用户可以对文件中存储的影碟租赁信息进行查询和排序、浏览,了解被租赁影碟的名称、价格等信息。
该软件给用户提供了一个简单的人机界面,用户可以根据提示输入操作项并进行一系列对影碟租赁信息的管理操作。
功能:(1)用户验证:根据用户输入的用户名和密码判断是否合法用户(合法用户可以不只一个),并进行相应处理。
(2)提供系统操作菜单(3)创建影碟租赁信息文件:用户根据提示输入影碟编号、影碟名称、租赁价格、租赁期限、租赁数量等信息,系统自动计算营业金额,并保存。
(4)增加影碟租赁信息条目(5)删除影碟租赁信息条目:由用户指定要删除的条目,可以按照影碟编号或影碟名称进行删除。
(6)修改影碟租赁信息条目:由用户指定要修改的条目,可以按照影碟编号或影碟名称进行修改。
(7)查询影碟租赁信息条目:由用户指定要查询的条目,可以按照影碟编号或影碟名称进行查询。
(8)浏览全部影碟租赁信息,以表格形式显示。
(9)统计并输出指定租赁价格、数量的影碟租赁条目,并以表格形式输出。
(此功能至少应该包含三个以上子功能)(10)对影碟租赁信息进行排序并输出排序结果(全部或最多的10个或最少的10个等),由用户选定按照营业额、数量等进行不同的排序。
(此功能至少应该包含三个以上子功能)提示:1、建立如下结构体影碟编号、影碟名称、租赁价格、租赁期限、租赁数量、营业金额struct song{char ID[4];char Cname[8];float price;int qixian;int num;float sum;}2、存储和显示信息表格形式影碟编号、影碟名称、租赁价格、租赁期限、租赁数量、营业金额3、系统功能结构图4、功能要求描述:(1)主函数:定义所需变量,显示主菜单,接受用户选择,根据用户选择执行相应的自定义函数。
例如,菜单样例程序(黑体部分)#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <math.h>void FindNum();void FindRoot();void Detective();void Bear();void Diamond();int menu_select();void main(){for(;;){switch(menu_select()){case 1:FindNum();break;case 2:FindRoot();break;case 3:Detective();break;case 4:Bear();break;case 5:Diamond();break;case 6:printf("再见!");exit(0);}}}int menu_select(){char s;int cn;printf("1.找数字\n");printf("2.求根\n");printf("3.侦查\n");printf("4.熊\n");printf("5.菱形图案\n");printf("6.再见!\n");printf("输入1---6:");do{s=getchar();cn=(int)s-48;}while(cn<0||cn>6);return cn;}void FindNum(){……}void FindRoot(){……}void Detective(){……}void Bear(){……}void Diamond(){……}(2)密码确认由于输入、修改、删除操作需要具有一定权限的人员进行操作,所以在这些功能模块中应该有密码确认功能,例如,一段检测用户密码的程序段:#include <stdio.h>#include <string.h>void main(){ char password[20];printf(“请输入密码:”);gets(password);while(strcmp(password,”administrators”)!=0){printf(“\n无效密码”);printf(“\n请重新输入密码:”);gets(password);}printf(“OK!”);}(3)输入新信息功能定义结构体变量,建立一个文件,从键盘输入一条信息,到变量中,再将其写入文件中,例如,例12.3从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
#include <stdio.h>#define SIZE 4struct student-type{char name[10];int num;int age;char addr[15];}stud[SIZE];void save(){FILE fp;int i;if((fp=fopen("stu-list","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(struct student-type),1,fp)!=1)printf("file write error\n");fclose (fp);}void main(){int i;for(i=0;i<SIZE;i++)scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);save();}在main函数中,从终端键盘输入4个学生的数据,然后调用save函数,将这些数据输出到以“stu_list”命名的磁盘文件中。
fwrite函数的作用是将一个长度为29字节的数据块送到stu_list文件中(一个student_type类型结构体变量的长度为它的成员长度之和,即10+2+2+15=29)。
运行情况如下:输入4个学生的姓名、学号、年龄和地址:Zhang100119room-101Fun 1002 20 room-102Tan 1003 21 room-103Ling 1004 21 room-104程序运行时,屏幕上并无输出任何信息,只是将从键盘输入的数据送到磁盘文件上。
为了验证在磁盘文件“stu_list”中是否已存在此数据可以用以下程序从“stu_list”文件中读入数据,然后在屏幕上输出。
#include <stdio.h>#define SIZE 4struct student-type{char name[10];int num;int age;char addr[15];}stud[SIZE];void main(){int i;FILE fp;fp=fopen("stu-list","rb");for(i=0;i<SIZE;i++){fread(&stud[i],sizeof(struct student-type),1,fp);printf("%-10s %4d %4d %-15s\n",stud[i].name,&stud[i].num,&stud[i]. age,stud[i].addr);fclose (fp);}程序运行时不需从键盘输入任何数据。
屏幕上显示出以下信息:Zhang 1001 19 room-101Fun 1002 20 room-102Tan 1003 21 room-103Ling 1004 21 room-104(4)修改信息首先输入要修改的影碟的ID、名、或其它关键信息,从文件逐条读出信息进行比对,查找是否有该信息,没有就直接输出信息;有则进行修改,修改后的信息继续存入文件。
可以采取定义结构体数组的方式,将从文件读出的数据存入到数组中,在数组中进行相应处理后,再写入文件中。
(5)删除信息首先输入要删除的影碟的ID、名、或其它关键信息,从文件逐条读出信息进行比对,查找是否有该信息,没有就直接输出信息;有则进行删除,删除后的信息继续存入文件。
可以采取定义结构体数组的方式,将从文件读出的数据存入到数组中,在数组中进行相应处理后,再写入文件中。
(6)浏览功能从文件读出所有信息到数组中,将它们以表格方式显示。
影碟编号、影碟名称、租赁价格、租赁期限、租赁数量、营业金额可以增加一个排序功能。
结果以表格形式输出。
(7)查询功能可以按照影碟编号、影碟名称等查询,需要设计一个二级菜单。
将从文件读出的数据存入到数组中,在数组中进行相应处理。
(8)统计功能可以按照影碟编号、影碟名称、数量、单价、金额等信息进行统计,需要设计一个二级菜单。
将从文件读出的数据存入到数组中,在数组中进行相应处理。