c语言数据结构课程设计题目(数据结构题集c语言版答案)

admin 449 0

其实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语言版答案问题对您有所帮助,还望关注下本站哦!