代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业,
长期接单,信誉有保证,标价10-20每份,如有需要请加文章最下方QQ。
本文资源:https://download.csdn.net/download/weixin_47040861/88945920
1.题目要求
题目描述:
实现对教材库的信息管理。每条教材记录至少包括如下信息:编号、名称、价格、数量、使用专业、作者、出版社、出版日期等。
功能要求:
(1)输入功能:可以一次完成若干条记录的输入。
(2)显示功能:完成全部记录的显示。
(3)插入功能:插入添加一条或多条记录。
(4)查找功能:按多种方式查找并显示。(至少 实现2种,比如按照出版社或者作者等)
(5)删除功能:按教材编号进行删除。
(6)修改功能:按教材编号进行修改。
扩展功能:
(1)增加统计功能。比如按照出版社统计教材的平均价格等。
(2)教材记录信息从文件读入。
(3)将教材记录信息保存到文件中。
2.视频演示
【C语言期末/课程设计】教材管理系统(VC++2010项目)
3.项目介绍
结构体和变量:
#define MAX_TUTORIALS 20
//定义数组最大长度
// 定义结构体用于存储数据
struct Tutorial {
int id;//编号
char name[50];//名称
float price;//价格
int quantity;//数量
char major[50];//使用专业
char author[50];//作者
char publisher[50];//出版社
char publishDate[20];//出版日期
};
主函数:
首先创建结构体数组和变量用于存储数据,然后调用create()函数用于检查数据存储文件是否存在,若不存在则创建,然后调用get()函数从文件中读取数据,接下来调用display()函数打印菜单,在接收到用户输入的选项后调用对应的功能函数,每次执行完一项操作后调用put()函数将数据保存到本地文件中:
int main() {
// 创建长度为20的结构体数组
struct Tutorial Tutorials[MAX_TUTORIALS];
//定义len存储数组长度,定义choice存储选择
int len=0,choice=0;
create();//调用函数,检查文件是否存在
get(Tutorials,&len);//读取本地数据
while(choice!=8){
// 打印菜单
display();
// 获取用户选择
printf("请选择操作(1-8): ");
scanf("%d", &choice);
// 根据用户选择执行相应操作
switch (choice) {
case 1:adds(Tutorials,&len);break;
case 2:show(Tutorials,len);break;
case 3:insert(Tutorials,&len);break;
case 4:find(Tutorials,len);break;
case 5:del(Tutorials,&len);break;
case 6:update(Tutorials,&len);break;
case 7:statistics(Tutorials,len);break;
case 8:printf("退出程序\n");break;
default:
printf("无效的选择,请重新选择\n");
}
system("pause");//暂停窗口
system("cls");//清空窗口
//执行完成一次操作后保存新数据
put(Tutorials,len);
};
return 0;
}
1.输入 adds()
-
isValidID
函数: 该函数用于检查教程编号是否唯一。它接受教程数组tutorials
、数组长度len
和待检查的教程编号id
作为参数。函数遍历数组,如果输入的编号已经存在于数组中,或者编号小于1(格式错误),则输出错误信息并返回 1;否则,返回 0。 -
isValidDate
函数: 该函数用于检查日期格式是否合法。它接受日期字符串date
作为参数,尝试使用sscanf
函数解析年、月和日。如果成功解析三个值,表示日期格式合法,返回 0;否则,输出错误信息并返回 1。 -
add
函数: 该函数用于向教程数组中添加数据。它接受教程数组tutorials
和插入位置position
作为参数。首先,它调用isValidID
函数确保新的教程编号是唯一的。然后,通过用户输入获取教程的其他信息,包括名称、价格、数量、专业、作者、出版社和出版日期。在成功添加数据后,输出成功消息。 -
adds
函数: 该函数用于批量添加教程。它接受教程数组tutorials
和指向数组长度的指针len
作为参数。首先,它获取用户输入的要添加的教程数量num
。然后,使用add
函数进行循环添加,每次添加后将数组长度增加。
2.显示 show()
- 使用
printf
函数打印表格的表头,包括各列的标题。 - 使用
for
循环遍历教程数组,并使用printf
函数在每行打印教程的详细信息。 - 教程的详细信息包括编号、名称、价格、数量、使用专业、作者、出版社和出版日期。
- 表格的格式通过使用不同的格式控制符和字符来实现,以确保对齐和易读性。
- 最后,打印表格的底部,形成完整的表格。
3.插入 insert()
- 用户首先输入要插入位置的前一条记录的编号。
- 函数遍历教程数组,找到指定编号对应的位置。
- 如果找到了指定编号的位置,用户接着输入要插入的数据条数(数量)。
- 函数使用一个循环调用
add
函数,将新数据依次添加到数组末尾,并保存到缓存区中。 - 接下来,使用循环将原数组中的数据向后移动,腾出插入位置。
- 最后,再次使用循环将缓存区中的数据插入到指定位置后。
4.查找 find()
- 用户首先选择查询方式,可以选择按照编号、名称、使用专业、作者或出版社进行查询。
- 根据用户的选择,接着用户输入相应的查询条件(例如,要查找的编号、名称等)。
- 函数遍历教程数组,根据用户输入的条件提取符合条件的教程信息,并将这些信息存储在一个名为
find_list
的结构体数组中。 - 最后,调用
show
函数显示查询结果。
5.删除 del()
- 用户输入要删除的教材编号。
- 函数遍历教材数组,查找是否存在与用户输入的编号匹配的教材。
- 如果找到匹配的教材,将该教材从数组中删除。删除操作涉及数组元素的移动,将删除位置后面的元素向前移动。
- 更新数组长度以反映删除操作。
6.修改 update()
- 用户输入要修改的教材编号。
- 函数遍历教材数组,查找是否存在与用户输入的编号匹配的教材。
- 如果找到匹配的教材,将
found
设置为 1,表示找到了要修改的教材。 - 用户选择要修改的具体内容,根据用户输入的操作编号执行相应的修改操作。
- 提供相应的反馈信息,指示修改是否成功。
7.统计 statistics()
- 声明并初始化用于存储出版社名称和平均价格的数组,以及用于统计出版社数组的长度的变量。
- 遍历教材数组,获取每个教材的出版社名称。
- 判断出版社名称是否已存在于出版社数组中,若不存在,则将其添加到数组中。
- 统计每个出版社的平均价格,累加对应出版社的教材价格,并统计教材数量。
- 计算每个出版社的平均价格,并将结果保存在
average_price
数组中。 - 打印表头和统计结果。
- 如果平均价格大于 0,则打印对应的出版社名称和平均价格。
- 提供相应的反馈信息。
↓如有任何问题,请加下方QQ↓