C语言与数据结构期末考核选题

更新时间:2024-03-25 14:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C语言程序设计》选题

考试要求:

1、要求利用C语言课程上学习的基础编程技巧来完成程序的设计;在设计的过程中,要建立清晰的函数并正确使用相应的数据类型;在系统设计中要分析函数与函数之间的关系,将查找和排序的算法独立出来形成为单独的代码。

2、如果有数据交互的地方,要求对用户输入的数据都进行有效性验证,以保证程序的正常运行。

3、要有完整的程序(能够运行,显示结果)与文档(内容要求有详细的功能实现说明,具体的函数设计和使用说明)。

考试目的:

1、加深对面向过程设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。通过课程设计,让学生能够熟练运用C语言进行面向编程,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握编程技术。

2、通过程序设计,掌握面向对象程序设计语言C语言,培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力指导等。

选题1:职工信息管理系统设计

职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:

1、职工信息录入功能(职工信息用文件保存)

第 1 页 共 20 页

2、职工信息浏览功能

3、查询或排序功能:(至少一种查询方式) A、按工资查询 B、按学历查询等

4、职工信息删除、修改功能

选题2:学员成绩管理系统

定义主类,要求能够完成下列功能,并在主函数中给出主菜单,供用户调用和实现:

1、输入:函数input把N学生的学号、姓名、性别、年龄、3科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、3科成绩由键盘输入,然后计算出平均成绩和总成绩放在结构体对应的域中。

2、插入:insert函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。

3、排序:sort函数对所有学生按要求排序(1.学号2.总成绩),并输出。

4、查找:find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。要求能查询多次。

5、删除:delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。

6、输出:函数output输出全部学生的记录。

选题3:黑白棋游戏

第 2 页 共 20 页

黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)。 黑白棋规则:

1)两人对奕,以轮流方式持黑子与白子。

2)开辟新局者持白子,加入者持黑子,之后以轮流方式将棋子置于棋盘格子中。若无地方可下子,则跳过一回,由对方下子。

3)在提示的格子中,选择一个格子下子,当下子的位置与离最近的同色旗子中,若有其他棋子则中间的棋子变为与我方一样颜色。

4)当下满64个棋子,棋子多者为胜。

选题4:图书馆管理系统

设计要求:该系统要求能够具有图书管理和会员管理的功能,并且能够具有增加图书、查询图书、删除图书、图书借阅——借书、还书的功能,还可以具有增加会员、查询会员、删除会员、查询借书信息等功能。

设计步骤:

(1)创建图书和会员两个数据结构。 (2)通过屏幕菜单方式选择具体操作方式。 (3)完成相应的操作,并能够显示操作的结果。

设计方法:可应用所学结构和链表的基本知识实现设计要求。

选题5:图书信息管理系统设计

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:

1、图书信息录入功能(图书信息用文件保存)

第 3 页 共 20 页

2、图书信息浏览功能

3、查询或排序功能:(至少一种查询方式) A、按书名查询 B、按作者名查询 4、图书信息的删除与修改

选题6:学生选修课程系统设计

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:

1、 课程信息录入功能(课程信息用文件保存)

#include #include #include Typedef struct subjects { Int num; Char name[20]; Char kind[10]; Int stime; Int ttime; Int etime;

第 4 页 共 20 页

Int score; Int term;

Struct subjects *next; }sub;

SUB *create_from() {

SUB * head,*tail,*p; Int num, stime,ttime; Int etimr,score,term; Char name[20],kind[10]; Int size=szeof(SUB); head=tail=NULL;

printf(“输入选修课程信息:\\n”);

scanf(“%d %s %s %d %d %d %d %d”,&num,&name,&kind,&stime,&ttime,&etime,&score,&term); while(num!=0){ p=(SUB*)malloc(size); p->num=num;

strcpy(p->name,name); strcpy(p->kind,kind); p->stime=stime; p->ttime=ttime;

第 5 页 共 20 页

p->etime=etime; p->score=score; p->term=term; if(head==NULL) head=p; else

tail->next=p; tail=p;

scanf(“%d %s %s %d %d %d %d %d”,&num,&name,&kind,&stime,&ttime,&etime,&score,&term); }

Tail->next-NULL; Return head; }

Void savefile(SUB *head) { SUB *p; FILE *fp;

Fp=fopen(“subjects,txt”,”w”);

Fprintf(fp,” 课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期\\n”); for(p=head;p;p=p->next)

第 6 页 共 20 页

Fprintf(fp,”]s%9s??dd}\\n”,p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); Fclose(fp); }

Void savefileadd(SUB *head) { SUB *p; FILE *fp;

Fp-fopen(“subjectsadd.txt”,”w”);

Fprintf(fp,” 课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期\\n”); for(p=head;p;p=p->next)

Fprintf(fp,”]s%9s??dd}\\n”,p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); Fclose(fp); }

Void savefiledel(SUB *head) { SUB *p; File *fp;

第 7 页 共 20 页

Fp=fopen(“subiectsdel.txt,”w”)

Fprintf(fp,” 课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期\\n”); for(p=head;p;p=p->next)

Fprintf(fp,”]s%9s??dd}\\n”,p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); Fclose(fp); }

Void prin(SUB *head) { SUB *ptr; If(head==NULL){

Printf(“没有此门课程记录!\\n”); return; }

printf(fp,” 课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期\\n”); for(p=head;p;p=p->next)

printf(fp,”]s%9s??dd}\\n”,p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);

第 8 页 共 20 页

Void search(SUB *head) {

Int a,num; Int t=1; Char type[10]; Char ch=‘a’,ch1; SUB *ptr; While(ch!=’’){

Printf(“若要按课程性质查找请输入1,若压迫按学分查找请输入2:\\n”); Scanf(“%d”,&a); Switch(a){

Case1:printf(“请输入要查找的课程性质:\\n”); printf(fp,” 课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期\\n”); for(ptr=head;ptr;ptr=ptr->next) if(strcmp(type,ptr->kind)==0){

printf(fp,”]s%9s??dd}\\n”,p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); t=0; }

第 9 页 共 20 页

If(t)printf(“未找到!\\n”); t=1; break;

case 2:printf(“输入要查找的课程的学分\\n”); scanf(“%d”,&num);

printf(fp,” 课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期\\n”); for(ptr=head;ptr;ptr=ptr->next) if(ptr->score==num){

printf(fp,”]s%9s??dd}\\n”,p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); t=0; }

If(t)printf(“未找到!\\n”); t=1; }

Printf(“继续查找请按回车键,结束请按空格键:\\n”); Ch1=getchar(); //将回车键赋ch1,否则case里面最后输入的回车键会赋给ch,因此用ch1填补。 Ch=getchar(); }

第 10 页 共 20 页

return head; }

SUB *del(SUB *head) {

SUB *p1,*p2; Char ch=’a’,ch1; Int num; While(ch!=’’){

Printf(“请输入要删除的课程号:\\n”); Scanf(“&d”,&num); If(head->num==num){ p2=head; Head=head->next; free(p2); }

if(head==NULL) return NULL; p1=head; p2=head->next; while(p2){ if(p2->num==num){ p1->next=p2->next;

第 11 页 共 20 页

free(p2); }

Else p1=p2; P2=p1->next; }

Printf(“继续查找请按回车键,结束请按空格键:\\n”); Ch1=getchar(); //将回车键赋ch1,否则case里面最后输入的回车键会赋给ch,因此用ch1填补。 Ch=getchar(); }

Return head; }

Void choose(SUB *head) {

SUB *p,*q; Int a[5];

Int num,total=0,i=0,j;

Printf(“输入要选修的课程的编号,编号之间以空格分开,输完后以0结束\\n”); scanf(“%d”,&num); while(num!=0){

for(p=head;p;p=p->next)

第 12 页 共 20 页

if(p->num==num){ total=total+p->score; a[i]=num; i++; }

Scanf(“%d:,&num); }

If(total<60) printf(“选修总分未达到60,选修失败\\n”); Else{

Printf(“选修成功:\\n”); Printf(“你选修的可称为:\\n”); For(j=0;jnext) If(q->num==a[j]) Printf(“%s”,q->name); Printf(“\\n”);

Printf(“**********\\n”); Printf(“09041232 王吴奇 \\n”); Printf(“**********\\n”); } }

第 13 页 共 20 页

Void main() {

SUB *head=create_form(); Savefile(head); Prin(head); Search(head); Head=insert(head);

Insert 的的返回值重新赋给head! savefileadd(head);

printf(“修改后的信息为:\\n”); prin(head); head=del(head);

del的的返回值重新赋给head! savefileadd(head);

printf “修改后的信息为:\\n”); prin(head); choose(head); }

2、课程信息浏览功能

3、查询功能:(至少一种查询方式)

第 14 页 共 20 页

A、按学分查询 B、按课程性质查询 4、学生选修课程

选题7:飞机订票系统设计

假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。试设计一民航订票系统,使之能提供下列服务:

1、航班信息录入功能(航班信息用文件保存) 2、航班信息浏览功能

3、查询航线:(至少一种查询方式) A、按航班号查询 B、按终点站查询 4、承办订票和退票业务

选题8:年历系统

功能要求:

1)输入任一年将显示出该年的所有月份日期,对应的星期 2)注意闰年情况 其显示格式要求如下: 1)月份:中文英文都可以,

2)下一行显示星期,从周日到周六,中英文都可以

3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐

第 15 页 共 20 页

当输入2004显示如下: Input the year:2004 Input the filename:a

The calendar of the year2004.

选题9:班级通讯录程序

设计一个实用的小型通信录程序,具有查询和删除功能,并且能打开或修改指定文件。

功能设计要求: 1、建立文件

(1)存储文件可以使用默认文件名或指定文件名.

(2)可以不保存输入记录,但需要确认是否保存输入记录。 2、文件的存取和显示 (1)可以单独存取文件。

第 16 页 共 20 页

(2)可以随时显示内存中记录的全部内容。 (3)可以直接存取默认文件或指定的文件。 3、删除记录

(1)可以按“姓名”的方式删除记录并更新内存内容。 (2)能给出被删除记录的信息。

(3)如果没有要删除的信息,输出没有找到的信息。 4、查询记录

(1)可以按“姓名”方式查询记录。 (2)能给出查询记录的信息。

(3)如果查询的信息不存在,输出“没有找到”的信息。

选题10:职工信息管理系统

设计要求实现如下功能:

(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。

(2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。(可选功能)

(3)抽取并计算职工的平均年龄。

(4)检索(查找)指定信息。(如按姓名检索、按年龄检索) (5)参考界面如下:

1、增加一位教师记录 2、增加一位工人记录 3、显示全部职工记录 4、计算教师平均年龄 5、计算工人平均年龄 第 17 页 共 20 页

6、删除一个教师 7、删除一个工人 8、按姓名检索所有信息 9、结束程序运行 选题11:学生成绩统计管理

主要功能:

1、输入一个班级的学生的基本信息(包括学好,姓名,性别,5门课程成绩)。

2、按姓名或者学号查找、修改、删除和保存各个学生的信息。 3、计算每个学生各门功课总分和平均分,按学号或总分排序输出每个学生的基本信息及总分、平均分和名次。

4、计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩。

5、显示每门科目中,成绩在90分以上的学生信息,以及每门科目中不及格的学生信息。

6、设置系统登陆密码,只有正确输入密码方可进入管理系统。课更改和保存登陆密码。

选题12:工资管理系统

设计说明:

(1)某公司主要有四类人员:经理、技术员、销售员和销售经理。要求存储这些人员的职工编号、姓名、年龄、性别、级别、月工资等信息。

第 18 页 共 20 页

(2)程序要具有对所有人提升级别的功能。所有人员的初始级别均为1级,然后系统可以根据输入进行升级,经理升为4级,销售经理为3级,技术员为2级,销售员仍为1级。

(3)月薪的计算方法: 1、经理:固定月薪8000元。

2、技术员:工作时间×小时工资(100元/小时)。 3、销售员:销售额×4%提成。

4、销售经理:底薪(5000)+销售额×0.5%提成。 2、设计要求:

(1)职工编号在输入人员信息时生成,每输入一个人员信息编号顺序加1。

(2)程序对所有人员有提升级别的功能。 (3)能够按照不同身份进行月薪的计算。 (4)能按姓名或者编号查找各类人员的信息。 (5)能够修改/删除各类人员的信息。 (6)能够显示所有人员的信息。 3、总体界面的设计

程序运行要显示菜单用于选择功能,各项菜单的功能通过调用相应的函数实现。菜单设计如下:

(1)输入信息 (2)查询信息 (3)修改信息

第 19 页 共 20 页

(4)删除信息 (5)显示所有信息 (6)退出系统

第 20 页 共 20 页

本文来源:https://www.bwwdw.com/article/5zu8.html

Top