其实c语言数据结构课程设计题目的问题并不复杂,但是又很多的朋友都不太了解数据结构题集c语言版答案,因此呢,今天小编就来为大家分享c语言数据结构课程设计题目的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
一、要命的数据结构课程设计题目啊!!!
1、 int adjvex;//该弧所指向的顶点的位置
2、 struct ArcNode*nextarc;//指向下一个弧的指针
3、 ArcNode*firstarc;//指向第一个依附顶点的弧的指针
4、}VNode,AdjList[MAX_VERTEX_NUM];
5、 int vexnum,arcnum;//图的当前顶点数和弧数
6、int InitALGraph(ALGraph&G);//建造一个空图
7、int LocateVex(ALGraph G,VexType v);//找到图中节点v中的位置
8、int Build_AdjList(ALGraph&G);//输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表
9、int InitALGraph(ALGraph&G)//建造一个空的图
10、 for(int i=0;i<MAX_VERTEX_NUM;i++)
11、int LocateVex(ALGraph G,VexType v)//找到G中v定点在图中的位置
12、 for(int i=0;i<MAX_VERTEX_NUM;i++)
13、int Build_AdjList(ALGraph&G)//输入有向图的顶点数,边数,顶点信息和边的信息建立邻接表
14、 int v,a,m,i,j;//v表示有向图的定点数,a表示边数;
15、 char t,h,ch;//t代表弧头,h代表弧尾
16、 if(v<0) return ERROR;//顶点数不能为负
17、 if(a<0) return ERROR;//边数不能为负
18、 cout<<"输入各个定点:";
19、 G.vertices[m].data=ch;//输入各顶点的符号
20、 cout<<"输入各个边的弧头和弧尾:";
21、 cin>>t;cin>>h;//t为弧尾,h为弧头
22、 if((i=LocateVex(G,t))<0) return ERROR;
23、 if((j=LocateVex(G,h))<0) return ERROR;//顶点未找到
24、 p=(ArcNode*)malloc(sizeof(ArcNode));//创建新的节点,并将其赋值
25、 if(!G.vertices[i].firstarc)//创建链表
26、 for(q=G.vertices[i].firstarc;q->nextarc;q=q->nextarc);
27、bool Visited[MAX_VERTEX_NUM];//访问标志数组
28、int FirstAdjVex(ALGraph G,int v)//返回第一个邻接顶点
29、 return G.vertices[v].firstarc->adjvex;
30、int NextAdjVex(ALGraph G,int v,int w)//返回W后的邻接顶点
31、 for(q=G.vertices[v].firstarc;q->nextarc;q=q->nextarc)
32、 return q->nextarc->adjvex;
33、void DFS(ALGraph G,int v)//DFS算法,深度优先搜索
34、 cout<<G.vertices[v].data;
35、 for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
36、void DFSTraverse(ALGraph G)//深度优先搜索图G
37、 int*base;//初始化动态分配存储空间
38、 int front;//头指针,若队列不空,只想队列头元素
39、 int rear;//尾指针,若队列不空,只想队列尾元素的下一个位置
40、 Q.base=(int*)malloc(MAXQSIZE*sizeof(int));
41、//返回Q的元素个数。即队列的长度
42、 return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
43、 if((Q.rear+1)%MAXQSIZE==Q.front)
44、//若队列不空,则删除Q的对头元素。用e返回其值。
45、 if(Q.front==Q.rear)return ERROR;
46、 Q.front=(Q.front+1)%MAXQSIZE;
47、 cout<<G.vertices[v].data;
48、 for(w=FirstAdjVex(G,u);w>=0;w=NextAdjVex(G,u,w))
49、 cout<<G.vertices[w].data;
50、 cout<<"深度优先遍历:"<<endl;
51、 cout<<"广度优先遍历:"<<endl;
二、C语言课程设计题目
详见视频,要求数据结构用链表,数据存储使用文件。
计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)
(1)输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。
(2)插入(修改)教师授课教学信息:
(1)计算单个教学任务总课时。计算原则如下表:
(2)计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。
提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
该系统是一个进行选择题测试的考试系统,具有测试、练习功能,具有系统设置功能,具有查分和帮助功能。
1、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)
2、试题录入:可随时增加试题到试题库中
3、试题抽取:每次从试题库中可以随机抽出N道题及每题的得分K(N、K由键盘输入)。
5、用户可以选择“考试”和“练习”两种方式。
5、答题:用户可实现输入自己的答案,“考试”时系统不能显示答案。“练习”时每一题都可以通过查看“按钮”显示标准答案。可以用“上一题”、“下一题”翻页。选择“交卷”按钮则显示得分;
6、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
7、考试开始系统显示倒计时。时间为零自动交卷。
1、源程序要有适当的注释,使程序容易阅读
2、至少采用文本菜单界面(如果能采用图形菜单界面更好)
3、学生可自动增加新功能模块(视情况可另外加分)
4、写出课程设计报告,具体要求见相关说明文档
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
设计一个简单的英语字典,输入英语单词,显示中文含义,设计要求:
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等)。该学生通信录电话簿管理程序具有加入、删除、显示和查询等功能。
1、能建立、修改和增删学生通讯录
2、具有群组工能,可以增加群组和记录。
3、删除可以删除一条、一个群组、全部记录。
5、显示可以以页面和列表方式显示。
7、要求:界面友好,易于操作,采用文件存储数据。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
实现一个完整的小型音像店对录像带进行管理的系统。
(1)管理音像店中的所有录像带,包括新录像带入库、录像带出租、录像带的返还、所有录像带清单的显示、根据指定条件进行查找删除录像带等各种基本操作。
(2)客户数据维护,可以将客户分为不同等级,可以根据指定客户显示其所借录像带详细信息。
(3)租金管理,根据所借日期自动计算所需交纳的租金。
(4)系统要求界面美观,菜单设计合理,操作方便。
音像店有两个主要的组成部分:录像带和客户。可以构造3个链表存储以下数据:
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。设计一个航空订票系统实现上述功能。
(1)将每条航线的有关信息存入计算机,如:终点站名、航班号、飞机号、飞行周日(星期几)、时间、乘员定额、余票量、票价,已定票客户名单和等候替补客户名单(包括姓名,所需票数);
(2)查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞、最近一天航班的日期和余票量。
(3)订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;
(4)退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补客户。
发挥想像,增加新的功能,完善系统。
系统要求界面美观,菜单设计合理,操作方便。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
某旅馆有n个等级的房间,第I等级有个房间,每个等级的房间有个床位(1≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。
(1)旅客登记,即为旅客分配床位。输入旅客姓名、年龄、性别、到达日期和所需房间等级。分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。
(2)旅客离开时,即进行床位回收。输入房间等级、房间号和床位号。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
2、职工信息录入功能(职工信息用文件保存)--输入
5、职工信息删除、修改功能(可选项)
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
图书信息包括:书号、书名、作者名、分类号、出版社、出版时间、价格等。
2、图书信息录入功能(图书信息用文件保存)--输入
3、图书信息的编辑功能(插入、删除、修改)
4、图书信息浏览功能(按书号、书名、出版时间、价格等排序输出)。
5、图书信息查询功能(按书号、书名、作者名、出版社查询,提供模糊查询的功能)
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
1、能够完成对设备的录入和修改
要求:采用文件方式存储数据,系统以菜单方式工作
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
设计一个学生选修课程系统,假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
2、课程信息录入功能(课程信息用文件保存)--输入
3、课程信息的编辑功能(插入、删除、修改)
4、课程信息浏览功能(按课程编号、课程名称、总学时、学分等排序输出)。
5、课程信息查询功能(按课程编号、课程名称、课程性质、开课学期等查询,提供模糊查询的功能)
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。试设计一个便条管理系统。
2、便条信息录入功能(便条信息用文件保存)--输入
3、收集到了上个月的所有便条后,读取销售情况
1)计算每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项)
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。
(1)查看功能:选择此功能时,列出下列三类选择。
A.办公类 B.个人类 C.商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码)
一个结点包括:姓名、电话号码、分类(A办公类 B个人类 C商务类)、电子邮件)。
例如:杨春 13589664454商务类 chuny@126.com
当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。
能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。
选中某个人的姓名时,可对此人的相应数据进行修改
选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。
(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。
(2)教师实发工资、应发工资、合计扣款计算。
提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件
提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。
链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111
三、求c语言课程设计报告,300行左右题目不限急!
1、//***************************************************************************
2、#include<malloc.h>// malloc()等
3、#include<limits.h>// INT_MAX等
4、#include<stdio.h>// EOF(=^Z或F6),NULL
5、#include<stdlib.h>// atoi()
6、#include<math.h>// floor(),ceil(),abs()
7、#include<process.h>// exit()
8、#include<iostream.h>// cout,cin
9、//#define OVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行
10、 typedef int Status;// Status是函数的类型,其值是函数结果状态代码,如OK等
11、 typedef int Boolean;// Boolean是布尔类型,其值是TRUE或FALSE
12、//***************************************************************************
13、//***************************************************************************
14、//以下是运算符栈的基本操作函数
15、 S.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
16、Status DestroyStack(SqStack1&S){
17、//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
18、 if(S.top==S.base)return ERROR;
19、Status Push(SqStack1&S,char e){
20、 if(S.top-S.base>=S.stacksize){
21、 S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));
22、Status Pop(SqStack1&S,char&e){
23、//若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR
24、 if(S.top==S.base)return ERROR;
25、//***************************************************************************
26、//以下是运算数栈的基本操作函数
27、 S.base=(float*)malloc(STACK_INIT_SIZE*sizeof(float));
28、Status DestroyStack(SqStack2&S){
29、//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
30、 if(S.top==S.base)return ERROR;
31、Status Push(SqStack2&S,float e){
32、 if(S.top-S.base>=S.stacksize){
33、 S.base=(float*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(float));
34、Status Pop(SqStack2&S,float&e){
35、//若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR
36、 if(S.top==S.base)return ERROR;
37、//***************************************************************************
38、//比较运算符A, B的优先关系,A,B的范围仅限于'+','-','*','/','^','(',')','='
39、//返回'>','<','='
40、 case'+':return'>';
41、 case'-':return'>';
42、 case'*':return'<';
43、 case'/':return'<';
44、 case'^':return'<';
45、 case'(':return'<';
46、 case')':return'>';
47、 case'=':return'>';
48、 default:printf("表达式错误!\n");exit(0);
49、 case'+':return'>';
50、 case'-':return'>';
51、 case'*':return'<';
52、 case'/':return'<';
53、 case'^':return'<';
54、 case'(':return'<';
55、 case')':return'>';
56、 case'=':return'>';
57、 default:printf("表达式错误!\n");exit(0);
58、 case'+':return'>';
59、 case'-':return'>';
60、 case'*':return'>';
61、 case'/':return'>';
62、 case'^':return'<';
63、 case'(':return'<';
64、 case')':return'>';
65、 case'=':return'>';
66、 default:printf("表达式错误!\n");exit(0);
67、 case'+':return'>';
68、 case'-':return'>';
69、 case'*':return'>';
70、 case'/':return'>';
71、 case'^':return'<';
72、 case'(':return'<';
73、 case')':return'>';
74、 case'=':return'>';
75、 default:printf("表达式错误!\n");exit(0);
76、 case'+':return'>';
77、 case'-':return'>';
78、 case'*':return'>';
79、 case'/':return'>';
80、 case'^':return'>';
81、 case'(':return'<';
82、 case')':return'>';
83、 case'=':return'>';
84、 default:printf("表达式错误!\n");exit(0);
85、 case'+':return'<';
86、 case'-':return'<';
87、 case'*':return'<';
88、 case'/':return'<';
89、 case'^':return'<';
90、 case'(':return'<';
91、 case')':return'=';
92、 case'=':printf("表达式错误!\n");exit(0);
93、 default:printf("表达式错误!\n");exit(0);
94、 case'+':return'>';
95、 case'-':return'>';
96、 case'*':return'>';
97、 case'/':return'>';
98、 case'^':return'>';
99、 case'(':printf("表达式错误!\n");exit(0);
100、 case')':return'>';
101、 case'=':return'>';
102、 default:printf("表达式错误!\n");exit(0);
103、 case'+':return'<';
104、 case'-':return'<';
105、 case'*':return'<';
106、 case'/':return'<';
107、 case'^':return'<';
108、 case'(':return'<';
109、 case')':printf("表达式错误!\n");exit(0);
110、 case'=':return'=';
111、 default:printf("表达式错误!\n");exit(0);
112、 default:printf("表达式错误!\n");exit(0);
113、//判断c是否是运算符,是则返回TRUE,否则返回FALSE
114、//***************************************************************************
115、float Operate(float a,char theta,float b){
116、 printf("分母不能为0!\n");
117、 printf("0的指数必须大于0!\n");
118、 default:printf("表达式错误!\n");exit(0);
119、//c是每次读取的字符,x是存放脱括号后的多余的括号,theta是运算符,prec是c的前一个字符
120、 float a,b,result;//a、b是每次从运算数栈中取出的要进行运算的数,result存放最终结果
121、//cc存放由字符串转化而来的浮点数,flag用于标记是否已读取过小数点,
122、//ii存放小数部分需要缩小的倍数,minus用于记录该数前是否有负号
123、 InitStack(OPTR);InitStack(OPND);
124、 prec='=';scanf("%c",&c);
125、 while(c!='='||GetTop(OPTR)!='='){
126、 if(c=='-'&&(prec=='='||prec=='(')){minus=-1;prec=c;scanf("%c",&c);}
127、//若某“-”前面是“=”(第一个符号就是“-”)或“(”,则此为负号,不是减号
128、 if(flag==0)cc=cc*10+c-48;//小数点之前
129、 else if(flag==1){cc=cc+(c-48)/ii;ii*=10;}//小数点之后
130、 else{printf("小数点错误!\n");exit(0);}//小数点有错
131、 else if(c=='.')flag++;//读到小数点
132、 else{printf("表达式错误!\n");exit(0);}
133、 switch(Precede(GetTop(OPTR),c)){
134、 case'<':Push(OPTR,c);prec=c;scanf("%c",&c);break;//栈顶元素优先级低
135、 case'=':Pop(OPTR,x);prec=c;scanf("%c",&c);break;//脱括号并接收下一字符
136、 case'>'://退栈并将运算结果入栈
137、 Push(OPND,Operate(a,theta,b));
138、 printf("**********************\n");
139、 printf("*欢迎使用计算器!*\n");
140、 printf("**********************\n");
141、 printf("请输入表达式,以“=”结束:\n");
142、 printf("(支持实数间的加(+)、减(-)、乘(*)、除(/)、乘方(^)、单目减(-)运算)\n");
好了,文章到这里就结束啦,如果本次分享的c语言数据结构课程设计题目和数据结构题集c语言版答案问题对您有所帮助,还望关注下本站哦!