高级程序语言课程设计题及参考资料new
更新时间:2023-11-03 16:50:01 阅读量: 综合文库 文档下载
信电学院《C语言课程设计》题目及参考资料
说明:
23个题目,每个题目只限2至3人选择,选择好题目后,各班将各题目选做的学生名单上报。
一、 贪食蛇设计
a) 贪吃蛇软件设计
功能说明:在封闭的围墙内有一条蛇,通过键盘控制蛇的运动方向,若无按键时,按蛇头方向自行移动。围墙内随机出现食物,吃掉食物,蛇的身体长1节,得10分。若蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。注意蛇只能以蛇头移动,不能相反,也就是说,若蛇原先向上移动,按向下键无效。 实现提示:
1. 自行设计开始界面,按键或鼠标点击开始游戏。 2. 显示游戏界面,按游戏规则进行游戏 3. 画面实时显示选手得分
4. 结束时给出提示和得分,询问是否再次开始。 相关知识:图形绘制、键盘操作、数组、结构体等 总体设计思路: 1.初始化图形系统 2.画游戏界面
3.等待按键开始游戏(可给出提示)
4.游戏主体程序:游戏主体程序包括:有键按下,按有效方向处理蛇的移动 无键按下,按原方向处理蛇的移动,移动过程中需判断是否死亡、是否吃到食物,再按相关函数处理。 5.游戏结束
详细设计:
数据结构采用结构体,设计食物结构体为:
struct Food {
int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/
int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/
蛇结构体为:
struct Snake {
int x[N]; int y[N];
int node;/*蛇的节数*/
int direction;/*蛇移动方向*/
int life;/* 蛇的生命,0活着,1死亡*/ }snake;
各功能模块函数 /*主函数*/
void main(void) {
Init();/*图形驱动*/ DrawK();/*开始画面*/
GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/ }
二、 流星雨的实现
功能说明:程序模拟一组流星飞向地面的情景。地面用多行#来表示,流星用大写字母表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。一个流星下落只能去掉一个#号,当最后一行地面有#被去掉时,程序终止。 实现提示:
? 程序在下降过程中,程序必须知道流星的字符、颜色、位置、速度,因此程序需要定义以下几
个数组变量:存放流星字符的数组,存放流星字符颜色的数组,存放流星行位置的数组,存放流星列位置的数组,存放流星下降速度的数组。 ? 程序的流程图如下图所示。
流星雨流程图 ? 可定义二维数组screen表示地面和天空,此数组是一个24行81列的字符数组。上面的行表
示天空,数组单元的值是空格;最下面的几行(如5行)表示地面,数组单元的值是?#?;整个屏幕的大小是80*25,即25行80列, 为了在输出最后一行时不换行滚屏,程序只能利用上面的24行空间。把数组定义成81列的目的是,每行的最后字符赋值成?\\0?,就可以按照字符串的方式输出每行文本了。
? 程序首先输出地面和天空,即输出定义的二维数组screen中的字符串,前19行是空行,后5
行是#号。这样screen[24][81]的字符矩阵就与整个屏幕对应起来。 ? 然后随时机产生一组流星数据,包括字符、颜色、位置和速度。速度用一次下降多少行来表示,
最大的速度是4。由于要随机产生这些数据,因此需要调用random函数。
? random函数的原型是 int random(int num); 这个函数产生一个0~num-1之间的一个随机数。
流星字符可以这样产生:random(26)+?A?; 流星字符的颜色可以这样产生:random(16)+1;流星下降的位置可以这样产生:random(4)+1;流星的行位置一开始都是1; 流星的列位置可以这样产生:random(80)+1;但要保证所有流星的列位置不能相同(设计一个算法来判断)。 调用random之前,用randomize()库函数进行初始化。 两个库函数都在stdlib.h文件中。 ? 每个流星按照自己的速度下落,所谓的下落就是逐行移动流星字符: 在下一行新的位置上显
示流星字符,在原来的位置上显示空格以便擦除流星字符,然后再延迟等待几十毫秒。这样循
环往复就构成了流星下落的动画。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。
? 如果流星的新位置所对应的screen的单元格的值是?#?,则表示撞到了地面。 这种情况下在流
星的新位置上输出空格,擦除#号,并且对screen相应的单元赋值为空格,流星字符也要赋值为空格,以表示流星消失。
? 当screen[23]中任何一个单元格是空格时,程序终止。
三、手机通信录管理系统
1、 需求分析
手机通信录采用文件存储,因而要提供文件的输入输出操作;查看功能要提供显示操作;增加新数据的过程要检查是否有重复,存储空间是否已满,且录入的新数据能按递增的顺序自动进行条目编号,因而要提供查找、统计和排序操作;要提供修改与删除和自动调整编号功能;另外还要提供键盘式选择菜单以实现功能选择。
2、 总体设计
整个系统可以设计为数据查看模块、数据添加模块、数据修改模块、数据删除模块。
手机通信录管理系统 数据查看模块 数据添加模块 数据修改模块 数据删除模块 办公类 个人类 商务类 3、 详细设计
数据结构采用结构体,设计通信录结构体: Struct communicationMethod {
Char name[20]; //姓名 Char tel[12]; //电话号码
Int type; //分类:0表示办公类,1表示个人类,2表示商务类 Char email[20]; //电子邮件地址 Int num; //条目编号 }ComMtd;
(1)数据查看模块
通过菜单选择查看信息,然后选择办公类、个人类或者商务类,则显示所选类信息列表。这是一个查找与显示的过程,在手机通信录文件中查找type类型符合的记录,输出。 (2)数据添加模块
提示输入一条记录,将对通信录执行查找操作,查找姓名和电话号码字段,如不存在相同的记录,则用以追加方式写入文件,并给记录的条目字段赋值(在检查有无重复的过程中启动计数),否则提示“数据已经存在,请重新输入或者取消!”。 (3)数据修改模块
修改通信录信息,则需要读文件,判断信息是否是要修改的信息,如果是,修改,重新写入文件;否则直接重新写入文件。 (4)数据删除模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。
四、工资管理系统
1、 需求分析
3、详细设计
数据结构采用结构体数组,设计航班结构体如下: Struct {
Char flightNo[10]; //航班号 Char start[10]; //起始站 Char end[10]; //终点站 Float day; //飞行时间 Int totalTicket; //预售票总数 Int sellTicket; //已售票总数 }Flight[N]; //航班结构体 (1)航班信息输入模块
把航班信息写入航班信息文件。 (2)航班信息浏览模块 读文件然后显示即可。 (3)航线查询模块
通过菜单选择查询方式,提供按照航班号、起点站、终点站和飞行时间查询。采用基本查找算法即可。
九、职工信息管理系统
1、 需求分析
系统要以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;职工信息采用文件保存,因而要提供文件的输入输出操作;要实现职工信息的浏览功能,则要提供信息显示操作;要实现职工信息查询功能,则要提供查找操作(按学历查询和按职工号查询两种查询方式);要实现职工信息删除、修改功能则要提供文件记录的删除、修改操作。 2、 总体设计
整个系统被设计为职工信息输入模块、职工信息浏览模块、职工信息查询模块和职工信息删除与修改模块。 3、 详细设计
数据结构采用结构体,设计职工信息结构体: Struct employeeInfo {
Char jobNo[10]; //职工号 Char name[20]; //姓名 Char sex; //性别 Int age; //年龄 Char eduLevel[10]; //学历 Float salary; //工资 Char addr; //地址 Char tel[11]; //电话
}EmpInfo; //职工信息结构体 (1)职工信息输入模块
把职工信息写入航班信息文件。 (2)职工信息浏览模块
读文件然后显示即可。 (3)职工信息查询模块
通过菜单选择查询方式,提供按学历查询和按职工号查询两种查询方式。采用基本查找算法即可。 (4)职工信息删除与修改模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。修改操作于删除操作类似,只是判断是否是要修改的记录,如果是,则把修改后的记录写入文件,否则直接写入文件。
十、图书管理系统
1、 需求分析
图书管理信息采用文件保存,因而要提供文件的输入输出操作;要实现对图书基本信息的查询,则要提供查找操作(提供按书名、作者名查询两种查询方式)和显示操作;要实现对撤销图书信息的删除则要提供文件记录的删除操作;办理借书或还书手续需要提供修改操作;另外还要提供键盘式选择菜单以实现功能选择。 2、 总体设计
整个系统被设计为数据输入模块、数据查询模块、数据删除模块和数据修改模块。
3、 详细设计
数据结构采用结构体,设计图书信息结构体: Struct bookManageInfo {
Char bookName[20]; //图书名称 Char bookCode[20]; //图书编号 Float price; //图书价格 Char author[10]; //作者
Int state; //存在状态,0代表可以出借,1代表已经借出 Char borrowerName[10]; //借书人姓名
Int sex; //借书人性别,0代表女,1代表男 Char stuNo[10]; //借书人学号 }bookMInfo;
(1)数据输入模块
把图书基本信息写入图书信息文件。 (2)数据查询模块
通过菜单选择查询方式,提供按书名查询和按作者名查询两种查询方式。采用基本查找算法即可。
(3)数据删除模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记
录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。 (4)数据修改模块
办理借书手续时,先要在文件中查找要借的书的存在状态,若可以出借,则允许借出,把借书人姓
名、性别和学号添加到该书的记录中,并把存在状态改为已经借出;否则,显示“抱歉,该书已借出”。办理还书手续时,在文件中查找该书的记录,然后把存在状态改为允许出借,把借书人姓名、性别和学号删除。具体修改操作可以参考删除操作。
附件2:备选题:
一、仪器仪表管理系统 1、需求分析
仪器仪表信息用文件存储,故要提供文件的输入输出操作;要能够完成对仪器仪表信息的修改和删除,需要对提供仪器仪表信息修改和删除操作;实现对仪器仪表信息的查询和统计及显示操作;另外还要提供键盘式选择菜单以实现功能选择。 2、总体设计
整个仪器仪表管理系统分为仪器表信息输入模块、仪器表信息修改和删除模块、仪器表信息查询和统计模块。 3、详细设计
数据结构采用结构体: Struct instrumentInfo {
Char instrName[20]; //仪器仪表名 Char instrNo[10]; //仪器仪表编号 Char buyDate[20]; //购买时间 Char borrowDate[20]; //借入时间 Char lendDate[20]; //借出时间 Char returnDate[20]; //归还时间 Char repairDate[20]; //维修时间
Int state; //状态信息(0代表可借出,1代表已借出,2代表正在维修) }InstrInfo; (1)输入模块
把仪器仪表信息写入仪器仪表信息文件。 (2)修改和删除模块
通过菜单选择借出操作,查找文件仪器仪表信息,找到相应的仪器仪表,如果仪器仪表状态为0,则允许借出,在文件中更改仪器仪表状态为1,更改借出时间;否则,即仪器仪表借出或正在维修,则输出“抱歉,仪器仪表已借出(正在维修)!”这个过程是一个对文件查找(读文件、判断是否是要查找的纪录)、重新写入的过程。
删除操作只需读文件,判断所读纪录是不是要删除的记录,如果是,则舍弃;否则重新写入文件。 (3)查询和统计模块
通过菜单选择查询或统计操作,若选择查询,则需要再选择查询方式:基本信息、时间段、时间点。基本信息查询,就显示所有记录,这是一个读文件和输出的过程。时间段查询,则要输入起止时间和表征字段(可以用0表示购买起止时间,1表示借出起止时间,2表示维修起止时间)。例如输入2004 1 1 2004 10 10 0
表示查询2004年1月1日到2004年10月10日之间购买的仪器仪表信息。则读一条记录,判断购买时间是否处于起止时间之间,如果处于,则打印输出,否则舍弃。借出和维修查询与此类似。
统计功能和查询功能类似,只需要加一个计数变量即可。
二、服装销售管理系统 1、需求分析
用户与商品信息要采用文件存储,因而要提供文件的输入输出操作;实现用户的添加、修改、删除,商品信息的添加、修改、删除、查找等需要提供信息的添加、删除、修改与查找操作;实现商品浏览功
能的实现需要实现显示操作;另外还要提供键盘式选择菜单以实现功能选择。 2、总体设计
整个服装销售系统被设计为管理员模块、店长模块、销售员模块、商品模块等,如下图所示:另外还要实现各用户自身信息的管理。
服装销售系统 管理员模块 店长模块 销售员模块 商品模块 用户添加 用户删除 用户修改 商品添加 商品删除 商品修改 商品查找 商品浏览 商品出售
3、详细设计
数据结构采用结构体,构造结构体如下: Struct goods //商品 {
Char name[10]; //商品名 Char code[10]; //商品代码 Char producer[10]; //制造商 Float price; //价格 }Goods;
Struct administrator //管理员 {
Char ID[10]; Char password[10];
… //其他信息
}Admin;
Struct shopkeeper //店长 {
Char ID[10];
Char password[10];
… //其他信息 }Shkpr;
Struct seller //销售员 {
Char ID[10]; //营业ID号 Char name[10]; //姓名
Char ID[10]; //所属店长ID号
Goods *good; //指向该销售员销售的商品信息 … //其他信息 }Seller;
Struct goods_report //商品报表 {
Goods good; //商品 Seller assistant; //营业员 Char sell_data[20]; //出售日期 }
先建立文本文件Admin.txt,其中存放管理员的ID和密码及其它信息;文本文件Shopkeeper.txt,其中存放店主的用户名和密码及其它信息;文本文件Seller.txt,其中存放销售员的ID和密码及其他信息。
登录系统时,通过菜单选择登录身份,然后提示输入用户ID和密码。
如果以管理员身份登录,则在Admin.txt文件中查找(采用基本的查找算法)输入的用户ID和密码是否存在,如果存在,则允许进入,显示选择菜单:修改密码 添加用户 用户信息 商品信息;否则,显示“输入的用户名或密码错误!”,返回上级菜单。
店长与销售员登录系统与此类似,店长登录成功后显示选择菜单为:修改密码 修改个人信息 商品信息 查看报表 商品储备信息。销售员登录成功后显示选择菜单为:商品浏览 查找商品 出售商品 本日报表 本月报表
密码修改与个人信息修改既是写入新的密码、个人信息,覆盖掉原来的,就是文件的读写操作。在登录成功后,就标志出登录人员的纪录位置,这样修改信息时,可以直接定位到修改记录的位置。
管理员添加用户,就是执行文件写操作,采用追加的方式把用户信息写入用户信息文件(根据添加的用户身份选择写入Shopkeeper.txt还是Seller.txt)。删除用户操作,读取用户信息文件,如果读出的用户不是要删除的用户,则直接重新写入文件,否则,舍弃。
管理员选择用户信息,将进入用户信息修改和用户信息统计的选择。用户信息修改操作,即查找要修改的用户信息文件,找到要修改的用户,写入修改后的信息覆盖掉原始信息。用户信息统计操作,读用户信息文件,比较统计信息字段,符合统计要求则计数加1,最后输出符合条件的记录数(也可以把符合条件的记录信息完全输出)。
管理员选择商品信息,则可以选择商品信息添加、修改、删除、查找、统计,商品信息的添加、修改、删除、统计操作与用户信息的相应操作类似。查找操作只需采用基本的查找算法查找商品信息文件即可。
店长修改密码和修改个人信息操作与管理员相应操作类似。
店长的商品信息可以选择商品信息修改和商品信息统计,此类操作与管理员的相应操作相同。 店长选择查看报表,则显示选择菜单:日报表 月报表 商品销售量报表 营业员业绩报表。查看日报表,根据输入的日期在商品报表文件中查找,把出售日期与输入日期符合的记录输出。查看月报表操作类似,查找商品报表文件中商品出售日期在输入月份之间的记录输出。商品销售量报表,这是一个统计的过程,查找商品报表,统计同一商品的销售量(月销售量、年销售量)。查看营业员业绩报表,
则读销售员信息文件,把信息打印输出即可。
店长查找浏览修改商品储备信息,查找与修改操作可以参考管理员对商品的查找与修改操作,浏览操作就是把商品储备信息输出。这些操作在该店长对应的商品储备信息文件中执行。
[注:每个店长对应一个商品储备信息文件,里面存放该店储备的商品信息。 文件格式: 店长ID
商品名 商品代号 制造商 价格?]
销售员可以选择商品浏览、查找、出售商品、察看自己本日报表、本月报表。商品浏览、查找以及查看自己本日报表、本月报表可以参考前面相关操作。出售商品操作执行的动作是:在本店的商品储备文件中查找要出售的商品,如果存在,则出售,在商品报表文件和销售员销售文件中添加该商品信息,并把该商品信息从商品储备文件中删除。
三、杂志订阅管理系统 1、需求分析
订户的信息要用文件存储,所以要提供文件的输入输出操作;要实现增加新订户的功能,所以要提供文件的添加操作;要实现对订户文件的查询,所以要提供文件的查找操作;要删除已到期的订户记录,所以要提供文件的删除操作;要统计本期杂志订户数并打印运算结果,所以要提供统计和显示操作;另外还要提供键盘式选择菜单以实现功能选择。 2、总体设计
该管理软件被设计为数据添加模块、数据删除模块和数据统计模块。 3、详细设计
数据结构选择结构体: Struct subscriberInfo {
Char name[20]; //姓名 Int sex; //性别 Char addr[20]; //地址 Char tel[12]; //电话号码 Float price; //杂志单价 Int num; //订阅数
Char date[10]; //订阅的期限
}subInfo; //订户信息结构体 (1)数据添加模块
用追加的方式采用fwrite或fprintf把新增订户信息写入订户信息文件。 (2)数据删除模块
采用基本的查找算法,查找订户信息文件,比较当天日期和订阅期限,如果到期,则删除该订户记录。删除方法:如果判断该条订户信息要删除,则不再把该条信息写入文件,继续读下一条订户信息。 (3)数据统计模块
对本期杂志订户数的统计,就是读文件,输出订户名、订阅数、单价,并计算金额(单价*订阅数)。可以定义变量统计订户数、订阅数和总金额,最后输出。
四、人事管理系统 1、需求分析
人事档案信息采用文件存储,因而要提供文件的输入输出操作;根据学院人事的变动情况,添加删除记录,因而要提供文件的添加删除操作;根据编号和姓名进项查询,所以要提供文件的查找操作;高
级编辑功能,就是提供文件的修改操作;统计功能要提供统计操作;排序功能要提供用排序算法对文件记录的排序;另外还要提供键盘式选择菜单以实现功能选择。 2、总体设计
整体设计为数据输入模块、数据添加模块、数据删除模块、数据查询模块、数据修改模块、数据统计模块、数据排序模块。 3、详细设计
数据结构采用结构体: Struct personnelArchiveInfo {
Char No[10]; //编号 Char name[10]; //姓名 Int sex; //性别 Int age; //年龄 Char job[10]; //职务 Char post[10]; //职称
Char politic[10]; //政治面貌 Char edu_level[10]; //最高学历 Char period[10]; //任职时间 Char start_time[10]; //来院时间 Char type[10]; //人员类别 }PAInfo;
(1) 数据输入模块
把员工信息写入人事档案文件。 (2) 数据添加模块
用追加的方式把新增员工信息写入人事档案文件。 (3) 数据删除模块
根据人员编号查找要删除的人员,从文件中读一条记录,查看编号是否要删除,如果是,则舍弃,不再写入文件;否则重新写入文件。 (4) 数据查询模块
把编号和姓名作为查询字段,用基本查找算法查找人事档案文件,把符合查找要求的记录输出。 (5) 数据修改模块
查找要修改的记录,修改之。先读记录,若是要修改的记录,则修改信息,把修改后的信息写入文件;否则直接写入文件。 (6) 数据排序模块
通过菜单选择年龄或者来院时间,把数据从文件中读出来,任意选择一种排序算法对记录进行排序,输出排序结果。
(7) 数据统计模块
通过菜单选择统计字段:在职人数、党员人数、女工人数、高学历人数、高职称人数。 例如选择党员人数,则统计运算伪码如下: Count=0; //记录在职人数 While(文件未读完) {
读一条记录;
If(政治面貌是党员) {
Count++;
输出该条记录; }
其他字段的统计运算与次类似。
五、机房机位预约模拟管理系统 1、数据结构
顾客信息结构体: Struct CusInfo {
Char name[20];//顾客姓名 Int sex; //性别 Char tel[11]; //电话 }CInfo;
机位信息结构体: Struct {
Int State[6]; //机位状态,每2个小时为一个时间段,08:00-20:00共6个时间段。0表示有
空机位,1表示没有空机位
CInfo waitlist[6]; //各个时间段的运行客户 Int year; Int month;
Int day; //日期 }PCInfo;
PCInfo info[100]; //存放100天的机位信息 2、具体实现 (1)查询
输入时间,则遍历info数组,查看日期(year/month/day),如果日期匹配,则把机位信息输出。 (2)机位预订
输入日期(或时间段)查询机位信息文件,如果日期符合,再查看状态字段,若相应字段为0,则预约(即把该用户信息加入写入机位waitlist相应时间段中);若相应字段为1,则查看本天其他时间段,寻找最近空时间段。如果用户要求在非空时间上机,则查找info数组中该时间段为空的元素,把该时间段的状态字段设为1,把用户信息加入机位当天waitlist相应时间段中。 (3)退出预订
根据预订日期和客户信息找到预订信息,把客户信息删除,并把该时间段的状态置为0。 (4)查询
输入日期和时间段,查看该时间段的状态,如为1,则把相应时间段的运行客户信息打印输出。如为0,则显示“该时间段空闲!”。
六、停车场管理系统 1、需求分析
车辆信息要用文件存储,因而要提供文件的输入输出操作;当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作;另外还要提供现实操作和用键盘式菜单实现功能选择。 2、总体设计
整个管理系统可以设计为停车模块、取车模块、车辆信息浏览模块。
3、详细设计
停车场用二位数组实现park[2][6]; //2层,每层有6个车位 每辆车的信息用结构体来实现,设立车信息结构体: Struct carInfo {
Int carNo; //车牌号 Int layerNo; //层号 Int parkNo; //车位号 Int time; //停车时间 }CInfo;
(1)停车模块
对车辆信息赋值,分配前检查车位使用情况(按行查找park数组,元素为0表示车位为空,则允许分配)。把新添加的车辆信息以追加的方式写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。 (2)取车模块
计算费用(停车费用=停车时间*0.2元),从文件中删除该车信息。并将该车位对应的二位数组变量设为0,表示该车位可用。输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。 (3)车辆信息浏览模块
输出车辆信息文件中的记录。 另外,用户按Esc键退出系统。
七、建筑工地信息管理系统 1、需求分析
信息采用文件存储,因而要提供文件的输入输出操作;要插入数据,因而要提供数据的添加操作;要实现数据的删除、更新和查询,因而要提供文件记录的删除、修改和查找操作;另外要提供键盘式选择菜单以实现功能选择。 2、总体设计
整个系统可以被设计为数据输入模块、数据添加模块、数据删除模块、数据更新模块和数据查询模块。
3、详细设计
数据结构采用结构体,建立四个结构体: //销售商-配件-建筑工地结构体 Struct SellerFitBuild {
Char seller_code[10]; //销售商号码 Char fit_code[10]; //配件号 Char build_code[10]; //工地号 Int num; //销售数量
}SFB; //seller_code号销售商销售num个fit_code号配件给build_code工地
//建筑工地
Struct BuildingSite {
存放累积输入的字符串;接下来用一个do——while语句来实现连续的键盘输入,这个循环结束于从键盘上输入了其它非数字键,当按到运算符“+”、“-”、“*”、“/”时,从而跳出循环,进行下一步的运算;接下来又用一个switch——case语句来实现分情况的计算,从而对加减乘除的各种情况下的等式运算,当输入的字符既不是数字也不是运算符时,就通过switch——case里面的default语句来提示输入出错“input error”,从而通过重新输入正确再进行计算。如图6:
3.10 简单计算器的实现界面
图7 计算器界面图
《C语言课程设计》题目
5附录——简单计算器的部分源代码
#include
#include
#include
/* 定义全局变量j */
/* 图形设备驱动*/
/* 图形模式值*/
/* 错误代码*/
void initialize(void); void compute(void); void huakuang(void); void name(void); void anjian(char input); int main() { }
void initialize(void)
第 47 页
initialize(); huakuang(); compute(); return 0;
《C语言课程设计》题目
{
int gdriver=DETECT, gmode, xasp, yasp; initgraph(&gdriver, &gmode, \ ErrorCode = graphresult(); if( ErrorCode != grOk ) {
printf(\ grapherrormsg( ErrorCode ) ); exit( 1 ); }
getpalette( &palette ); MaxX = getmaxx(); MaxY = getmaxy(); }
void huakuang(void) {
setbkcolor(3); setcolor(5); bar3d( MaxX/4,
setcolor(3);
rectangle( 6*MaxX/20-10, 2*MaxY/8+10, 11*MaxX/20+40,
MaxY/4-40, 3*MaxX/4, 3*MaxY/4, 5,1);
3*MaxY/8-10);
name(); setcolor(4);
rectangle( 13*MaxX/20+10, 2*MaxY/8+10,
15*MaxX/20-10,
3*MaxY/8-10); /*画小数点*/
rectangle( 5*MaxX/20+10, 3*MaxY/8+10, 7*MaxX/20-10,
4*MaxY/8-10);
rectangle( 7*MaxX/20+10, 3*MaxY/8+10, 9*MaxX/20-10,
4*MaxY/8-10);
rectangle( 9*MaxX/20+10, 3*MaxY/8+10, 11*MaxX/20-10,
第 48 页
《C语言课程设计》题目
4*MaxY/8-10);
rectangle( 11*MaxX/20+10, 3*MaxY/8+10, 4*MaxY/8-10);
rectangle( 13*MaxX/20+10, 3*MaxY/8+10, 4*MaxY/8-10);
rectangle( 5*MaxX/20+10, 4*MaxY/8+10, 5*MaxY/8-10);
rectangle( 7*MaxX/20+10, 4*MaxY/8+10, 5*MaxY/8-10);
rectangle( 9*MaxX/20+10, 4*MaxY/8+10, 5*MaxY/8-10);
rectangle( 11*MaxX/20+10, 4*MaxY/8+10, 5*MaxY/8-10);
rectangle( 13*MaxX/20+10, 4*MaxY/8+10, 5*MaxY/8-10);
rectangle( 5*MaxX/20+10, 5*MaxY/8+10, 6*MaxY/8-10);
rectangle( 7*MaxX/20+10, 5*MaxY/8+10, 6*MaxY/8-10);
rectangle( 9*MaxX/20+10, 5*MaxY/8+10, 6*MaxY/8-10);
rectangle( 11*MaxX/20+10, 5*MaxY/8+10, 6*MaxY/8-10);
rectangle( 13*MaxX/20+10, 5*MaxY/8+10, 6*MaxY/8-10); outtextxy(14*MaxX/20-2.5, 5*MaxY/16-2.5,\
outtextxy(6*MaxX/20-2.5, 7*MaxY/16-2.5,\
第 49 页
13*MaxX/20-10,
15*MaxX/20-10,
7*MaxX/20-10,
9*MaxX/20-10,
11*MaxX/20-10,
13*MaxX/20-10,
15*MaxX/20-10,
7*MaxX/20-10,
9*MaxX/20-10,
11*MaxX/20-10,
13*MaxX/20-10,
15*MaxX/20-10,
《C语言课程设计》题目
}
outtextxy(8*MaxX/20-2.5, 7*MaxY/16-2.5,\outtextxy(10*MaxX/20-2.5, 7*MaxY/16-2.5,\outtextxy(12*MaxX/20-2.5, 7*MaxY/16-2.5,\outtextxy(14*MaxX/20-2.5, 7*MaxY/16-2.5,\
outtextxy(6*MaxX/20-2.5, 9*MaxY/16-2.5,\outtextxy(8*MaxX/20-2.5, 9*MaxY/16-2.5,\outtextxy(10*MaxX/20-2.5, 9*MaxY/16-2.5,\outtextxy(12*MaxX/20-2.5, 9*MaxY/16-2.5,\outtextxy(14*MaxX/20-2.5, 9*MaxY/16-2.5,\
outtextxy(6*MaxX/20-2.5, 11*MaxY/16-2.5,\outtextxy(8*MaxX/20-2.5, 11*MaxY/16-2.5,\outtextxy(10*MaxX/20-2.5, 11*MaxY/16-2.5,\outtextxy(12*MaxX/20-2.5, 11*MaxY/16-2.5,\outtextxy(14*MaxX/20-2.5, 11*MaxY/16-2.5,\
void compute(void) {
/*添加自己代码*/ }
void anjian(char input) {
/*添加自己代码*/ }
void name(void) { }
第 50 页
setcolor(4);
outtextxy( MaxX/4+20, MaxY/4-10,\
Char build_code[10]; //工地号
Char build_name[10]; //工地名 Char city[10]; //城市 }BS;
//配件
Struct Fitting {
Char fit_code[10]; //配件号 Char fit_name[10]; //配件名 Char color[10]; //配件颜色 Float weight; //配件重量 Char city[10]; //配件产地 }Fit;
//销售商 Struct Seller {
Char seller_code[10]; //销售商号码 Char seller_name[10]; //销售商名字 Char city[10]; //销售商城市 }Seller;
(1)主函数建立四个文件,输出提示用户操作的信息,选择操作文件:R[销售商-配件-建筑工地],B[建筑工地],F[配件],S[销售商],空格键[查询]。 (2)数据输入模块
写数据到相应文件中。 (3)数据插入模块
采用追加的方式写数据到文件。 (4)数据删除模块
通过菜单选择相应的文件后,打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。 (5)数据更新模块
与数据删除模块类似,只是判断所读的纪录是否要更新,如果是,则把更新后的纪录写入文件,否则直接写入文件。
(6)按空格键进入查询操作
通过菜单选择查询零件-供应商或者项目-供应商。例如选择查询零件-供应商。其基本流程如下: 打开销售商-配件-建筑工地文件; While(文件未结束) {
读一条记录,得到销售商号码和配件号;
在销售商文件中查找该销售商号码,得到该销售商所在城市; 在配件文件中查找配件号,得到该配件的产地;
如果销售商所在城市与配件的产地相同,则输出销售商号码和配件号码; }
查询项目-供应商记录对的操作类似,只需把配件号改为工地号即可。
八、电影俱乐部管理系统 1、 需求分析
DVD信息和俱乐部会员信息用文件存储,因而要提供文件的输入输出操作;要注册新会员,因而要提供文件的添加操作;实现按月缴纳费用,因而要提供文件的修改操作;要浏览信息因而要提供显示操作;要实现查询则要提供文件的查找操作;另外要提供键盘式选择菜单以实现功能选择。 2、 总体设计
整体设计为会员注册模块、会员交费模块、会员租用DVD模块、会员归还DVD模块、信息浏览模块和信息查询模块。 3、 详细设计
采用文件管理信息,建立两个文件:DVD信息文件和会员信息文件。 数据结构采用结构体: //DVD信息结构体 Struct DVDInfo {
Char No[10]; //DVD编号 Char name[10]; //DVD名字
Int state; //DVD状态:0表示已借出,1表示可出借 }DI;
//会员信息结构体 Struct MemberInfo {
Char No[10]; //会员编号 Char name[10]; //会员姓名 Char password[20]; //会员密码 Float balance; //账户余额
DI borrowDVD[3]; //所借DVD信息;
Int state; //表示租用DVD的数目,取值为0-3 }MI; 分析:
建立DVD文件和会员信息文件,输出菜单:新用户注册[N] 直接登录[Enter]。如果是新用户注册,则进入用户注册模块。如果直接登录,则提示输入用户名和密码。普通会员正确登录后显示:租用DVD[H] 归还DVD[R] 缴纳费用[P] 账户信息[D]。按相应的提示键将进入相应的模块。管理员登录则显示:DVD信息[D] 会员信息[M] 交易信息[T]。DVD信息查看就是分屏输出DVD文件中的记录,会员信息就是分屏输出会员信息文件中的记录,交易信息则输出租用DVD数不为0的会员信息。 (1)会员注册模块
提示输入用户信息:会员编号(昵称),会员姓名,密码。将把新的会员信息添加到会员信息文件中,并把账户余额初始化为0,所借DVD信息初始化为空。然后系统显示提示信息:缴纳费用?[Y/N]。按Y键将进入会员交费模块,N则返回系统初始界面。 (2)会员交费模块
提示输入交费金额,则在会员信息文件中修改其账户余额。 (3)会员租用DVD模块
可以通过菜单选择浏览DVD信息或者租用。浏览DVD信息调用信息浏览模块,租用则首先查看自己的余额,如果>0,则查看状态,如果state<3,则允许出借,提示输入租用的DVD编号,在会员信息文件中加入该DVD信息,state++。并在DVD信息文件中把该DVD状态改为已借出。
(4)会员归还DVD模块
提示用户输入要归还的DVD编号,把该用户记录的该DVD信息初始化为空,state--。同时在DVD信息文件中把其状态改为可供出借。 (5)信息浏览模块
浏览DVD信息,则从DVD信息文件中读记录,输出。浏览会员信息文件,则读会员信息文件,输出。
(6)信息查询模块
会员对自己账户状况的查询,则输出其账户信息即可(登录时在会员信息文件中找到自身信息,事先读到临时变量中)。
管理员对所有交易情况的查看,则查找用户信息文件,如果用户的staet!=0,则输出用户信息。
九、歌曲信息管理系统 1、需求分析
用文件存储信息,因而要提供文件的输入输出操作;可对歌曲信息进行输入、删除、浏览,因而要提供文件的输入、删除和信息显示操作;查询歌曲信息要提供查找操作;实现按作者分组显示功能则要提供排序功能;另外要提供键盘式选择菜单以实现功能选择。 2、总体设计
整个管理系统可以被设计为数据输入模块、数据删除模块、信息浏览模块、信息查询模块和信息分组显示模块。 3、详细设计
数据结构采用结构体,建立歌曲信息结构体: Struct SongInfo {
Char name[20]; //歌曲名 Char author[20]; //作者 Char singer[20]; //演唱者
Char pub_date[6]; //发行年月(yyyymm) }SI;
(1) 数据输入模块
把歌曲信息写入文件。 (2) 数据删除模块
采用基本的查找算法,查找歌曲信息文件,如果是要删除的歌曲,则舍弃改信息。否则重新写入文件。
(3) 信息浏览模块
读歌曲信息文件,显示输出。 (4) 信息查询模块
通过菜单选择查询字段:歌曲名 作者 演唱者。 然后采用基本查找算法在歌曲信息文件中查找,如果找到,则输出;否则输出“对不起,没有您要找的歌曲信息!”。 (5) 信息分组显示模块
选择按作者分组显示歌曲信息,用fread或fscanf把歌曲信息文件中的信息读取到临时变量中(临时变量数据结构可以采用歌曲信息结构体数组),采用排序算法(冒泡、插入、选择等)把歌曲信息按照作者排序,然后输出。
十、交通处罚单管理系统 1、 需求分析
交通处罚单信息用文件存储,因而要提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。 2、 总体设计
整个管理系统被设计为信息输入模块、信息删除模块、信息浏览模块、信息查询模块和信息统计模块。
3、 详细设计
数据结构采用结构体,设计交通处罚单结构体: Struct TranficPunishBill {
Char carNo[10]; //车牌号 Char driverNo[20]; //驾照号
Char policeNo[10]; //开单交警号码 Char billNo[20]; //处罚单号码
Char time[12]; //处罚时间(yyyymmddhhmm,年月日时分) }TPB;
(1)主函数提示用户选择功能:输入 删除 浏览 查询 统计 (2)信息输入模块
把处罚单信息写入处罚单信息文件。 (3)信息删除模块
输入处罚单号码,然后在处罚单信息文件中查找该条处罚单,删除之。具体删除操作:打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。 (4)信息浏览模块
读处罚单信息文件,输出记录。 (5)信息查询模块
通过菜单选择查询字段:车辆 驾驶员 开单交警, 分别按照车牌号、驾照号、开单交警号采用基本的查找算法查找交通处罚单信息文件,如果找到相应得记录则输出处罚单信息,否则输出“您所查找的信息不存在!”。 (6)信息统计模块
提示输入驾驶员的驾照号和时间段。设置一个计数器,初始化为0。采用基本算法查找交通处罚单信息文件,比较驾照号,如果驾照号匹配,再看处罚单时间是否出于查询时间段内,如果是,则计数器加1,并输出该处罚单号。文件查找结束后,输出计数器的值。
十一、学生证的管理系统 1、 需求分析
学生证信息采用文件存储,因而要提供文件的输入输出操作;给定学号或班号,做相应得操作,要提供查找操作;显示信息要提供显示操作;修改和删除信息要提供文件的修改和删除操作;提供一些统计各类信息的功能要实现统计操作;另外提供键盘式选择菜单以实现功能选择。 2、 总体设计
整个管理程序被设计为数据输入模块、数据查找模块、数据修改模块、数据删除模块和数据统计模块。
3、 详细设计
数据结构采用结构体,设计学生证信息结构体: Struct studentCard {
Char name[10];
Int sex; //0表示男,1表示女 Char stuNo[10]; //学号 Int classNo; //班号 …… //其他信息 }StuCard; (1)主函数
主函数中,显示功能菜单:信息输入(1) 信息查找(2) 信息修改(3) 信息删除(4) 信息统计(5)
按相应的数字键则进入相应的计算模块。 (2)数据输入模块
输入学生的学生证信息,把该信息以追加的方式写入学生证信息管理文件。 (3)数据查找模块
进入该模块,首先显示提示菜单:按学号查找(1) 按班级查找(2)
按学号查找,则提示输入学号,然后采用基本查找算法(顺序查找)在学生证信息文件中查找学号字段,当找到该记录时,则输出该学生信息,停止继续查找。
按班级查找,则提示输入班级班号,然后采用基本查找算法(顺序查找)在学生证信息文件中查找班号字段,如果班号匹配,则输出该学生信息,直到文件结束。 (4)数据修改模块
在主菜单中选择(3),则进入数据修改模块。屏幕上提示输入要修改的学生学号。输入学号后,则采用基本查找算法找到该学生信息,修改之。 (5)数据删除模块
与数据修改模块相似,只是找到相应的学生信息后删除,即不再写入文件。 (6)数据统计模块
提供对班级学生数、女生人数、男生人数的统计。通过菜单选择统计字段。建立一个计数器,初始化为0。例如统计班级学生数,则提示输入班号,然后查找学生证信息文件,比较班号,如果匹配,则计数器加1,当文件结束后,输出计数器的值。女生人数和男生人数的统计与此类似。
十二、学生成绩管理系统 1、 需求分析
学生纪录用文件存储,因而要提供文件的输入输出操作;要实现插入一个新的学生纪录,因而要提供文件的插入操作;要实现学生纪录得修改和删除,以及登记成绩和修改成绩,因而要提供文件纪录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外要提供键盘式选择菜单以实现功能选择。 2、 总体设计
整个成绩管理系统设计为数据插入模块、数据修改模块、数据删除模块、成绩登记模块、成绩修改模块、数据浏览模块、成绩统计模块、成绩表查看模块。 3、 详细设计
数据结构采用结构体,设计学生纪录结构体: Struct studentRecord {
Char stuNo[10]; //学号 Char name[20]; //姓名 Int age; //年龄 Float math; //数学
正在阅读:
高级程序语言课程设计题及参考资料new11-03
2005年初级经济师房地产经济专业知识与实务真题-中大网校08-18
行业研究报111-17
公司近三年财务报表分析报告01-15
2022秋高中化学人教版选修4达标训练:第三章第一节弱电解质的电04-05
公司各职务岗位职责03-05
Linux平台WEB服务器搭建07-28
双嘴气球充气泵项目可行性研究报告(发改立项备案+2013年最新案05-03
清晨的音乐家作文600字07-11
解析垂直化电商平台运营模式07-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 参考资料
- 高级
- 语言
- 课程
- 程序
- 设计
- new