/*声明函数*/ int menu_select(); /*主菜单函数*/ void Insert(Pointer * Head); /*录入函数*/ void Scan(Pointer Head); /*显示函数*/ void Search_name(Pointer Head); /*按书名查找函数*/ void Search_author(Pointer Head); /*按作者名查找函数*/ void Listbyname(Pointer *Head); /*按书名排序函数*/ void Delete(Pointer * Head); //删除函数 void Update(Pointer Head); //修改函数 void Save(); //用文本文件形式保存函数 void Read(); //读入文本文件函数 void Exit(); //退出函数 int main() { //主函数 system("cls"); /*运行前清屏*/ for(;;) { switch(menu_select()) { case 1:Insert(& Head); break; case 2:Scan(Head); break; case 3:Search_name(Head); break; case 4:Search_author(Head); break; case 5:Listbyname(&Head); break; case 6:Delete(&Head); break; case 7:Update(Head); break; case 8:Save(); break; case 9:Read(); break; case 0:Exit(); default: putchar('\a'); } } return 0; }
时间: 2024-02-23 14:55:59 浏览: 40
这是一个图书管理系统的主函数,其中包括了主菜单函数、录入函数、显示函数、按书名查找函数、按作者名查找函数、按书名排序函数、删除函数、修改函数、用文本文件形式保存函数、读入文本文件函数和退出函数。主函数通过不断调用menu_select()函数,根据用户输入的选项来执行对应的操作。整个程序的功能是将图书信息存储在链表中,实现对图书的增删改查和排序等操作。
相关问题
virtual void userprocAPDU(iec_apdu * /* papdu */, int /* sz */){};
`virtual void userprocAPDU(iec_apdu *papdu, sz)` 是一个虚函数,用于处理用户的APDU请求。它接受一个 `iec_apdu` 类型的指针 `papdu` 和一个整数 `sz`,表示APDU的大小。
在这个函数中,你可以根据具体的业务逻辑来处理APDU请求。由于这是一个虚函数,所以可以在派生类中进行重写,以实现不同的处理逻辑。
#include <stdio.h> #include <stdlib.h> /*其它说明*/ #include <string.h> /*字符串函数*/ #include <time.h> #define LEN sizeof(STUDENT) typedef struct stu /*定义结构体数组用于缓存数据*/ { char num[6]; //学号 char name[5]; //姓名 int score[3]; //三科成绩 int sum; //总成绩 float average; //平均成绩 int order; //排序 int order1; //排名 struct stu *next; } STUDENT; STUDENT *Init();/*初始化函数*/ int Menu_Select();/*菜单选择函数*/ STUDENT *Create(); /*输入函数*/ void Print(STUDENT *head); /* 显示全部记录函数*/ void Search(STUDENT *head);/*查找记录函数*/ STUDENT *Modify(STUDENT *head);/*修改记录函数*/ STUDENT *Delete(STUDENT *head);/*删除记录函数*/ STUDENT *Sort(STUDENT *head);/*排序函数*/ STUDENT *Insert(STUDENT *head, STUDENT *New); /*插入记录函数*//*TODO: 排序排名 功能描述: 按照降序给链表排序,排序存在order,排名存在order1 参数说明:head-STUDENT型指针 返回值说明:STUDENT型指针 */ STUDENT *Sort(STUDENT *head) { return (head); }补全函数
这个函数似乎没有实现排序排名的功能,我来帮你补充一下:
```
STUDENT *Sort(STUDENT *head)
{
STUDENT *p, *q, *tail;
int len = 0, i, j;
// 获取链表长度
for (p = head; p != NULL; p = p->next) {
len++;
}
// 外层循环控制比较轮数
for (i = 0; i < len - 1; i++) {
tail = head;
p = head->next;
q = p;
// 内层循环进行两两比较
for (j = 0; j < len - i - 1; j++) {
if (p->sum > q->sum) {
// 交换节点数据
if (p == head->next) {
head->next = q;
p->next = q->next;
q->next = p;
tail = q;
q = p->next;
} else {
tail->next = q;
p->next = q->next;
q->next = p;
tail = q;
q = p->next;
}
} else {
tail = p;
p = q;
q = p->next;
}
}
}
// 排名
p = head;
for (i = 1; i <= len; i++) {
p->order = i;
p = p->next;
}
// 排序完成,返回头节点
return head;
}
```
这个函数的实现思路是使用冒泡排序对链表进行排序,同时进行排名。排序的依据是每个节点的 `sum` 字段,也就是总成绩。排完序之后,遍历链表,给每个节点的 `order1` 字段赋上相应的排名即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)