【C语言期末/课程设计】教材管理系统(VC++2010项目)

代写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()

  1. isValidID 函数: 该函数用于检查教程编号是否唯一。它接受教程数组 tutorials、数组长度 len 和待检查的教程编号 id 作为参数。函数遍历数组,如果输入的编号已经存在于数组中,或者编号小于1(格式错误),则输出错误信息并返回 1;否则,返回 0。

  2. isValidDate 函数: 该函数用于检查日期格式是否合法。它接受日期字符串 date 作为参数,尝试使用 sscanf 函数解析年、月和日。如果成功解析三个值,表示日期格式合法,返回 0;否则,输出错误信息并返回 1。

  3. add 函数: 该函数用于向教程数组中添加数据。它接受教程数组 tutorials 和插入位置 position 作为参数。首先,它调用 isValidID 函数确保新的教程编号是唯一的。然后,通过用户输入获取教程的其他信息,包括名称、价格、数量、专业、作者、出版社和出版日期。在成功添加数据后,输出成功消息。

  4. adds 函数: 该函数用于批量添加教程。它接受教程数组 tutorials 和指向数组长度的指针 len 作为参数。首先,它获取用户输入的要添加的教程数量 num。然后,使用 add 函数进行循环添加,每次添加后将数组长度增加。

2.显示 show()

  • 使用 printf 函数打印表格的表头,包括各列的标题。
  • 使用 for 循环遍历教程数组,并使用 printf 函数在每行打印教程的详细信息。
  • 教程的详细信息包括编号、名称、价格、数量、使用专业、作者、出版社和出版日期。
  • 表格的格式通过使用不同的格式控制符和字符来实现,以确保对齐和易读性。
  • 最后,打印表格的底部,形成完整的表格。

3.插入 insert()

  • 用户首先输入要插入位置的前一条记录的编号。
  • 函数遍历教程数组,找到指定编号对应的位置。
  • 如果找到了指定编号的位置,用户接着输入要插入的数据条数(数量)。
  • 函数使用一个循环调用 add 函数,将新数据依次添加到数组末尾,并保存到缓存区中。
  • 接下来,使用循环将原数组中的数据向后移动,腾出插入位置。
  • 最后,再次使用循环将缓存区中的数据插入到指定位置后。

4.查找 find()

  • 用户首先选择查询方式,可以选择按照编号、名称、使用专业、作者或出版社进行查询。
  • 根据用户的选择,接着用户输入相应的查询条件(例如,要查找的编号、名称等)。
  • 函数遍历教程数组,根据用户输入的条件提取符合条件的教程信息,并将这些信息存储在一个名为 find_list 的结构体数组中。
  • 最后,调用 show 函数显示查询结果。

5.删除 del()

  • 用户输入要删除的教材编号。
  • 函数遍历教材数组,查找是否存在与用户输入的编号匹配的教材。
  • 如果找到匹配的教材,将该教材从数组中删除。删除操作涉及数组元素的移动,将删除位置后面的元素向前移动。
  • 更新数组长度以反映删除操作。

6.修改 update()

  1. 用户输入要修改的教材编号。
  2. 函数遍历教材数组,查找是否存在与用户输入的编号匹配的教材。
  3. 如果找到匹配的教材,将 found 设置为 1,表示找到了要修改的教材。
  4. 用户选择要修改的具体内容,根据用户输入的操作编号执行相应的修改操作。
  5. 提供相应的反馈信息,指示修改是否成功。

7.统计 statistics()

  1. 声明并初始化用于存储出版社名称和平均价格的数组,以及用于统计出版社数组的长度的变量。
  2. 遍历教材数组,获取每个教材的出版社名称。
  3. 判断出版社名称是否已存在于出版社数组中,若不存在,则将其添加到数组中。
  4. 统计每个出版社的平均价格,累加对应出版社的教材价格,并统计教材数量。
  5. 计算每个出版社的平均价格,并将结果保存在 average_price 数组中。
  6. 打印表头和统计结果。
    • 如果平均价格大于 0,则打印对应的出版社名称和平均价格。
  7. 提供相应的反馈信息。

↓如有任何问题,请加下方QQ↓

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a辰龙a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值