首页交通

数据结构课程设计是什么(地铁线路查询数据结构课程设计)

2025-12-05 03:02:01OmdQ0268997

数据结构课程设计—最短路径

#include <stdio.h>

#define INFINITY 10000
#define TRUE 1
#define FALSE 0
#define VERTEX_NUM 6

typedef struct Graph
{
char vexs[VERTEX_NUM]; /*顶点*/
int arcs[VERTEX_NUM][VERTEX_NUM]; /*邻接矩阵*/
int vexnum; /*顶点数版*/
int arcnum; /*弧数权*/
}Graph;

数据结构课程设计

#include "stdio.h"
#include "time.h"
#define MAXNUM 5 //停车场车位数
#define PRICE 2.0 //每小时收费
typedef struct car //定义车的结构体
{
char num[10]; //车牌号(最多10个字节)
struct tm intime; //进入时间
struct tm outtime; //离开时间
int expense; //费用
int length; //停车时长
int position; //停车位
}CAR;
typedef struct //栈结构
{
CAR car[MAXNUM]; //车辆信息
int top; //栈顶指针
} SeqStack;
void StackInit(SeqStack * s) //初始化栈
{
s->top = -1;
}
int StackIsEmpty(SeqStack * s) //判断栈是否为空
{
if (s->top == -1)
return 1;
else
return 0;
}
int StackIsFull(SeqStack *s) //判断栈是否为满
{
if (s->top == MAXNUM - 1)
return 1;
else
return 0;
}
void StackPush(SeqStack *s, CAR car) // 进栈
{
if (!StackIsFull(s)) //若栈未满
{
s->top++; //修改栈顶指针
s->car[s->top] = car; //将车辆信息入栈
}
}
CAR StackPop(SeqStack *s) //出栈
{
CAR car;
if (s->top != -1) //栈不为空
{
car = s->car[s->top];
s->top--;
return car;
}
}
CAR StackGetTop(SeqStack * s) //取栈顶元素
{
CAR car;
if (s->top != -1)
{
car = s->car[s->top];
return car;
}

}
//队列链表
typedef struct carnode //定义链队列的节点
{
CAR data;
struct carnode *next;
}CarNodeType;
typedef struct //链队列
{
CarNodeType *head; //头指针
CarNodeType *rear; //尾指针
}CarChainQueue;
void ChainQueueInit(CarChainQueue * q) //初始化链队列接点性质
{
if(!(q->head = (CarNodeType *) malloc(sizeof(CarNodeType))))
{
printf("内存分配失败!\n");
exit(0);
}
q->rear = q->head; //头尾指针相同
q->head->next = NULL; //头尾指针后下一个节点为空
q->rear->next = NULL;
}
void ChainQueueIn(CarChainQueue * q, CAR car) //入队列
{
CarNodeType *p;
if(!(p = (CarNodeType *) malloc(sizeof(CarNodeType))))
{
printf("内存分配失败!\n");
exit(0);
}
p->data = car;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
CAR ChainQueueOut(CarChainQueue * q) //出队列
{
CarNodeType *p;
CAR car;
if (q->head != q->rear)
{
p = q->head->next;
if (p->next == NULL)
{
car = p->data;
q->rear = q->head;
free(p);
} else
{
q->head->next = p->next;
car = p->data;
free(p);
}
return car;
}

}
int ChainQueueIsEmpty(CarChainQueue * q) //判断链队列是否为空
{
if (q->rear == q->head) //若队首等于列尾
return 1; //返回空
else
return 0; //返回非空

}
void separator(int n,char ch,char newline) //输出多个字符
{
int i;
for(i=0;i<n;i++)
printf("%c",ch);
if(newline==1)
printf("\n");
}
void PrintDate(struct tm gm_date)
{
printf("%d/%d %02d:%02d:%02d\n", gm_date.tm_mon,gm_date.tm_mday,gm_date.tm_hour+8, gm_date.tm_min, gm_date.tm_sec);
}
void ShowPark(SeqStack *s) //查看车位状态
{
int i;
struct tm gm_date;
printf("\n车位使用情况\n");
separator(40,'_',1);
if (StackIsEmpty(s)) //若栈是空
printf("停车场内已没有车辆!\n");
else
{
printf("位置\t车牌号\t进站时间\n");
for (i = 0; i <= s->top; i++)
{
printf("%d\t", s->car[i].position);
printf("%s\t", s->car[i].num);
PrintDate(s->car[i].intime); //输出日期
}
printf("\t\t\t共%d辆", s->top + 1);
if (s->top == MAXNUM - 1)
printf("(已满)\n");
else
printf("(还可停放放%d辆)\n", MAXNUM - 1 - s->top);
printf("\n");
}
separator(40,'_',1);
}
void ShowAisle(CarChainQueue * q)//显示过道上车辆的情况
{
if (!ChainQueueIsEmpty(q)) //若队列不为空
{
CarNodeType *p;
p = q->head->next; //队列中的第1辆车
printf("\n\n过道使用情况\n");
separator(30,'_',1);
printf("车牌\t进入时间\n");
while (p!= NULL) //队列不为空
{
printf("%s\t", p->data.num);
PrintDate(p->data.intime);; //显示该辆车的信息
p = p->next; //下一辆
}
} else
printf("\n过道上没有车在等待\n");
separator(30,'_',1);
printf("\n\n");
}
void ShowAll(SeqStack *s, CarChainQueue *q) //查看车位和过道使用情况
{
ShowPark(s); //显示车位使用情况
ShowAisle(q); //显示过道使用情况
}
void InPark(SeqStack * s, CarChainQueue * q) //车辆进入停车场
{
CAR car;
struct tm *gm_date;
time_t seconds;
time(&seconds);
gm_date = gmtime(&seconds);;

printf("\n车牌号:");
scanf("%s",&car.num);
car.intime=*gm_date; //进入停车场的时间

if (!StackIsFull(s) && ChainQueueIsEmpty(q)) //如果车位未占完,且过道上没有车
{
car.position = (s->top) + 2; //车位号
StackPush(s, car); //车辆直接进入车位
ShowPark(s); //输出现在停车场的情况
}
else if (StackIsFull(s) || !ChainQueueIsEmpty(q)) //如果车位已满,过道上还有车,则必须放在过道上
{
printf("提示:车位满,只有先停放在过道中。\n");
car.position = MAXNUM;
ChainQueueIn(q, car); //停放在过道

ShowPark(s); //显示车位的情况
ShowAisle(q); //输出过道上的情况
}
}
void PrintRate(CAR *car) //离开时输出费用等情况
{
printf("\n\n 账单\n" );
separator(30,'_',1);
printf("车牌:%s\n", car->num);
printf("停车位置:%d\n", car->position);
printf("进入时间:");
PrintDate(car->intime);
printf("离开时间:");
PrintDate(car->outtime);
printf("停车时间(秒):%d\n", car->length);
printf("费用(元):%d\n", car->expense);
separator(30,'_',1);
printf("\n\n");
}
void OutPark(SeqStack *s, CarChainQueue *q) //车出站出当时过道上的情况放在过道上直接进入车站
{
struct tm *gm_date;
time_t seconds;

SeqStack p; //申请临时放车的地方
StackInit(&p);
char nowtime[10];
int i, pos;
CAR car;

if (StackIsEmpty(s)) //如果车位中没有车辆停放
{
printf("所有车位都为空,没有车辆需要离开!\n");
}
else
{
printf("现在车位使用情况是:\n");
ShowPark(s); //输出车位使用情况
printf("哪个车位的车辆要离开:");
scanf("%d", &pos);
if (pos > 0 && pos <= s->top + 1) //输入车位号正确
{
for (i = s->top + 1; i > pos; i--) //在将pos车位之后停的车放入临时栈,以使pos车位的车出来
{
car = StackPop(s); //出栈
car.position = car.position - 1;//修改车位号
StackPush(&p, car); //将车辆放入临时栈
}
car = StackPop(s); //将位于pos车位的车辆出栈
time(&seconds);
gm_date = gmtime(&seconds); //获取当前时间
car.outtime=*gm_date;//离开时间
car.length=mktime(&car.outtime)-mktime(&car.intime); //停车场中停放时间
car.expense=(car.length/3600+1)*PRICE; //费用
PrintRate(&car); //输出车出站时的情况---进入时间,出站时间,原来位置,花的费用等
while (!StackIsEmpty(&p)) //将临时栈中的车重新进入车位
{
car = StackPop(&p); //从临时栈中取出一辆车
StackPush(s, car); //将车进入车位
}
while(!StackIsFull(s) && !ChainQueueIsEmpty(q)) //如果车位未满, 且过道上还有车
{
car = ChainQueueOut(q); //将最先停在过道中的车辆进入车位
time(&seconds);
gm_date = gmtime(&seconds); //获取当前时间
car.intime = *gm_date;//保存进入车位的时间
StackPush(s, car); //将车辆进入车位
}
}
else //车位号输入错误
{
printf("车位号输入错误,或该车位没有车辆!\n");
}
}
}
int main()
{
SeqStack Park; //停车场栈
CarChainQueue Aisle; //过道链表
StackInit(&Park);
ChainQueueInit(&Aisle);
char choice;
do{
printf("\n\n");
separator(10,' ',0);
printf("停车场管理\n");
separator(30,'_',1);
printf("1.车辆进入\n");
printf("2.车辆离开\n");
printf("3.查看停车场情况\n");
printf("0.退出系统\n");
separator(56,'_',1);
printf("提示:本停车场有%d个车位,车位停满后的车辆将停放在过道上。\n",MAXNUM);
printf("本停车场时计费,收费标准:%.2f元/小时,过道上不收费。\n\n",PRICE);
printf("\n选择操作(0~3):");
fflush(stdin);
choice=getchar();
switch (choice)
{
case '1': //车辆进入
InPark(&Park,&Aisle);
break;
case '2': //车辆离开
OutPark(&Park,&Aisle);
break;
case '3':
ShowAll(&Park,&Aisle);
break;
}
}while(choice!='0');
return 0;
}

数据结构课程设计是什么

.需求分析
1.运行环境
硬件:计算机486/64M以上
操作系统: WIN9x 以上/WIN2000/WIN XP/WIN ME
相关软件:vistualC++
2.程序所实现的功能:
(1)建立并显示图的邻接表。
(2)深度优先遍历,显示遍历结果。
(3)对该图进行拓扑排序,显示排序结果。
(4)给出某一确定顶点到所有其它顶点的最短路径。
3.程序的输入,包含输入的数据格式和说明
(1)输入顶点数,及各顶点信息(数据格式为整形)
(2)输入边数,及权值(数据格式为整形)
4.程序的输出,程序输出的形式
(1)输出图的邻接表、深度优先遍历结果、拓扑排序结果。
(2)输入某一确定顶点到其它所有顶点的最短路径。
5.测试数据
二、设计说明
1、 算法设计的思想
建立图类,建立相关成员函数。最后在主函数中实现。具体成员函数的实现请参看源程序。
2、 主要的数据结构设计说明
图邻接矩阵、邻接表的建立。图的深度优先遍历、拓扑排序、顶点之间的最短路径。
3、 程序的主要模板template <class Type> class Graph
4、 程序的主要函数
Graph、link()、DFTraverse()、TopologicalOrder()、
TopologicalOrder()、GetVertexPos()、ShortestPath
三、上机结果及体会
1、 实际完成的情况说明
主要程序参考教材《数据结构——C++版》。
2、 程序的性能分析
可连续建图
3、 上机过程中出现的问题及其解决方案。
编译没有错误,但结果有问题。解决方案:虽然程序的编译通过,只能说明语法上没有问题,结果只所以不正确是因为算法上原因。
4、 程序中可以改进的地方说明
程序中的深度优先遍历,浪费空间较大,可以考虑用循环来做。但这样将付出代码长度度加长的代价。
5、 程序中可以扩充的功能及设计实现假想
实现假想:随用户的输入可以随时动态的显示图的生成。
6、 收获及体会
编写程序即是一件艰苦的工作,又是一件愉快的事情。最大的收获:编程时如果遇到看似简单但又无法解决的问题,很容易灰心丧气。此时切不可烦躁,一定要冷静的思考,认真的分析。要勇敢的面对问题,勇敢的接受问题,勇敢的处理问题,最后最勇敢的解决问题。
四、参考文献
数据结构(C++版) 叶核亚 主编 机械工业出版社
数据结构经典算法实现与习题解答 汪杰 编著 人民邮电出版社
数据结构课程设计 苏仕华 编著 机械工业出版社
数据结构程序设计题典 李春葆 编著 清华大学出版社
数据结构课程与题解(用C/C++描述) 胡圣荣 编著 北京大学出版社

[程序运行流程图]

char op //程序控制变量

数据结构课程设计

我这有个停车场管理系统跟你的轮船渡口管理系统差不多!!改一下就能用!!
#include<iostream.h>
#include<string.h>
#include<stdlib.h> //free()函数功能
const int Max_Park=1;
int bian=0;//便道上有多少车
//.................................................................
struct Car
{
char pattent;//车辆类型,a=小轿车,b=客车,c=大卡车
int number;//车辆牌照
int intime;//车进入的时间,用整数表示
};
typedef struct Queue
{
Car car;
Queue*next;
}Queue,*LQueue;//模拟停车场外的便道

typedef struct Stack
{

Car *car;
int top;
}Stack,*LStack;//模拟停车场的栈
//..................................................................
class Road
{
public:
Queue q1;
LQueue q2;
public:
void InitQ(LQueue&Head,LQueue&Rear);//队列的初始化
void InQ(LQueue&Rear,Car pacr);//入队列
void FindQ(LQueue Head,int num);//在便道上查找车辆信息
void OutQ(LQueue Head,int num);//出便道
};//便道类结束
//...................................便道类函数定义

void Road::InitQ(LQueue&Head,LQueue&Rear)
{
Rear->next=NULL;
Head=Rear;
}//队列的初始化
void Road::InQ(LQueue&Rear,Car pacr)
{
LQueue Node=new Queue;
Node->car=pacr;
Node->next=NULL;
Rear->next=Node;
Rear=Rear->next;
bian++;
}//入队列
void Road:: FindQ(LQueue Head,int num)
{
int pos=0;
for(LQueue q=Head;q->next!=NULL;q=q->next,pos++)
{
if(q->next->car.number==num)
{
cout<<"要查找的车在便道"<<pos+1<<"位"<<" 车类型为";
switch(q->next->car.pattent)
{
case'a':cout<<"小轿车";break;
case'b':cout<<"客车";break;
case'c':cout<<"大卡车";break;
}
cout<<"此车进入的时间为"<<q->next->car.intime<<endl;
}
}
cout<<"此车不在停车场!!"<<endl;
}//在便道上查找车辆信息
void Road:: OutQ(LQueue Head,int num)
{
LQueue p=new Queue;
for(LQueue q=Head;q->next!=NULL;q=q->next)
{
if(q->next->car.number==num)
{
p=q->next;
q->next=p->next;
free(p);
bian--;
break;
}
}
}

//........................................................
class Park
{
public:
Stack s1;
Stack s2;
Road R7;

public:
void OutputS(Car e);
void InputS(Car&e);
void InitS(LStack ss1);
Car PopS(LStack ss1);
int PushS(LStack ss1,Car car);
int FindS(LStack ss1,int number);
void InPark(LStack ss1,LQueue &Rear);
void Delete(LStack ss1,LStack ss2,int n);
void OutPark(LStack ss1,LStack ss2,LQueue Head);
void Search(LStack ss1,LQueue Head,LQueue Rear);
};//车位类结束
//......................................车位类函数的定义

void Park::OutputS(Car e)
{
cout<<"这辆车的牌照是:"<<e.number<<endl<<"这辆车的类型是:";
switch(e.pattent)
{
case'a':cout<<"小轿车";break;
case'b':cout<<"客车";break;
case'c':cout<<"大卡车";break;
}
cout<<"进入时间为:"<<e.intime<<endl;
}//查询停车场的车
void Park:: InputS(Car&e)
{
cout<<"请输入此车的类型a=小轿车,b=客车,c=大客车"<<endl;
cin>>e.pattent;
cout<<"请输入此此车的牌照号:"<<endl;
cin>>e.number;
cout<<"请输入入场时间:"<<endl;
cin>>e.intime;
}//进入停车场的车
void Park::InitS(LStack ss)
{
ss->car=new Car[Max_Park];
ss->top=-1;

}//初始化栈
Car Park:: PopS(LStack ss)
{
Car eee=ss->car[ss->top];
ss->top--;
return eee;
}//出栈
int Park::PushS(LStack ss,Car car)
{
if(ss->top<Max_Park-1)
{
ss->top++;
ss->car[ss->top].intime=car.intime;
ss->car[ss->top].number=car.number;
ss->car[ss->top].pattent=car.pattent;
return 0;
}
else
return -1;
}//车位已满,则进入便道
int Park::FindS(LStack ss,int number)
{
for(int i=0;i<=ss->top;i++)
{
if(ss->car[i].number==number)
return i;
}
return -1;//在便道上查找要找的车
}//在车位上查找要找的车辆
void Park::InPark(LStack ss1,LQueue &Rear)
{

Car ee;
InputS(ee);
int n=PushS(ss1,ee);
if(n<0)
{
Car rcar;
rcar.number=ee.number;
rcar.pattent=ee.pattent;
rcar.intime=ee.intime;
R7.InQ(Rear ,rcar);
}
}//车辆进场,有车位如车位,无车位进便道
void Park::Delete(LStack ss1,LStack ss2,int n)
{
int size=ss1->top;
for(int i=0;i<size-n;i++)
PushS(ss2,PopS(ss1));
PopS(ss1);
for( i=0;i<size-n;i++)
PushS(ss1,PopS(ss2));
}//以一个栈为中转,将任意为的车出场
void Park::OutPark(LStack ss1,LStack ss2,LQueue Head)
{

cout<<"请输入要出场的车的车牌号:"<<endl;
int num;
cin>>num;
int nn;
nn=FindS(ss1,num);
if(nn>=0)
{
cout<<"这辆车在车位上"<<endl;
OutputS(ss1->car[nn]);
Delete(ss1,ss2,nn);
if(ss1->top<=Max_Park-1)
if(Head->next!=NULL)
{
cout<<"\n便道上的车要进车位!"<<endl;

LQueue p=new Queue;
p=Head->next;
Head->next=p->next;
PushS(ss1,p->car);
free(p);
bian--;
}
}
else
{
R7.FindQ( Head, num);
R7.OutQ( Head,num);
}
}//输出要出场的车
void Park::Search(LStack ss1,LQueue Head,LQueue Rear)
{
cout<<"停车场中现有"<<ss1->top+1<<"辆车"<<endl;
if(Head==Rear)
cout<<"便道上没有车!"<<endl;
else
cout<<"便道上停了"<<bian<<"辆车"<<endl;
}//输出停车场的车辆信息

//............................................................
void show()
{
cout<<"*********************本停车场信息**************************"<<endl;
cout<<"本停车场共有"<<Max_Park<<"个车位"<<endl;
cout<<"只允许停放小轿车,客车,大卡车"<<endl;
cout<<"车辆进入要做车辆类型,车牌,进入时间的记录"<<endl;
cout<<"***********************************************************"<<endl;
}
/*void choise()
{
if(Max_Park-(ss1->top+1)>0)
{
cout<<"停车场中"<<ss1->top+1<<"辆车"<<endl;
cout<<"还可以停放"<<Max_Park-(ss1->top+1)<<"辆车"<<endl;
}
else
cout<<"\n停车场已满,再来的车只能放在便道上!"<<endl;
cout<<"输入要进行的操作:"<<endl
<<"A=进场"<<endl
<<"D=出场"<<endl
<<"F=查询车辆信息"<<endl
<<"E=结束程序!"<<endl;
}*/

void main()
{
Road R6;
show();
LStack ss1=new Stack;//停车场的栈
LStack ss2=new Stack;//作为车辆中转的栈
LQueue Head=new Queue;//队列的头
LQueue Rear=new Queue;//队列的尾
R6.InitQ( Head, Rear);//队列初始化
Park park;
park.InitS(ss1);
park.InitS(ss2);
while(1)
{
if(Max_Park-(ss1->top+1)>0)
{
cout<<"停车场中"<<ss1->top+1<<"辆车"<<endl;
cout<<"还可以停放"<<Max_Park-(ss1->top+1)<<"辆车"<<endl;
}
else
cout<<"\n停车场已满,再来的车只能放在便道上!"<<endl;
cout<<"输入要进行的操作:"<<endl
<<"A=进场"<<endl
<<"D=出场"<<endl
<<"F=查询车辆信息"<<endl
<<"E=结束程序!"<<endl;

char demand;
cin>>demand;
switch(demand)
{
case 'A':
{
int w=1;
while(w)
{
park.InPark(ss1,Rear);
cout<<"车辆继续进场按1,要进行其他操作按0!"<<endl;
if(Max_Park-(ss1->top+1)>0)
{
cout<<"停车场中"<<ss1->top+1<<"辆车"<<endl;
cout<<"还可以停放"<<Max_Park-(ss1->top+1)<<"辆车"<<endl;
}
else
cout<<"\n停车场已满,再来的车只能放在便道上!"<<endl;
cout<<"输入要进行的操作:"<<endl
<<"A=进场"<<endl
<<"D=出场"<<endl
<<"F=查询车辆信息"<<endl
<<"E=结束程序!"<<endl;
cin>>w;
}
};break;
case 'D': park.OutPark(ss1,ss2, Head);break;
case'F':park.Search(ss1, Head, Rear) ; break;
case'E':exit(0);
}
}

}

数据结构课程设计 图的拓扑排序的实现 在线等啊

有一个非常简单的方法:
1、全选A列进行排序(升序或降序),排序提醒选择以当前选定区域排序。
2、全选B列进行上一步同样的操作。
就达到最终结果了。

数据结构课程设计 学生成绩查询系统

这个是我自己写的..我也在学习中,不足之处请谅解:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
void newinf(void);
void showinf(void);
void insertinf(void);
void deleteinf(void);
void saveinf(void);
void infoinf(void);
void sortinf(void);
void searchinf(void);
void menu(void);
struct inf{
int number;
char name[80];
int score;
inf * prev,* next;
};
inf * head,* tail;
int high,low,average;
int total=0;
void main(void)
{ system("cls");
system("color 1a");
system("title 成绩管理系统");
menu();
int choice;
scanf("%d",&choice);
system("cls");
switch(choice){
case 0:
exit(0);
break;
case 1:
newinf();
main();
break;
case 2:
searchinf();
main();
break;
case 3:
insertinf();
main();
break;
case 4:
deleteinf();
main();
break;
case 5:
sortinf();
main();
break;
case 6:
showinf();
main();
break;
case 7: //数据统计
printf("共有学生%d人\n",total);
system("pause");
main();
break;
case 8: //保存
saveinf();
main();
break;
}
}
void newinf(void)
{
inf * temp;
temp=(inf *)malloc(sizeof(inf));
printf("请输入学号\n");
scanf("%d",&temp->number);
printf("请输入姓名\n");
scanf("%s",&temp->name);
printf("请输入成绩\n");
scanf("%d",&temp->score);
temp->next=NULL;
if(head==NULL){
temp->prev=NULL;
head=temp;
tail=temp;
}
else{
tail->next=temp;
temp->prev=tail;
tail=temp;
}
total++;
}
void showinf(void)
{
inf * temp;
temp=head;
if(head==NULL){
printf("数据不存在\n");
system("pause");
main();
}
do{
printf("学号%d 姓名%s 成绩%d\n",temp->number,temp->name,temp->score);
temp=temp->next;
}
while(temp!=NULL);
system("pause");
}
void insertinf(void)
{
if(head==NULL){
printf("数据不存在\n无法插入,请选择 1.增加记录\n");
system("pause");
main();
}
int input,count=0;
inf * temp,*search,*temp2;
printf("请输入在第几条后插入\n");
scanf("%d",&input);
while(input>total||input<=0){
printf("输入错误请重新输入");
scanf("%d",&input);
};
temp=(inf *)malloc(sizeof(inf));
printf("请输入学号\n");
scanf("%d",&temp->number);
printf("请输入姓名\n");
scanf("%s",&temp->name);
printf("请输入成绩\n");
scanf("%d",&temp->score);
search=head;
while(search!=NULL){
count++;
if(input==count){
temp2=search->next;
search->next=temp;
temp->prev=search;
temp->next=temp2;
if(temp2!=NULL){
temp2->prev=temp;
}
}
search=search->next;
};
total++;
}
void deleteinf(void)
{
if(head==NULL){printf("数据不存在!\n");<br> system("pause"); <br> main();}
int input,count=0;
inf * temp,*temp2,*search;
printf("请输入删除第几条\n");
scanf("%d",&input);
while(input>total||input<=0){
printf("输入错误请重新输入");
scanf("%d",&input);};
search=head;
while(search!=NULL){count++;<br> if(input==count){if(count==1){head=search->next;}
temp=search->prev;
temp2=search->next;
if(temp!=NULL){
temp->next=temp2;}
if(temp2!=NULL){
temp2->prev=temp;}
free(search);}
search=search->next;};
total--;}
void searchinf(void)
{if(head==NULL){<br> printf("数据不存在!\n");<br> system("pause"); <br> main();}
inf * temp;
int choice,number,score;
char name[80];
temp=head;
printf("请选择查找方式:\n1.按学号查找\n2.按姓名查找\n3.按成绩查找\n");
scanf("%d",&choice);
printf("请输入对应信息\n");
switch(choice){case 1:<br> scanf("%d",&number);<br> while(temp!=NULL){if(temp->number==number){printf("学号%d 姓名%s 成绩%d\n",temp->number,temp->name,temp->score);}
temp=temp->next;};
break;
case 2:
getchar();
gets(name);
while(temp!=NULL){if(strcmp(temp->name,name)==0){printf("学号%d 姓名%s 成绩%d\n",temp->number,temp->name,temp->score);}
temp=temp->next;};
break;
case 3:
scanf("%d",&score);
while(temp!=NULL){
if(temp->score==score){printf("学号%d 姓名%s 成绩%d\n",temp->number,temp->name,temp->score);}
temp=temp->next;};
break;}
system("pause"); }
void sortinf(void)
{inf *temp,*temp2;<br> int number,score;<br> char name[80];<br> temp=head;<br> if(head==NULL){<br> printf("数据不存在\n");<br> system("pause"); <br> main();}
for(int i=1;i<=total*total;i++){
if(temp->next==NULL){temp=head;<br> continue;}
temp2=temp->next;
if(temp->number>temp2->number){
name=temp->name;
score=temp->score;
number=temp->number;
temp->name=temp2->name;
temp->score=temp2->score;
temp->number=temp2->number;
temp2->name=name;
temp2->score=score;
temp2->number=number;}
temp=temp->next;}
printf("排序完成\n");
system("pause"); }
void menu(void)
{
system("cls");
printf(" ********************************************************************\n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 成绩管理系统 *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * *\n");
printf(" ********************************************************************\n");
printf("1.增加记录\n2.查找记录\n3.插入记录\n4.删除记录\n5.记录排序\n6.查看记录\n7.数据统计\n8.保存记录\n0.退出\n");
}void saveinf(void)
{
printf("请注意,保存信息将覆盖原文件!\n确认请输入y:\n");
char a;
getchar();
scanf("%c",&a);
if(a=='y'||a=='Y')
{
FILE *file;
inf *temp;
file=fopen("save.txt","w+");
temp=head;
while(temp!=NULL)
{
fprintf(file,"学号:%d 姓名:%s 成绩:%d\n",temp->number,temp->name,temp->score);
temp=temp->next;
}
printf("保存成功!");
system("pause");
main();
}
else
{
main();
}
}

相关推荐

合肥地铁运营时间是哪会(合肥地铁2号运营时间末班)

合肥地铁运营时间是哪会(合肥地铁2号运营时间末班)

2025-12-02227
贵州省内第二大高铁站将建成规模多大呢何时建成呢(贵州高铁站)

贵州省内第二大高铁站将建成规模多大呢何时建成呢(贵州高铁站)

2025-12-081002
广州有没有地铁到佛山狮山广场是几号线地铁(广州到南海区狮山镇地铁)

广州有没有地铁到佛山狮山广场是几号线地铁(广州到南海区狮山镇地铁)

2025-12-04414
广州地铁1234号线的运营时间~(广州大学城地铁发车时间)

广州地铁1234号线的运营时间~(广州大学城地铁发车时间)

2025-12-03228
武汉微信扫地铁一通有折扣吗(武汉支付宝地铁优惠)

武汉微信扫地铁一通有折扣吗(武汉支付宝地铁优惠)

2025-12-05619
汉口火车站坐地铁几号线能到协和医院(武汉坐地铁到中山公园站协和医院)

汉口火车站坐地铁几号线能到协和医院(武汉坐地铁到中山公园站协和医院)

2025-12-06809
如何有效除霜并预防空调结霜?

如何有效除霜并预防空调结霜?

2025-11-27871
汽车打火瞬间嘭的一声是怎么回事

汽车打火瞬间嘭的一声是怎么回事

2025-01-141189
现代汽车可以改装一键启动功能吗

现代汽车可以改装一键启动功能吗

2025-02-16336