C语言程序设计课程设计指导书.docx
- 文档编号:10153925
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:23
- 大小:27.93KB
C语言程序设计课程设计指导书.docx
《C语言程序设计课程设计指导书.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计指导书.docx(23页珍藏版)》请在冰豆网上搜索。
C语言程序设计课程设计指导书
课程设计指导书
课程名称:
C语言程序设计
班次:
自动化2016-01,02,03班
设计任务:
整个课程设计一共提供了10个题目,编号为1~10。
按学号尾数进行选题设计。
课程设计目的
1、 进一步掌握利用C语言进行程序设计的能力;
2、 进一步理解和运用结构化程序设计的思想和方法;
3、 初步掌握开发一个小型实用系统的基本方法;
4、 学会调试一个较长程序的基本方法;
5、 学会利用流程图表示算法;
5、 学习撰写课程设计报告;
第一部分:
课题描述(一共10个课题)
课题1:
图书管理系统
在磁盘上创建3个txt文件,命名book.txt,borrow.txt和reader.txt,分别存储图书、借阅和读者的信息,每本图书的基本信息有编号、书名、作者、出版日期、金额、类别、在馆数量等。
借阅基本信息有:
编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。
读者信息包括借书证号、姓名、班级、学号、类别等。
创建图书管理系统,该系统运行时在控制台中显示菜单界面进行键盘输入操作,模拟借阅图书的管理过程。
系统功能包括以下方面:
A、图书信息管理
图书按类别进行管理,常见类别有书籍、期刊、报刊等,在该模块中又包含添加、删除、修改、查询等操作,操作结果打印在控制台中。
字段包含:
书名,编号,类别,存放地点,入库时间
B、借阅信息管理
图书借阅模拟操作,包括以下功能:
借出,归还和续借等操作,对超期图书进行罚款金额显示。
另外可以设置罚金数额和最大借阅数量和时间等参数。
字段包含:
书名,编号,借阅者,借出时间,归还时间,借阅状态,超期时间,最大借阅数
C、读者信息管理
读者分为教师和学生两大类等级:
教师和学生的最大图书借阅数量和时间有所不同,并可对添加、挂失和查询读者信息。
字段包含:
读者姓名,读者类别,可借阅时间,可借阅数量,
系统操作过程中能够正确读取和更新文件,并进行正常的图书、借阅和读者管理操作。
课题2:
个人通讯录管理系统
在磁盘上建立1个communication.txt文件,作为读取和存储的通讯录,该系统运行时在控制台中显示菜单界面进行键盘输入操作,模拟通讯录的操作过程。
系统功能包括以下方面:
A、通讯录的每位联系人信息有姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
B、输入、查找、删除、修改联系人信息功能。
C、显示功能:
能够显示所有联系人信息(大于10条的分屏显示),或按分类进行显示。
D、分类操作:
可以按分类信息进行同一类的联系人操作,比如显示、删除和查找操作。
E、(选作)可以加载联系人头像并进行显示,可用字符拼图或读取已有的黑白图片文件。
系统操作过程中能够正确读取和更新文件,并进行正常的通讯录联系人操作。
课题3:
职工工资管理系统
在计算机中建立相应的数据结构,利用程序实现工资的输入、查询、增、删、改、统计、输出等操作。
1、设计一个能够记录公司员工工资的数据结构(比如包括:
员工号,姓名,基本工资,补贴金额,奖励金额,扣除金额、实发工资等)、文件(文件作为工资数据的保存介质)。
注:
,其中实发工资=基本工资+补贴金额+奖励金额-扣除金额
2、应用文件保存工资管理数据。
3、新增:
能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。
4、查找:
输入员工的员工号,并在文件中查找
♦若找到,则显示该员工的工资详情
♦否则提示未找到。
♦无论查找成功否,应还可选择继续查找或退出。
5、删除:
输入员工的员工号,并在文件中查找
♦若找到,提示是否确定删除
♦若选择是,则删除文件中该员工信息
♦若选择否,则取消,
♦否则提示无此员工信息
♦无论查找成功否,应还可选择继续查找或退出。
6、修改:
输入员工的员工号,并在文件中查找
♦若找到,显示该员工的所有信息,并可进行输入。
完成后将现输入的内容覆盖原内容保存到文件中。
♦否则提示无此员工信息
♦无论查找成功否,应还可选择继续查找或退出。
7、统计:
分类汇总并输出所有员工的基本工资、补贴金额、奖励金额、扣除金额、实发工资的总金额和平均金额。
如:
基本工资、补贴金额、奖励金额、扣除金额、实发工资
总和1200013001400150013200
平均12001301401501320
人数:
10
8、退出:
退出程序
课题4:
自动售货机系统
某公司请你为其生产的自动售货机编写软件。
这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。
顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。
如果商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。
自然,你的售货机用户希望尽可能地给用户找零,以免流失顾客。
为了调查用户的喜好,希望得到三种商品的每日消费数据,由此来调整货柜中三种货物的存贮量。
你的程序将实现以下功能:
库存查询:
检索当前三种商品的储存量
商品上架:
为三种商品增加或者减少储量
销售查询:
分别统计今天每种商品的销售量和销售额
会计查询:
打印当天的往来帐目以及剩余零钞数目
结算功能:
取出今天所有的10元纸币,并且分别设置零钞的数目
销售界面:
顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币
【题目要求】
(1)为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择希望进行的操作项目;
(2)你的售货机用户不希望每一位顾客都有权限执行以上功能,因此一旦进入销售界面,就不应当退回到系统界面,但是应允许顾客反复购买,前一个顾客购买完毕后应停留在销售界面里允许下一个顾客操作。
直到某位特殊的顾客(超级顾客)输入特殊的商品代号(密码)方可回到主控界面。
(3)计算机安排的找零算法应该合理,不要出现某一种零钱找光的情况。
同时顾客也不喜欢明明有5元零钞,却被找给5个一元的零钞。
尽量满足这两个要求。
(3)、要求以上功能分别用函数实现。
并要求用C语言的文件操作语句将以上所有结果保存在文件goods.txt。
【输入/输出要求】
(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。
进入每个操作后,根据程序的提示输入相应的信息;
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
课题5:
销售管理系统
某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1-5)。
每个销售员都将当天出售的每种产品各写一张便条交上来。
每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。
假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(在磁盘上创建一个txt文件记录上个月的销售信息),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
销售统计报表
产品代号销售之和销售员号
1
2
3
4
5
每种产品之和总和
5)可以按产品代号查询,也可以按销售员号查询。
课题6:
车票管理系统
一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。
如
班次发车时间起点站终点站行车时间额定载量已定票人数
18:
00郫县广汉24530
26:
30郫县成都0.54040
37:
00郫县成都0.54020
410:
00郫县成都0.5402
…
(一)功能要求:
用c语言设计一系统,能提供下列服务:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:
可按班次号查询,可按终点站查询
(4)售票和退票功能
A:
当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:
退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
课题7、单项选择题标准化考试系统
在磁盘上创建一个test.txt文件,使用记事本打开后先写入40道单选题和相应的选项和正确答案。
再编写一个单项选择题标准化考试系统,该系统功能要求:
字段:
题干,备选答案,标准答案
A、用文件保存试题库。
(每个试题包括题干、4个备选答案、标准答案)。
B、试题录入、修改和删除。
C、试题抽取:
每次从试题库中可以随机抽出N道题(N由键盘输入)。
D、考生答题:
用户抽取N道试题进行答题,键盘输入每道题的答案。
E、自动判卷:
系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
系统操作过程中能够正确读取和更新试题文件,并进行正常的试题管理、抽取、答题和判卷操作,该过程在控制台中显示,人机交互方便。
课题8:
医院门诊候诊的队列管理程序
要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:
字段:
挂号单号,患者姓名,年龄,性别,分诊室号,
【实现提示】
1--挂号2--叫号3--分诊室
4--显示各诊室队列信息
5--统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)
6--结束程序
选1时,提示用户在一行内输入姓名及挂号单编号;
选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除
选3时,进行诊室分配
选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室
选5时,进行两种统计方法的选择,并进行必要的统计计算
选6时,退出程序的运行
要求1~5中每一个步骤完成后都能重新显示此选择菜单
课题9:
成绩管理系统
现有学生成绩信息,内容如下
姓名学号语文数学英语
张明明01677882
李成友02789188
张辉灿03688256
王露04564577
陈东明05673847
….......…
请用C语言编写一系统,实现学生信息管理,软件的功能要求如下:
(1)信息维护:
要求:
学生信息数据要以文件的形式保存,能实现学生信息数据的维护。
此模块包括子模块有:
增加学生信息、删除学生信息、修改学生信息
(2)信息查询:
要求:
查询时可实现按姓名查询、按学号查询
(3)成绩统计:
要求:
A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4)排序:
能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果
课题10:
停车场管理系统设计
1.有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层.(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项.其中停车时间按分钟计算
2.假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1—4,停车时间依次为20,15,10,5.即先将这四辆车的信息存入文件”car.dat”中(数组的对应元素也要进行赋值)
3.停车操作:
当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的停车时间加5.
4.收费管理(取车):
当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.
5.输出停车场中全部车辆的信息.
6.退出系统.
字段:
车牌号,楼层号,车位号,入库时间,出库时间,停车时间,停车费用
第二部分:
基础训练
若感觉直接完成所选课题很困难,可以尝试先完成基础训练。
完成基础训练,有一定的编程基础后,在完成所选课题。
第一步:
定义一个结构体类型,用来表示学生的各种属性。
定义一个学生结构体变量,从键盘输入各个分量的值,然后从屏幕输出该结构体变量的各个分量。
学生结构体类型定义如下:
typedefstruct_CStudent
{
charszName[20];/*学生姓名*/
charnNumber[10]/*学号*/
intnAge;/*年龄*/
charcSex;/*性别,约定‘m’代表女,‘f’代表男*/
charszAddress[20];/*家庭地址*/
doubledDataStruct;/*数据结构成绩*/
doubledMath;/*数学成绩*/
doubledEnglish;/*英语成绩*/
}CStudent;
第二步:
定义一个结构体类型,用来表示学生的各种属性。
定义一个含3个元素的学生结构体变量数组,从键盘输入3个同学的信息,然后从屏幕输出该结构体变量数组各成员的值。
建议:
定义两个函数,一个用于从键盘输入一个学生结构体变量的各个分量的值,另一个把一个学生结构体变量的值输出到屏幕。
函数原型可以如下:
voidinput(CStudent*p)/*从键盘输入*/
voidoutput(CStudent*p)/*向屏幕输出*/
第三步:
从键盘输入一个学生的信息,然后以文本方式写入文件。
定义另一个学生结构体变量,用于从文件读出数据,然后把数据显示到屏幕。
第四步:
定义一个含3个元素的学生结构体数组,从键盘输入3个同学的信息,以文本方式把这些数据写入文件。
第五步:
将课题4写入文件的数据全部读出,输出到屏幕。
附录一:
本设计中需要清屏。
说明如下:
格式:
system(“cls”)
包含头文件:
stdlib.h
附录二:
控制台程序选择菜单的完成
#include
#include
intmain()
{
intchoice1=1,choice2;
do
{
printf("欢迎使用学生成绩管理系统\n");
printf("请选择程序功能\n");
printf("1、数据录入\n");
printf("2、数据查询\n");
printf("3、输出所有同学信息\n");
printf("4、退出程序\n");
scanf("%d",&choice1);
switch(choice1)
{
case1:
printf("数据录入\n");
/*编写数据录入程序*/
printf("返回上级菜单请按\n退出程序请按\n");
scanf("%d",&choice1);
break;
case2:
printf("1、按学号查询\n");
printf("2、按姓名查询\n");
scanf("%d",&choice2);
switch(choice2)
{
case1:
printf("按学号查询\n");
/*编写按学号查询程序*/
break;
case2:
printf("按姓名查询\n");
/*编写按姓名查询程序*/
break;
}
printf("返回上级菜单请按\n退出程序请按\n");
scanf("%d",&choice1);
break;
case3:
printf("输出所有同学信息\n");
/*编写输出所有同学信息程序*/
printf("返回上级菜单请按\n退出程序请按\n");
scanf("%d",&choice1);
break;
case4:
break;
}
system("cls");
}while(choice1!
=4);
printf("程序结束\n");
return0;
}
附录三:
关于菜单的处理技术举例
#include
#include
intmenu_select();/*主菜单函数*/
/******主函数开始*******/
main()
{
inti;
Salarysal[M];/*定义结构体数组*/
intlength;/*保存记录长度*/
clrscr();/*清屏*/
for(;;)/*无限循环*/
{
switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/
{
case1:
length=enter(sal);break;/*输入记录*/
case2:
list(sal);break;/*显示全部记录*/
case3:
search(sal,name);break;/*按姓名查找显示记录*/
case4:
length=delete(sal);break;/*删除记录*/
case5:
length=add(sal);break;/*插入记录*/
case6:
save(sal);break;/*保存文件*/
case7:
length=load(sal);break;/*读文件*/
case8:
display(sal);break;/*按序号查找显示记录*/
case9:
sort(sal);break;/*排序成新文件*/
case10:
copy(sal);break;/*数据备份*/
case0:
exit(0);/*如返回值为0则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
menu_select()
{
chars[80];
intc;
gotoxy(1,25);/*将光标定为在第25行,第1列*/
printf("pressanykeyentermenu......\n");/*提示按任意键进入菜单选择*/
getch();/*读入任意字符*/
clrscr();/*清屏*/
gotoxy(1,1);
printf("********************MENU*********************\n\n");
printf("1.Enterarecord\n");
printf("2.Listthefile\n");
printf("3.Searchrecordonname\n");
printf("4.Deletearecord\n");
printf("5.Addrecord\n");
printf("6.Savethefile\n");
printf("7.Loadthefile\n");
printf("8.Displayrecordonorder\n");
printf("9.Sorttoanewfile\n");
printf("10.Copytoanewfile\n");
printf("0.Quit\n");
printf("***********************************************\n");
do{
printf("\nEnteryouchoice(0~10):
");/*提示输入选项*/
scanf("%d",&c);/*输入选择项*/
}while((c>10)||(c<0));/*选择项不在0~11之间重输*/
returnc;/*返回选择项,主程序根据该数调用相应的函数*/
}
附录四:
关于头文件的使用
/******头文件(.h)***********/
#include"stdio.h"/*I/O函数*/
#include"stdlib.h"/*标准库函数*/
#include"string.h"/*字符串函数*/
#include"ctype.h"/*字符操作函数*/
#defineM50/*定义常数表示记录数*/
typedefstruct/*定义数据结构*/
{
charname[20];/*姓名*/
charno[10];/*员工编号*/
charunits[30];/*部门*/
charpost[10];/*职称*/
……
}Salary;
/******以下是函数原型*******/
intenter(SALARYt[]);/*输入记录*/
voidlist(SALARYt[]);/*显示全部记录*/
voidsearch(SALARYt[],charname[]);/*按姓名查找显示记录*/
intdelete(SALARYt[]);/*删除记录*/
intadd(SALARYt[],intn);/*插入记录*/
voidsave(SALARYt[]);/*记录保存为文件*/
intload(SALARYt[]);/*从文件中读记录*/
voiddisplay(SALARYt[]);/*按序号查找显示记录*/
voidsort(SALARYt[]);/*排序成新文件*/
voidcopy(SALARYt[]);/*数据备份*/
intmenu_select();/*主菜单函数*/
附录五:
关于文件的使用
要将信息永久保存,可采用磁盘文件的形式来存储数据。
C语言提供了丰富的文件操作函数。
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。
ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
例如,数5678的存储形式为:
ASC码:
00110101001101100011011100111000
↓ ↓ ↓ ↓
十进制码:
5 6 7 8共占用4个字节。
ASCII码文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程设计 指导书