首页 > 编程语言 >C/C++C/C++语言课程设计参考题目[2023-06-25]

C/C++C/C++语言课程设计参考题目[2023-06-25]

时间:2023-06-25 13:23:57浏览次数:51  
标签:25 课程设计 删除 文件 信息 查询 查找 C++ 模块

C/C++C/C++语言课程设计参考题目[2023-06-25]

《高级程序设计技术综合课程设计》
C/C++语言课程设计参考题目

目录
信息管理类 1

  1. 工资管理系统 1
  2. 职工工资信息管理系统 2
  3. 职工工资管理系统 2
  4. 院职工工资管理系统 3
  5. 公司职工工资管理系统 3
  6. 工资纳税计算系统 3
  7. 校际运动会管理系统 4
  8. 学生学籍信息管理系统 6
  9. 学生学籍管理系统 8
  10. 学生籍贯信息记录簿系统 8
  11. 学生信息管理系统 8
  12. 学生管理系统 9
  13. 班级档案管理系统 9
  14. 学生选修课程系统 9
  15. 学生证的管理系统 11
  16. 学生成绩管理系统 12
  17. 大学生成绩管理系统 13
  18. 中学生成绩管理系统 13
  19. 小学生成绩管理系统 13
  20. 班级学生成绩统计管理 14
  21. 学生成绩管理分析系统 14
  22. 学生成绩管理与分析系统 15
  23. 班级成绩管理系统 15
  24. 学生成绩记录簿管理 15
  25. 学生综合测评系统 16
  26. 学生考勤系统 16
  27. 班级花名册维护 16
  28. 课堂随机点名程序 16
  29. 简单的英文词典排版系统 17
  30. 简单的行编辑器 17
  31. 文章编辑器 17
  32. 书店存货清单系统 18
  33. 图书信息管理系统 18
  34. 图书借阅管理系统 19
  35. 图书馆管理系统 20
  36. 通讯录管理系统1 20
  37. 通讯录管理系统2 21
  38. 手机通信录管理系统 22
  39. 学生通讯录管理系统 23
  40. 小型通讯录程序 23
  41. 投票程序 23
  42. 产品销售管理系统 24
  43. 销售便条管理系统 26
  44. 商店销售管理系统 27
  45. 飞机订票系统 27
  46. 飞机航班订票系统 28
  47. 航班信息管理系统 28
  48. 火车订票系统 28
  49. 职工信息管理系统 28
  50. 人事档案管理系统 29
  51. 职工档案管理系统 31
  52. 实验设备管理系统 31
  53. 设备管理系统 32
  54. 银行卡管理系统 32
  55. 仪器仪表管理系统 33
  56. 服装销售系统 34
  57. 歌唱比赛评分系统 36
  58. 歌手比赛系统 37
  59. 杂志订阅管理软件 37
  60. 机房机位预约模拟 38
  61. 机房收费管理系统 39
  62. 学生计算机机房管理系统 39
  63. 停车场管理系统 40
  64. 建筑工地信息管理 41
  65. 电影俱乐部会员管理 42
  66. 会员卡计费系统 44
  67. 歌曲信息管理 44
  68. 交通处罚单管理 45
  69. 客房管理系统 46
  70. 物资管理系统 46
  71. 职工工作量统计系统 47
  72. 物业费管理系统 47
  73. 车票管理系统 48
  74. 保安值班安排系统 48
  75. 仓库货物管理系统 49
  76. 超市结账系统 49
  77. 学院教学信息管理系统 49
  78. 酒店房间登记与计费管理系统 49
  79. 银行存取款管理系统 50
  80. 商品订购系统 50
  81. 超市销售业绩信息管理系统 50
  82. 高速公路计费系统 52
  83. 抗震救灾药品信息管理系统 52
  84. 公交线路查询系统 53

信息管理类
本次课程设计题目全部采用信息管理系统类课题

1. 工资管理系统

(1)需求分析
工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。
(2)总体设计
整个系统可以分为信息输入、信息添加、信息浏览、信息排序、信息查询和信息统计模块。
(3)详细设计
工资信息采用结构体数组:

Struct Salary_Info
{ 
   int Card_No;                   //工资卡号
   Char name[20];                 //姓名
   int month;                     //月份
   float Init_Salary;               //应发工资 
   float Water_Rate;               //水费
   float Electric_Rate;             //电费
   float tax;                     //税金
   float Final_Salary;             //实发工资
}SI[MAX];  //SI[MAX]中每个数组元素对应一个职工工资信息

1)主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2)输入模块
按照工资卡号、姓名、月份、应发工资、水费、电费的顺序输入信息,税金和实发工资根据输入的信息进行计算得到,这些信息被录入到文件中。
文件操作函数:fopen,fwrite,fclose.
税金的计算:

if(应发工资<=800)
        税金=0;
else if (应发工资>800&&应发工资<=1400)
   税金=(应发工资-800)*5%;
else if (应发工资>1400)
   税金=(应发工资-1400)*10%;
实发工资=应发工资-水费-电费-税金。

3)添加模块
增加新的职工工资信息,从键盘输入并逐条写到原来的输入文件中,采用追加而不是覆盖的方式(以”ab”方式打开文件)。
4)浏览模块
分屏显示职工工资信息,可以指定10个1屏,按任意键显示下一屏。通过菜单选择按照工资卡号还是姓名浏览。如果按照卡号浏览,则显示的记录按照卡号升序输出;按照姓名浏览则按照字典序输出(调用排序模块的排序功能)。
5)排序模块
排序模块提供菜单选择,实现按照工资卡号升序、实发工资降序以及姓名字典序排序。排序方法可以选择冒泡排序、插入排序、选择排序等。
6)查询模块
实现按照工资卡号和姓名的查询,采用基本的查找方法即可。
7)统计模块
输入起止月份,按照职工卡号和月份查询记录,把起止月份之间的实发工资金额累加。
附加:思考在数据输入及添加模块尾部添加排序功能,使得文件中的数据按照卡号排序。这样在查询模块和统计模块可以采用二分查找以提高效率。

2. 职工工资信息管理系统

(1)信息描述
职工基本信息:如工资卡号、身份证号、姓名、性别、年龄、工龄、部门、技术职称、技术职称编号、家庭电话号码、手机号码等。
工资基础信息:技术职称编号、技术职称、基本工资、职务工资、各种补助等。
费用扣除信息:工资卡号、水费、电费、清洁费(5元/月)闭路电视费(10元/月)等。
工资单数据:工资卡号、姓名、应发工资、水费、电费、清洁费、闭路电视费、税金、实发工资、特别奖励。其中:税金计算方法为:

应发工资<800元,税金=0;
800<应发工资1400元, 税金=(应发工资-800)5%
应发工资>1400元, 税金=(应发工资-1400)10%

(2)功能描述
1) 职工基本信息录入
2.) 对录入的职工基本信息进行修改
3) 职工信息的插入
4) 职工信息删除
5) 查询信息
6)计算工资和税金
3. 职工工资管理系统
功能设计要求

  1. 输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
  2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
  3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
    4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
  4. 删除记录:可删除数据文件中的任一记录。
  5. 统计: (A)计算各项工资平均工资及总工资, (B)统计符合指定条件(如职工工资前三项之和在3000元以上、30002000元、20001000元) 以内的工资职工人数及占总职工人数的百分比。(C)按字符表格形式打印全部职工工资信息表及平均工资(包括各项总的平均工资)。
    7.保存数据文件功能。
    例如:职工工资信息表
ID号 姓名 基本工资 职务工资 津贴 医疗保险- 公积金- 总工资 
01 	  张望 1286 	794 	198 	109 	135 	2034 
02 	李明 	1185 	628 	135 	94 		114 	1740 
03 王小民 	895 	438 	98 		64 		73 		1294 
04 张效章 	1350 	868 	210 	116 	150 	2162 
05 彭山 	745 	398 	84 		61 		68 		1098 
        
各项平均工资 1092.2 625.2 145 88.8 108

4. 院职工工资管理系统

功能:院职工工资管理系统应包含职工的全部信息。每个职工是一条记录,包括姓名、性别、出生年月、年龄、婚姻状况、家庭住址、职称、工资级别情况等。本系统重点进行工资管理,系统登陆后可计算职工工资总额和平均工资,可按工资进行排序,并能够找出工资级别相同的职工名单。
要求:
(1)完成最低要求:建立一个文件,包括一个院的20名职工的必要信息,能对文件进行补充、修订、删除,并能进行统计计算。
(2)进一步要求:完成包括两个院职工的工资管理系统。
5. 公司职工工资管理系统
每个职工的信息为:职工号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。原始数据需保存到磁盘文件中。
要求实现:
(1) 输入职工信息
(2) 插入(修改)职工信息;
(3) 删除职工信息;
(4) 按姓名浏览职工工资信息:
6. 工资纳税计算系统
个人所得税每月交一次,底线是1600元/月,也就是超过了1600元的月薪才开始计收个人所得税。个人所得税税率表一(工资、薪金所得适用)

级数----------全月应纳税所得额----------税率(%)
1--------------不超过500元的--------------------------5
2----------超过500元至2000元的部分------------10
3----------超过2000元至5000元的部分----------15
4----------超过5000元至20000元的部分---------20
5----------超过20000元至40000元的部分-------25
6----------超过40000元至60000元的部分-------30
7----------超过60000元至80000元的部分-------35
8----------超过80000元至100000元的部分------40
9----------超过100000元的部分---------------------45

表中的应纳税所得额是指以每月收入额减除1600元后的余额。
例如:计算为:2500-1600=900
应纳个人所得税额=500×5%+400×10% =65
再比如:我们用一个大额工资计算,25000元
应纳税所得额=25000-1600=23400
应纳个人所得税税额=500×5%+1500×10%+3000×15%+15000×20%+3400×25%=4475
要求:计算某单位各种类型职工的纳税金额,能够增加、修改、删除和查询职工的纳税情况。

7. 校际运动会管理系统

校际运动会管理系统。设有n个学校参加校际运动会,共有男子竞赛项目数m,女子竞赛项目数w。每个学校可以参加所有竞赛项目,也可以只参加部分竞赛项目,每个学校对每个项目的参赛运动员不能超过4人,每个运动员最多只能参加3项单项比赛,团体赛不受限制。
各项目名次取法有如下几种:用户自定义:(各名次权值由用户指定)
① 参赛人数超过6人,取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;
②参赛人数不超过6人,取前3名:第1名得分 5,第2名得分 3,第3名得分2;
③ 团体项目的名次取法和上面相同,但分数加倍。
功能要求 :
⑴ 运动员报名登记,以学校为单位进行运动员报名登记,登记的限制要求按问题描述的要求;
⑵ 参赛信息查询,查看参赛学校信息和比赛项目信息;所有信息记录完毕后,用户可以查询各个学校的比赛成绩
⑶ 竞赛检录,每项比赛开始前完成参赛运动员的检录;
⑷由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。竞赛成绩登记,填写比赛名次,然后根据竞赛检录的运动员人数和上述的记分方式自动完成各学校的成绩登记并实时生成各学校的团体总分;
⑸ 比赛成绩查询,可以按竞赛项目、参赛学校、参赛运动员查看比赛成绩;
⑹ 竞赛成绩排序,以学校为单位,按总成绩的高低,分别排序输出每个学校的总成绩、男子总成绩、女子总成绩;
⑺ 系统以菜单方式工作,设计一个菜单,至少具有上述操作要求的基本功能。
(1)需求分析
要记录比赛结果,可以查看参赛学校的信息和比赛项目信息,因而要实现文件的输入和输出功能;用户可以查询各个学校的比赛成绩,查看参赛学校信息和比赛项目信息等,因而要提供查找和显示功能;另外还应该提供键盘式选择菜单以实现功能选择。
(2)总体设计
系统被设计为信息输入模块、比赛结果录入模块和查询模块三个模块。
(3)详细设计
数据结构采用结构体数组,包括学校、项目、运动员三个结构体。

struct athlete
{
  char name[20];   //姓名
  int age;         //年龄
  char From[20];  //来自学校
} Athlete;   //运动员结构体
struct item
{
  char name[20];   //项目名
int* weight;     //在运行时根据用户的输入动态分配空间(各项目名次取法不同,weight所指空间依次存放第一名得分、第二名得分等)
Athlete* player;  //指向获奖运动员信息的指针
}Item;   //项目结构体
struct university
{
   char name[20];  //学校名
   Item *item;     //竞赛项目指针,根据用户输入动态分配空间
   int score;       //学校得分
}Uni;  //学校结构体
Item TotalItem[ItemNum];   //项目结构体数组
Uni AllUni[UniNum];      //学校结构体数组

1)主函数
提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2)信息输入模块
输入参赛学校总数,M-男子参赛项目数,W-女子参赛项目数。
把参赛学校信息和项目信息以及运动员信息录入文件(fwrite),建立三个文件。
例如第i个项目:

scanf(“%s”,TotalItem[i].name);   //输入项目名
Ch=Getchar();   //通过输入1,2,3来选择项目名次取法
switch(ch)
{
   case ‘1’: n=5;break;
   case ‘2’: n=3; break;
   case ‘3’: printf(“取前几名?”,&n); break;
   default: break;
}
TotalItem[i].weight=new int[n];
TotalItem[i].athlete=NULL;  //指向获奖运动员信息,初始化为空

然后写入文件:fp=fopen(“item.txt”,”wb”);
fwrite(&TotalItem[i],sizeof(Item),1,fp);
学校信息和运动员信息的录入与此类似。
2)比赛结果录入模块
通过菜单选择进入比赛结果录入模块,更改TotalItem[i].athlete的值,并把获奖名单保存到项目文件中。项目文件格式为:项目名 项目权值(按照第一名、第二名…给出权值) 获奖运动员信息(按照第一名、第二名…给出)
3)查找模块
查找学校信息文件,生成团体总分报表;用基本查找算法查询参赛学校信息(按照校名查找)或者比赛项目信息(按照项目名)。

8. 学生学籍信息管理系统

使用下面的数据,用C/C++设计一个简单的学籍管理系统,实现出最基本的功能。
学生基本信息文件(A.TXT)及其内容:A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成

学号   姓名   性别    宿舍号码  电话号码
01    张成成  男    501     87732111
02    李成华  女    101     87723112
03    王成凤  女    101     87723112
04    张明明  男    502     87734333
05    陈东    男    501     87732111
06    李果    男    502     87734333
07    张园园  女    102     87756122
…     …     …     …   …   …
学生成绩基本信息文件(B.TXT)及其内容:
学号 课程编号 课程名称  学分 平时成绩  实验成绩   卷面成绩   综合成绩  实得学分
01    A01    大学物理    3    66        78         82      
02    B03    高等数学    4    78        -1         90
01    B03    高等数学    4    45        -1         88
02    C01    VF         3    65        76         66
…     …    …      …      …       …     …    …      …      …

(1)功能要求及说明:
1)数据录入功能:对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。综合成绩、学分由程序根据条件自动运算。
综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩30%+卷面成绩70%; 如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩15%+实验成绩.15%+卷面成绩70%。
实得学分的计算:采用等级学分制。
综合成绩在90-100之间 ,应得学分=学分
100%
综合成绩在80-90之间 ,应得学分=学分80%
综合成绩在70-80之间 ,应得学分=学分
75%
综合成绩在60-70之间 ,应得学分=学分60%
综合成绩在60以下 ,应得学分=学分
0%
2)查询功能:分为学生基本情况查询和成绩查询两种
A:学生基本情况查询:
A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:成绩查询:
B1:输入一个学号时,查询出此生的所有课程情况,格式如下:

学    号:xx       姓    名:xxxxx
课程编号:xxx      课程名称:xxxxx    综合成绩:xxxx   实得学分: xx
课程编号:xxx      课程名称:xxxxx    综合成绩:xxxx   实得学分: xx
课程编号:xxx      课程名称:xxxxx    综合成绩:xxxx   实得学分: xx
…     …       …       …     …      …      …      …     …
共修:xx科,实得总学分为: xxx

(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
(1)需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
(2)总体设计
整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。
(3)详细设计
设计学生基本信息和学生成绩基本信息结构体数组。

Struct 
{
  int stuNo;        //学号
  char name[20];   //姓名
  char sex[2];     //性别
  int  domNum;   //宿舍号 
  int  tel;        //电话号码 
}StuInfo;   //学生基本信息结构体
Struct
{
  int stuNo;     //学号
  char courseNo;  //课程编号
  char courseName; //课程名称
  int creditHour; //学分
Int triGrade; //平时成绩
Int experiGrade; //实验成绩
Int examGrade; //卷面成绩
Float totalGrade; //综合成绩
Float finalCreHour; //实得学分
}StuGraInfo; //学生成绩基本信息结构体

1)数据录入模块
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。综合成绩和实得学分通过计算得到。
2)查询模块
通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,按照基本查找算法查找A.TXT,然后把查找结果输出若选择后者,则先在A.TXT中查找学号对应的姓名,再在B.TXT中查找该学生的课程情况,并统计科目和实得总学分,输出结果。(fread和查找算法的应用)
3)删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在A.TXT和B.TXT中查找该生信息,删除之;或者输入学生的姓名,先在A.TXT中得到该生的学号,删除该生信息,再在B.TXT中删除该学号对应的信息。注意:C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。
4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。首先要读文件(fread)。

9. 学生学籍管理系统

用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
功能要求:
1) 系统以菜单方式工作。
2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
3) 删除已知学号的学生信息;
4) 查找已知学号的学生信息;
5) 按学号,专业输出学生籍贯表。
6) 查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。

10. 学生籍贯信息记录簿系统

编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能:
1)创建信息链表并以磁盘文件保存;
2)读取磁盘文件并显示输出所有学生的籍贯信息;
3)按学号或姓名查询其籍贯;
4)按籍贯查询并输出该籍贯的所有学生;
5)能添加、删除和修改学生的籍贯信息 
6)显示输出四川籍和非四川籍学生的信息并可分别存盘。

11. 学生信息管理系统

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
1)学生信息录入功能(学生信息用文件保存)---输入
2)学生信息浏览功能---输出
3)查询、排序功能---算法
1)按学号查询
2)按姓名查询
4)学生信息的删除与修改(可采用链表结构)

12. 学生管理系统

功能:学生管理系统应包含学生的全部信息。每个学生是一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。本系统能够按专业班级或学号查找学生,并显示相关学生情况。包括:主控程序、学生档案管理子系统、学生成绩管理子系统、学生宿舍管理子系统
要求:
(1)实用,各模块自成系统
(2)完成最低要求:建立一个文件,包括同一个专业10个学生的必要信息,能对文件进行补充、修订、删除,并能进行查找。
(3)进一步要求:完成包括整个自动化院所有专业的系统。

13. 班级档案管理系统

对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。
(2)本系统显示这样的菜单:
请选择系统功能项:
a 学生基本信息录入
b 学生基本信息显示
c 学生基本信息保存
d 学生基本信息删除
e 学生基本信息修改(要求先输入密码)
f 学生基本信息查询
1)按学号查询
2)按姓名查询
3)按性别查询
4)按年龄查询
g. 退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生基本信息保存到文件中。
(5)进入系统之前要先输入密码。

14. 学生选修课程系统

假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:
1)系统以菜单方式工作
2)课程信息录入功能(课程信息用文件保存)--输入
3)课程信息浏览功能--输出
4)课程信息查询功能--算法
查询方式
按学分查询
按课程性质查询
5)假设学生选修其中某些课程,要求显示这些课程的相关信息,某门课程学生选修情况
(1)需求分析
系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于课程信息要用文件保存,因而要提供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作。
(2)总体设计
整个系统可以设计为信息输入模块、信息查询模块以及信息浏览模块。
(3)详细设计
数据结构采用结构体,这里采用课程信息结构体和学生选课信息结构体。

 Struct 
{
  Char courseCode[10];   //课程编号
  Char courseName[20];  //课程名称
  Char courseType[10];  //课程类别
  Int  totalPeriod;      //总学时
  Int  classPeriod;     //授课学时
  Int  experiPeriod;    //上机学时
  Float creditHour;    //学分
  Int  term;         //开课学期
}CourseInfo[N];   //课程信息结构体
Struct
{
  Int stuNo;  //学号;
  Char courseCode[10];   //课程编号
}StuCourInfo[N]; //学生选课信息结构体

1) 信息输入模块
从键盘输入课程信息和学生选课信息,写入文件。(fwrite, fprintf)
2)信息浏览模块
分屏显示课程信息,每屏10条课程记录,按任意键继续。从文件中读数据(fread,fscanf),然后再显示。
3)信息查询模块
通过菜单选择查询字段,可以按照课程编号、课程名称、课程性质、开课学期、学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。
可以通过菜单选择课程编号,在学生选课信息文件中查询该课程学生选修情况。

15. 学生证的管理系统

(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,当文件结束后,输出计数器的值。女生人数和男生人数的统计与此类似。

16. 学生成绩管理系统

(1)需求分析
学生纪录用文件存储,因而要提供文件的输入输出操作;要实现插入一个新的学生纪录,因而要提供文件的插入操作;要实现学生纪录得修改和删除,以及登记成绩和修改成绩,因而要提供文件纪录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外要提供键盘式选择菜单以实现功能选择。
(2)总体设计
整个成绩管理系统设计为数据插入模块、数据修改模块、数据删除模块、成绩登记模块、成绩修改模块、数据浏览模块、成绩统计模块、成绩表查看模块。
(3)详细设计
数据结构采用结构体,设计学生纪录结构体:

Struct studentRecord
{
   Char stuNo[10];  //学号
   Char name[20];  //姓名
   Int  age;       //年龄
   Float math;     //数学
   Float English;  //英语
   Float physics;  //物理
}SR;

1)主函数输出提示菜单:插入学生纪录 修改学生纪录 删除学生纪录 登记成绩
修改成绩 浏览学生纪录 查看总成绩 查看成绩表
2)数据插入模块
采用追加的方式用fwrite或fprintf把学生成绩信息写入学生成绩信息文件。
3)数据修改模块
通过菜单选择修改学生纪录,用fopen打开该文件,从文件中读一条记录,判断是否要修改,如果是,则修改后重新写入文件;否则直接重新写入文件,读下一条记录。
4)数据删除模块
通过菜单选择删除学生纪录,用fopen打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。
5)成绩登记模块
类似数据修改模块,只是修改字段为各个科目的成绩。
6)成绩修改模块
参考数据修改模块。
7)数据浏览模块
用fscanf或fread读取学生成绩信息文件,分屏输出,每屏10条纪录。
8)成绩统计模块
用fscanf或fread从学生成绩信息文件中读取一个学生纪录,计算该学生的总成绩(简单的成绩相加),输出,然后读取下一条纪录。
9)成绩表查看模块
建立结构体数组

Struct 
{
   SR record;     //学生纪录
   Float total;  //总成绩
}stu[N];

从学生成绩信息文件中读取各个纪录,total中存放计算得到的总成绩。然后采用排序算法(冒泡、插入、选择等)对数组按照总成绩进行排序。最后顺序输出。

17. 大学生成绩管理系统

功能:成绩管理系统包含了学生的全部信息,每个学生是一个记录,包括学号,姓名,性别,各科成绩等。系统可完成:
信息录入——录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等);
信息查询——输入学号,查询学生各门课程的成绩及所有课程的平均成绩;查询所有学生各门课程的成绩,并按可选的自定义规则进行排序;
信息删除与修改——输入学号,删除该学生的成绩信息、输入学号,查询并显示出该学生的成绩信息,并在此基础上进行修改;
信息保存——将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中。
要求:
1)完成最低要求:建立一个文件,包括10个学生的必要信息,能对文件进行补充,修订,删除,并能进行统计计算;
2)进一步要求:完成包括一个班,一个年级乃至一个系的系统。

18. 中学生成绩管理系统

学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:
1) 能按学期、按班级完成对学生成绩的录入、修改
2) 能按学期_班级_科目查看学生的成绩,求学生的总分及平均分。
3) 能查询学生成绩,不及格科目及学生名单
4) 能按班级输出学生的成绩单
要求:使用二进制文件方式存储数据,系统以菜单方式工作

19. 小学生成绩管理系统

现有学生成绩信息,内容如下:

姓名	学号	语文	数学	英语
张明明	01	67	78	82
李成友	02	78	91	88
张辉灿	03	68	82	56
王露	04	56	45	77
陈东明	05	67	38	47
…	…	…	…	…

请用C/C++编写一系统,采用菜单和文件实现学生信息管理,软件的入口界面应包括如下几个方面:
功能要求:
1)信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息
(2)信息查询:
要求:查询时可实现按姓名查询、按学号查询
(3)成绩统计:
要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
4)排序:
能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)

20. 班级学生成绩统计管理

(1) 输入一个班级的学生的基本信息(包括学号,姓名,性别,5门课程成绩)。
(2) 按姓名或者学号查找、修改、删除和保存各个学生的信息。
(3) 计算每个学生各门功课总分和平均分,按学号或总分排序输出每个学生的基本信息及总分、平均分和名次。
(4) 计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩。
(5) 显示每门科目中,成绩在90分以上的学生信息,以及每门科目中不及格的学生信息。
(6) 用菜单进行管理
(7) 只有正确输入用户名密码才能使用此系统。
(8) 所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

21. 学生成绩管理分析系统

有关该系统基本信息的描述,如:学号、姓名、系别、班级和所选科目及各科成绩等。
功能描述
(1) 学生基本信息及成绩所选科目成绩的录入。
(2) 基本信息的查询(分系、班级;分科目)与修改。
(3) 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);
(4) 对所开课程的成绩分析(求其平均成绩,最高分和最低分);
(5) 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)
(6) 再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组

22. 学生成绩管理与分析系统

问题描述:
设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。
实现要求:
实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。
⑴ 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩 ⑵ 显示全部学生各科成绩信息;
⑶ 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);
⑷ 统计各科各分数段人数;
⑸ 按学号或姓名查找并显示某个学生的各科成绩;
⑹ 按课程成绩或总分由高到低排序显示;
⑺ 更新某个学生的基本信息或课程成绩;
⑻ 设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。

23. 班级成绩管理系统

对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:
(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
(2)本系统显示这样的菜单:
请选择系统功能项:
a、成绩录入
b、成绩显示
c、成绩保存
d、成绩排序
e、成绩修改(要求先输入密码)
f、成绩统计
1)显示每门课程成绩最高的学生的基本信息
2)显示每门课程的平均成绩
3)显示超过某门课程平均成绩的学生人数
g、退出系统
3)执行一个具体的功能之后,程序将重新显示菜单。
4)将学生成绩保存到文件中。

24. 学生成绩记录簿管理

编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:
1)创建一个文本文件用来记录学生信息,输入至少30名学生的信息,保存在文本文件中;
2)将文本文件中的数据读出,按学号或姓名查询成绩;
3)能添加成绩记录;
4)能修改指定姓名或学号的学生的成绩;
5)显示输出60分以下、6079、8089、90分以上各分数段的学生信息,显示及格率和平均分,显示最高分和最低分,显示所有学生的排名(不能改变学生的学号顺序);
6)以上信息能保存在原文本文件中。

25. 学生综合测评系统

每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。原始数据需保存到磁盘文件中。
(1) 输入学生信息、并存储到文件中。
(2) 插入(修改)同学信息:
(3) 删除同学信息:
(4) 浏览学生信息:输入学号或其他信息,即读出所有数据信息,并显示出来
学生数据处理:
(1) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语) 计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。
(2) 学生测评数据输入并计算综合测评总分及名次。
提示:综合测评总分=(考试成绩)0.6+(同学互评分)0.1+品德成绩0.1+任课老师评分0.2。

26. 学生考勤系统

功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。
要求:
(1) 成最低要求:建立一个文件,包括同一个班的10个学生的必要信息,能对文件进行补充、修订、删除。
(2) 进一步要求:完成包括至少4个班的考勤系统。

27. 班级花名册维护

要求能够增加、删除、修改学生的信息。程序能够读入一个班级花名册或是自建一个班级花名册。对一个班级的任何学生的修改操作最后都应该反映在保存在硬盘上的班级名册中。

28. 课堂随机点名程序

要求能完全实现我们的点名程序已有的功能。即事先从教务处网站上下载某班的学生名单并存盘备用。你的程序能够以某种方式有选择性的加载某个班的存盘文件并把相应的学生信息读入内存,然后以随机的方式来查找某个学生的信息并把它显示出来以实现点名。

29. 简单的英文词典排版系统

(1)需求分析
运行结果以文本形式存储,因而要提供文件的输入输出操作;检查重复单词要提供查找操作;按A-Z的顺序排版,要提供排序操作;添加新单词并重新排版要提供插入操作。另外通过键盘式菜单实现功能选择。
(2)总体设计
整个系统被设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。
(3)详细设计
数据结构采用指针数组或二维数组:char* dictionary[N]; 或 char dictionary[N][20]。其中N是宏定义#define N 100 (表示单词个数)
1)单词录入模块
输入一个单词,存放在一个临时字符数组中,以空格或回车表示单词的结束(这也是默认操作),然后换行输出刚刚输入的单词。采用插入排序算法的思想把该单词插入单词数组中,不同的是如果两个单词相同则不插入。
2)文件存储模块
采用fwrite或fprintf把单词数组输入到文件中。
3)单词浏览模块
采用fread或fscanf把单词从文件中读出,然后输出。

30. 简单的行编辑器

要求:设置一个简单的行编缉器,每行以回车结束。
数据以文件形式存储
编辑器具有查找、替换、修改数据的功能。
问题分析:
采用二维数组处理,设立二维数组edit[M][N]。M行,每行可存N个字符。用getchar()输入,单词之间用空格隔开(空格也会作为字符存入),当捕获回车字符(‘\n’)时则换行即M++。
采用文本形式存储,只需要提供写文件操作即可(fprintf,fwrite的用法)。
查找、替换、修改操作对文件进行。文件的查找、替换和修改操作可以参考前面的介绍。

31. 文章编辑器

任务:输入一页文字,程序可以统计出文字,数字,空格的个数。
静态存储一页文章,每行最多不超过80个字符,共n行;
要求:(1)分别统计其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
存储结构的形式和范围:可以输入大写,小写的英文字母,任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出“全部字母数”,“数字个数”,“空格个数”,“文章总字数”;
(3)输出删除某一字符串后的文章;

32. 书店存货清单系统

书店通常使用个人电脑设置一个清单来管理书籍的存货情况(从文件读取数据,能够实现键盘输入数据),该清单记录每本书籍的书名,作者,出版社,在清单中的位置等信息。当顾客想要买某本书时,只要输入书籍的名称和作者,系统就会显示该书籍是否在清单中,如果书籍在清单中,系统会显示书籍的详细信息以及库存数量,如果不在清单中,也会显示相应的提示信息。如果顾客想买的书籍数量在库存的范围内,系统会计算总价格并显示出来,否则,会提示“所需数量不在库存范围内”。
根据以上的分析,编程要求:
1) 用结构体自行定义几本书籍,要求包括书籍名称,作者,出版社,出版日期,价格,在目录中的位置;
2) 当从键盘输入某本书的名称和作者姓名,如果能查询到则显示该书籍的所有信息,并提示“请输入所需数量”,如果所需数量在库存范围内,则显示总价,否则,显示“所需数量不在库存范围内”,接着继续提示顾客是否还想买其他书籍,如果输入“y”或“Y”表示继续输入下一本书的名称和作者姓名,进行下一轮查询;如果不能查询到该书籍,则显示“谢谢,再见!”,依次类推,不断循环。

33. 图书信息管理系统

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作
2)图书信息录入功能(图书信息用文件保存)--输入
3)图书信息浏览功能--输出
4)图书信息查询功能--算法
查询方式: 按书名查询/ 按作者名查询
5)图书信息的删除与修改
(1)需求分析
系统以菜单方式工作,提供键盘式选择菜单以实现功能选择;图书信息采用文件保存,因而要提供文件的输入输出操作;要实现图书信息的浏览功能,则要提供信息显示操作;要实现图书信息查询功能,则要提供查找操作(提供按书名、作者名查询两种查询方式);要实现图书信息删除、修改功能则要提供文件记录的删除、修改操作。
(2)总体设计
整个系统被设计为图书信息输入模块、图书信息浏览模块、图书信息查询模块和图书信息删除与修改模块。
(3)详细设计
数据结构采用结构体,设计图书信息结构体:

Struct 
{
  Char loginNo[10];    //登录号
  Char name[20];      //书名
  Char author[20];     //作者名
  Char classNo[10];    //分类号
  Char publisher[10];   //出版单位
  Char pubTime[20];   //出版时间
  Float price;         //价格
}bookInfo;   //图书信息结构体

1)图书信息输入模块
采用fwrite或fprintf把图书信息写入图书信息文件。
2)图书信息浏览模块
分屏显示图书信息,每屏10条记录,按任意键显示下一屏。读文件(采用fread或fscanf)然后显示即可。
3)图书信息查询模块
通过菜单选择查询方式,提供按书名查询和按作者名查询两种查询方式。采用基本查找算法即可。
4)图书信息删除与修改模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。修改操作于删除操作类似,只是判断是否是要修改的记录,如果是,则把修改后的记录写入文件,否则直接写入文件。

34. 图书借阅管理系统

图书借阅管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等
功能描述
1)新进图书基本信息的输入。
2)图书基本信息的查询。
3)为借书人办理注册。
4)办理借书手续。
5)办理还书手续
要求:使用二进制文件方式存储数据,系统以菜单方式工作
(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)数据输入模块
采用fwrite或fprintf把图书基本信息写入图书信息文件。
2)数据查询模块
通过菜单选择查询方式,提供按书名查询和按作者名查询两种查询方式。采用基本查找算法即可。
3)数据删除模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。
4)数据修改模块
办理借书手续时,先要在文件中查找要借的书的存在状态,若可以出借,则允许借出,把借书人姓名、性别和学号添加到该书的记录中,并把存在状态改为已经借出;否则,显示“抱歉,该书已借出”。办理还书手续时,在文件中查找该书的记录,然后把存在状态改为允许出借,把借书人姓名、性别和学号删除。具体修改操作可以参考删除操作。

35. 图书馆管理系统

图书数据包括:图书名称,出版编号,作者,出版社,出版日期,单价,数量,库存量,
1) 添加图书:增加新的图书,同时需检查新书的图书编号是否在原图书当中存在,若是则应取消添加并提示重新输入。
2) 查询图书:通过图书编号或图书名称查询等图书信息。
3)删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。
主要模块包括:图书管理子系统、图书借阅子系统、还书子系统、借阅人管理子系统、图书报损子系统等

36. 通讯录管理系统1

编写一个通信录管理程序,要求通信录中包括姓名,通信地址,邮政编码和联系电话,程序中可以对通信录进行插入、删除、显示、查找等操作。提示:(能实现文件的读取和保存)
数据结构:可以采用单链表存储通信数据,链表中节点数据类型示范如下:

struct node{
		char name[20];   /*姓名*/
		char address[40]; /*住址*/
      char phone[15]; /*电话*/
		long zip;  /*邮编*/
		struct node *next; /*下一个节点指针*/
};

(1)需求分析
信息记录要存放到文件中去,因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作;要实现按人名或电话号码进行查询的功能,因而要提供查找操作;另外还应该提供键盘式选择菜单以实现功能选择。
(2)总体设计
整个系统可以设计为数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块。
(3)详细设计
采用结构体数组。

Struct 
{
  Char name[20];    //人名
  Char post[20];     //工作单位
  Int  tel;         //电话号码
  Char email[20];   //email地址
}TelInfo;   //电话簿信息结构体
TelInfo telInfo[N];   //电话簿信息结构体数组

1)数据插入模块
输入数据,然后采用追加方式写文件(以”wb”方式打开文件,再用fwrite写入)。
2)数据修改模块
通过菜单选择修改姓名、电话号码。可以把要修改的姓名或电话号码存储在临时变量里面,然后读文件,找到要修改的记录,把该记录重新以新的值写入。
3)数据删除模块
删除一条记录,则输入要删除的人名,然后读文件,把文件中读出来的记录的人名与待删除的人名比较,如果不匹配,则重新写入文件;否则舍弃不再写入文件。
4)数据显示模块
采用分屏显示,每屏10条记录。用fread或fscanf读文件,输出结果。
5)数据查询模块
用基本查找算法对电话簿实现按人名或电话号码的查询(读文件,把读出记录得相应字段与输入的查询字段比较),并把结果输出。

37. 通讯录管理系统2

要求:第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。
  第二个模块——Menu()的功能是:显示英文提示选单。
  第三个模块——Quit()的功能是:退出选单。
  第四个模块——Create()的功能是:创建新的通讯录。
  第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
  第六个模块——Find()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
  第七个模块——Alter()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
  第八个模块——Delete()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
  第九个模块——List()的功能是:显示通讯录中的所有记录。

38. 手机通信录管理系统

(1)需求分析
手机通信录采用文件存储,因而要提供文件的输入输出操作;查看功能要提供显示操作;增加新数据的过程要检查是否有重复,存储空间是否已满,且录入的新数据能按递增的顺序自动进行条目编号,因而要提供查找和排序操作;要提供修改与删除和自动调整编号功能;另外还要提供键盘式选择菜单以实现功能选择。使用结构和链表等数据结构
(2)总体设计
整个系统可以设计为数据查看模块、数据添加模块、数据修改模块、数据删除模块。

(3)详细设计
数据结构采用结构体,设计通信录结构体:

Struct communicationMethod
{
  Char name[20];    //姓名
  Char tel[12];      //电话号码
  Int  type;        //分类:0表示办公类,1表示个人类,2表示商务类
  Char email[20];   //电子邮件地址
  Int num;        //条目编号
}ComMtd;

1)数据查看模块
选择此功能时,列出下列三类选择。A 办公类 B 个人类 C 商务类。当选中某类时,显示出此类所有数据中的姓名和电话号码)通过菜单选择查看信息,然后选择办公类、个人类或者商务类,则显示所选类信息列表。这是一个查找与显示的过程,在手机通信录文件中查找type类型符合的记录,输出。
2)数据添加模块
能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如
杨春 13589664454 商务类 [email protected]
当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。
首先,查看信息条数是否超过15,如果超过,则提示“通信录已满!”,返回上级菜单;否则,提示输入一条记录,将对通信录执行查找操作,查找姓名和电话号码字段,如不存在相同的记录,则用fwrite以追加方式写入文件,并给记录的条目字段赋值(在检查有无重复的过程中启动计数),否则提示“数据已经存在,请重新输入或者取消!”。
3)数据修改模块
修改通信录信息,则需要读文件,判断信息是否是要修改的信息,如果是,修改,重新写入文件;否则直接重新写入文件。选中某个人的姓名时,可对此人的相应数据进行修改。
4)数据删除模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
5)拔号功能
能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。

39. 学生通讯录管理系统

设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。
1.主要功能:
1) 能建立、修改和增删学生通讯录
2) 能够按多种方式进行查询
2.要求:界面友好,易于操作,采用二进制文件存储数据。

40. 小型通讯录程序

设计一个实用的小型通讯录程序,具有添加,查询和删除功能。由姓名,籍贯,城市、电话号码1,电话号码2,电子邮箱、QQ组成,姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。实现功能:
1)系统以菜单方式工作
2)信息录入功能
3)信息浏览功能
4)信息查询功能:可按人名或电话号码进行查询
5)信息修改功能
6)信息删除功能
7)系统退出功能

41. 投票程序

(1)需求分析
实现键盘输入投票人数和投票结果,进行统计时实现排序功能,输出结果。
(2)总体设计
该程序可以分为数据输入部分和统计部分。
(3)详细设计
采用结构体:

 Struct
{
  Char code;  //代号
  Int  score;  //得分
}Candidates[N];  //候选人结构体数组

这里#define N 3;
采用二维数组,则行方向对应一张投票,列方向对应各候选人得分。
Candidate[M][N];
1)输入部分
Char tmp[3]; //存放投票的中间变量
输入投票人数n;

  For(i=0;i<n;++i)   //投票
 {
   Scanf(“%s”,tmp);
 If(tmp[0]==tmp[1]||tmp[1]==tmp[2]||tmp[0]==tmp[2])
 Printf(”该票无效!”);
 Else
 {
      Tmp[0]号候选人加5分;
      Tmp[1]号候选人加3分;
      Tmp[2]号候选人加2分;
   }
}

2)统计部分
对候选人按照他们的得分排序(冒泡、插入、选择等),然后比较前两名得分是否相同。如果相同,则显示“重新投票”;否则显示三个候选者得分并输出“祝贺X当选冠军”,X为最高分候选者。
42. 产品销售管理系统
一家公司生产五种产品,每种产品在一个月内每周的生产数量和销售价格都要记录下来。并做以下的分析:
1) 每种产品每周的生产值和销售值;
2) 每种产品一个月的生产值和销售值;
3) 所有产品一个月内的生产值;
4) 所有产品一个月内的销售值。
下面是一个二维的表格,表格的每一行记录了五种产品分别在这一周的生产量,每一列记录了每种产品分别在四个星期中的生产量:

M11	M12	M13	M14	M15
M21	M22	M23	M24	M25
M31	M32	M33	M34	M35
M41	M42	M43	M44	M45
其中,Mij表示在第i周中第j种产品的生产量。

下面是一个二维的表格,表格的每一行记录了五种产品分别在这一周的销售量,每一列记录了每种产品分别在四个星期中的销售量:

S11	S12	S13	S14	S15
S21	S22	S23	S24	S25
S31	S32	S33	S34	S35
S41	S42	S43	S44	S45

其中,Sij表示在第i周中第j种产品的销售量。
下面是一个一维表格,表示五种产品的单价。

C1	C2	C3	C4	C5

其中,Cj表示第j种产品的单价。
根据以上内容实现输入、查询、统计和排序,编程要求:
1) 计算每种产品每周的生产值和销售值;
2) 计算所有产品每周的生产值和销售值;
3) 计算每种产品一个月内的生产值和销售值;
4) 计算所有产品生产总值和销售总值;
5) 按以下要求和格式显示:
当输入数字1,显示每种产品每周生产值和销售值;当输入数字2,显示所有产品每周的生产值和销售值;当输入数字3,显示每种产品一个月内的生产值和销售值;当输入数字4,显示所有产品生产总值和销售总值;当输入数字5,显示退出。
显示格式示例如下:
每种产品每周的生产值

Week(1)  110  300  360  210  325 
Week(2)  ………………………………
Week(3)  ………………………………
Week(4)  ………………………………

每种产品每周的销售值

Week(1)  110  300  360  210  325 
Week(2)  ………………………………
Week(3)  ………………………………
Week(4)  ………………………………

每周所有产品的生产值和销售值

                生产值      销售值
Week(1)       1300        1230
Week(2)        …          …
Week(3)        …          …
Week(4)        …          …
      每种产品一个月内的生产值和销售值
生产值      销售值
Product(1)      500          450
Product(2)       …          …
Product(3)       …          …
Product(4)       …          …

所有产品一个月的生产总值和销售总值

Total product = 5220
Total sales   = 4450

问题分析:
数据结构采用结构体,设计销售结构体:

   Struct sellNote
{
    Int sellerNo;  //销售员代号(1-4)
    Int proNo;   //产品代号(1-5)
    Float sellMoney;   //销售额
}SNote; 

销售和产值信息采用文件存储,实现建立文本文件。
主函数输出提示菜单,让用户选择查看不同信息。
1)个人销售额查看
计算上个月每个人每种产品的销售额。设立count[4][5],用来存储4个销售员的5种产品的销售额。读文件,把相同销售员的相同产品的销售额累加,写入count中。最后count[i][j]中存放的就是第i+1个销售员的第j+1种商品的销售额。
2)销售额排序
类似个人销售额的计算,这里把一个销售员的所有产品的销售额累加,存放到一个临时数组中,再对数组进行排序即可。
3)产品销售额和产值统计
操作与2)类似。
4)统计报表
可以先采用1)的操作,再对count数组计算。count[i][0]+ count[i][1]+ count[i][2]+ count[i][3]+ count[i][4]既是第i个销售员的销售之和,count[0][j]+ count[1][j]+ count[2][j]+ count[3][j]+ count[4][j]既是第j种产品的销售之和。所有count[i][j]的和既是总和。另外注意输出格式。

43. 销售便条管理系统

某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴0-5张便条。
试设计一个便条管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)便条信息录入功能(便条信息用文件保存)--输入
(3)假设:收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定)。进行如下处理:
1)计算每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
销售统计报表

                               产品代号                   销售之和  
销售员代号            1     2     3     4     5         
1     
2     
3     
4  
每种产品之和                                              总和

44. 商店销售管理系统

功能:屏幕上出现一个界面,让售货员输入商品编号或者商品名称,可以进货,进货后商品库存同时增加。顾客买走商品后,售货员输入商品编号或者商品名称,可以生成销售清单,统计本次销售总的价钱,同时库存数量相应减少。完成前面的基本功能后,还可以完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。
要求:
(1)完成最低要求:能按商品编号进货和销售;
(2)进一步要求:完成增加新的商品或删除不需要的商品的功能,以及每天销售统计功能等。
45. 飞机订票系统
[问题描述] 设计民航售票处的计算机系统可以为客户提供下列各项服务:
1)查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、最近一天航班的日期和余票额;
2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况。
(1)需求分析
航班信息用文件保存,因而要提供文件的输入输出操作;航班信息浏览功能需要提供显示操作;要查询航线需要提供查找功能;另外要提供键盘式选择菜单以实现功能选择。
(2)总体设计
该系统设计为航班信息输入模块、航班信息浏览模块和航线查询模块。
(3)详细设计
数据结构采用结构体数组,设计航班结构体如下:

Struct 
{
   Char flightNo[10];   //航班号
   Char start[10];      //起始站
   Char end[10];       //终点站
   Float day;          //飞行时间
   Int  totalTicket;     //预售票总数
   Int  sellTicket;      //已售票总数
}Flight[N];  //航班结构体

1)航班信息输入模块
采用fwrite或fprintf把航班信息写入航班信息文件。
2)航班信息浏览模块
分屏显示航班信息,每屏10条记录,按任意键显示下一屏。读文件(采用fread或fscanf)然后显示即可。
3)航线查询模块
通过菜单选择查询方式,提供按照航班号、起点站、终点站和飞行时间查询。采用基本查找算法即可。

46. 飞机航班订票系统

功能:本飞机共有80个坐位,分20排,每排4个位子。编号为A,B,C,D。如10D表示10排D座。A和D靠窗,19到20排为吸烟区。本系统可让乘客自己选座号和区域,直到乘客满意为止,无法满足的话,只能改乘另一个航班。定上票的乘客需给出姓名和身份证号,最后要打印出乘客清单。实现订票、售票、退票、统计、查询等功能。
要求:
(1)完成最低要求:建立一个小系统,包括5排座位,两个区域,能供乘客选择;
(2)进一步要求:完成全部功能的系统。

47. 航班信息管理系统

问题描述:
飞机航班系统的数据包括两部分:
① 航班信息:航班号、最大载客数、起飞地点、起飞时间、降落地点、降落时间,单价;
② 乘客信息:航班号、身份证号码、姓名、性别、出生年月、座位号。 乘客订票的主要方式是:乘客提出航班号、起飞地点、起飞时间、降落地点、订票数等订票要求,根据事先保存的航班数据决定乘客能否订票?只有全部满足了乘客的订票要求并且所订航班有足够的未订座位之后才能完成订票处理,并且修改该航班的未订座位数(每个航班的未订座位数的初始值就是该航班的最大载客数);否则,订票失败,并且给出不能订票的原因。
要求将航班数据保存在数据文件中,在处理时按航班的起飞地点建立不同的链表。
功能要求 :
⑴ 增加航班记录。将新的航班记录增加到原有的航班数据文件中。在进行处理时必须检查所要增加的航班记录是否存在,如果已经存在,应给出提示信息后停止增加;
⑵ 航班取消。如果某次航班的乘客数太少(已订票的少于本次航班最大载客数的10%),将取消该航班,但该航班的记录仍然保存在原有的航班数据文件中;
⑶ 航班查询。应该有以下几种基本的查询方式:按航班号、按起飞地点和起飞时间、按降落地点,按起飞地点和降落地点;
⑷ 航班订票。按上述问题描述中的乘客订票方式完成航班订票处理。 ⑸ 设计一个菜单,至少具有上述操作要求的基本功能。

48. 火车订票系统

要求:有订票子系统、售票子系统、退票子系统、统计子系统、查询子系统、生成数据子系统

49. 职工信息管理系统

职工信息包括:职工号、姓名、性别、出生年月、年龄、学历、职务、工资、住址、电话等(职工号不重复)
试设计一职工信息管理系统,使之能提供以下功能:
1)系统以菜单方式工作
2)职工信息录入功能(职工信息用文件保存)--输入
3)职工信息浏览功能--输出
4)职工信息查询功能--算法
查询方式:按学历查询等/按职工号查询等
5)职工信息删除、修改功能
(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)职工信息输入模块
采用fwrite或fprintf把职工信息写入航班信息文件。
2)职工信息浏览模块
分屏显示职工信息,每屏10条记录,按任意键显示下一屏。读文件(采用fread或fscanf)然后显示即可。
3)职工信息查询模块
通过菜单选择查询方式,提供按学历查询和按职工号查询两种查询方式。采用基本查找算法即可。
4)职工信息删除与修改模块
通过菜单选择删除操作,由于C语言没有提供直接删除文件记录的函数,因而需要自己实现:读记录,判断是否要删除(与输入的要删除的记录比较),如果要删除,则舍弃;否则重新写入文件。修改操作于删除操作类似,只是判断是否是要修改的记录,如果是,则把修改后的记录写入文件,否则直接写入文件。

50. 人事档案管理系统

(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) 数据输入模块
采用fwrite或fprintf把员工信息写入人事档案文件。
(2) 数据添加模块
用追加的方式采用fwrite或fprintf把新增员工信息写入人事档案文件。
(3) 数据删除模块
根据人员编号查找要删除的人员,从文件中读一条记录,查看编号是否要删除,如果是,则舍弃,不再写入文件;否则重新写入文件。
(4) 数据查询模块
把编号和姓名作为查询字段,用基本查找算法查找人事档案文件,把符合查找要求的记录输出。
(5) 数据修改模块
查找要修改的记录,修改之。先用fread或fscanf读记录,若是要修改的记录,则修改信息,把修改后的信息写入文件;否则直接写入文件。
(6) 数据排序模块
通过菜单选择年龄或者来院时间,把数据从文件中读出来,任意选择一种排序算法对记录进行排序,输出排序结果。
(7) 数据统计模块
通过菜单选择统计字段:在职人数、党员人数、女工人数、高学历人数、高职称人数。
例如选择党员人数,则统计运算伪码如下:

Count=0;    //记录在职人数
While(文件未读完)
{
   读一条记录;
   If(政治面貌是党员)
   {
      Count++;
    输出该条记录;
}

其他字段的统计运算与次类似。

51. 职工档案管理系统

功能:职工档案管理系统包含了职工的全部信息,每个职工是一条记录,包括编号,姓名,性别,出生年月,年龄,所在部门,职称,工资级别、电话等。系统可完成:信息录入、信息查询,并按可选的自定义规则进行排序;信息删除与修改(须设置密码),将职工的信息保存于外部存储器的文件中。
要求:
(1)完成最低要求:建立一个文件,包括10个职工的必要信息,能对文件进行查询、补充、修订、排序、删除等;
(2)进一步要求:能进行统计计算;完成包括整个职工的系统;对删除与修改等设置密码

52. 实验设备管理系统

实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
主要功能:
1)能够完成对设备的录入和修改
2)对设备进行分类统计
3)设备的破损耗费和遗损处理
4)设备的查询
要求:采用二进制文件方式存储数据,系统以菜单方式工作
(1)需求分析
实验室设备信息用文件存储,故要提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的查询需要提供查找操作;另外还要提供键盘式选择菜单以实现功能选择。
(2)总体设计
整个系统被设计为实验设备信息输入模块、实验设备信息添加模块、实验设备信息修改模块、实验设备分类统计模块和实验设备查询模块。
(3)详细设计
数据结构采用结构体,设计实验设备信息结构体:

Struct equipmentInfo
{
  Char equipCode[10];  //设备编号
  Char equipType[20];  //设备总类
  Char equipName[20]; //设备名称
  float equipPrice;    //设备价格
  char buyDate[20];   //设备购入日期
  int  scrap;         //是否报废,0表示没有报废,1表示报废
  char scrapDate[20];  //报废日期
}EquInfo;

1)实验设备信息输入模块
采用fwrite或fprintf把实验设备基本信息写入实验设备信息文件。
2)实验设备信息添加模块
添加设备时,采用fwrite或fprintf把添加的设备基本信息采用追加的方式写入设备信息文件。
3)实验设备信息修改模块
修改设备信息,则需要读文件,判断信息是否是要修改的设备的信息,如果是,修改,重新写入文件;否则直接重新写入文件。
4)实验设备分类统计模块
根据给定的分类标准(设备种类、设备名、设备购入日期)对文件的记录进行排序,排序方法可以选择冒泡、插入、选择等方法。然后采用查找算法查找同类设备,采用基本的数学运算即可统计同类设备的相关信息,比如数量、价钱等。
5)实验设备查询模块
通过菜单选择查询方式,提供按设备编号、设备种类、设备名称、设备购入日期和设备状态为正常(scrap字段值为0)这些查询方式查询。采用基本查找算法即可。

53. 设备管理系统

功能:设备管理系统应包含各种设备的全部信息,每台设备为一条记录(同一时间同一部门购买的若干台相同设备可作为1条记录),包括设备号、设备名称、领用人、所属部门、数量、购买时间、价格等。能够显示和统计各种设备的信息。
要求:
(1) 完成最低要求:建立一个文件,包含一个部门10台设备的信息,能对文件进行补充、修订、删除,能统计所有设备的总价值。
(2) 进一步要求:完成设备按种类、按所属部门进行统计。

54. 银行卡管理系统

银行卡信息采用结构体,设立银行卡信息结构体:

Struct creditCard
{
  Char cardNo[20];   //卡号
  Char name[20];    //持卡人姓名
  Char ID[20];      //持卡人身份证号码
  Char password[20]; //密码
  Int  flag;        //标志该卡是否启用(0表示未启用,1表示启用)
  Float account;     //账户金额
  Int integral;       //积分
}CCard;

1)制卡指申请一个银行卡。即建立一个CCard对象,输入信息对其初始化。
2)账户信息存储到账户信息文件中,当制作一新卡时,就把该新卡追加到账户信息文件。对账户信息的管理需要实现账户信息查询,用基本的查找算法按卡号对账户信息文件进行查找,并打印输出。
3)实现卡交易和合法性检查。用户首先依靠卡号和密码登陆(通过查找账户信息文件,来查看卡号和密码是否正确匹配),输入交易金额,如果account>=输入金额,则输出“交易成功!”,并更改account=account-输入金额。否则输出“对不起,您的余额不够!”。
4)实现卡金融交易积分功能。在把积分初始化为0,只需在卡交易的时候,把交易金额取整加到积分上。
5)实现卡报表功能。读账户信息文件,分屏输出所有账户的帐号和交易金额。

55. 仪器仪表管理系统

(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)输入模块
采用fwrite或fprintf把仪器仪表信息写入仪器仪表信息文件。
2)修改和删除模块
通过菜单选择借出操作,查找文件仪器仪表信息,找到相应的仪器仪表,如果仪器仪表状态为0,则允许借出,在文件中更改仪器仪表状态为1,更改借出时间;否则,即仪器仪表借出或正在维修,则输出“抱歉,仪器仪表已借出(正在维修)!”这个过程是一个对文件查找(读文件、判断是否是要查找的纪录)、重新写入的过程。
删除操作只需读文件,判断所读纪录是不是要删除的记录,如果是,则舍弃;否则重新写入文件。
3)查询和统计模块
通过菜单选择查询或统计操作,若选择查询,则需要再选择查询方式:基本信息、时间段、时间点。基本信息查询,就分屏(每屏10条信息)显示所有记录,这是一个读文件和输出的过程。时间段查询,则要输入起止时间和表征字段(可以用0表示购买起止时间,1表示借出起止时间,2表示维修起止时间)。例如输入2004 1 1 2004 10 10 0
表示查询2004年1月1日到2004年10月10日之间购买的仪器仪表信息。则读一条记录,判断购买时间是否处于起止时间之间,如果处于,则打印输出,否则舍弃。借出和维修查询与此类似。
统计功能和查询功能类似,只需要加一个计数变量即可。

56. 服装销售系统

(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,最后输出符合条件的记录数(也可以把符合条件的记录信息完全输出)。
管理员选择商品信息,则可以选择商品信息添加、修改、删除、查找、统计,商品信息的添加、修改、删除、统计操作与用户信息的相应操作类似。查找操作只需采用基本的查找算法查找商品信息文件即可。
店长修改密码和修改个人信息操作与管理员相应操作类似。
店长的商品信息可以选择商品信息修改和商品信息统计,此类操作与管理员的相应操作相同。
店长选择查看报表,则显示选择菜单:日报表 月报表 商品销售量报表 营业员业绩报表。查看日报表,根据输入的日期在商品报表文件中查找,把出售日期与输入日期符合的记录输出。查看月报表操作类似,查找商品报表文件中商品出售日期在输入月份之间的记录输出。商品销售量报表,这是一个统计的过程,查找商品报表,统计同一商品的销售量(月销售量、年销售量)。查看营业员业绩报表,则读销售员信息文件,把信息打印输出即可。
店长查找浏览修改商品储备信息,查找与修改操作可以参考管理员对商品的查找与修改操作,浏览操作就是把商品储备信息分屏输出,每屏10条记录,按任意键继续。这些操作在该店长对应的商品储备信息文件中执行。
[注:每个店长对应一个商品储备信息文件,里面存放该店储备的商品信息。
文件格式:店长ID 商品名 商品代号 制造商 价格…]
销售员可以选择商品浏览、查找、出售商品、察看自己本日报表、本月报表。商品浏览、查找以及查看自己本日报表、本月报表可以参考前面相关操作。出售商品操作执行的动作是:在本店的商品储备文件中查找要出售的商品,如果存在,则出售,在商品报表文件和销售员销售文件中添加该商品信息,并把该商品信息从商品储备文件中删除。

57. 歌唱比赛评分系统

有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,去掉一个最低分,剩下分数的平均值作为每位选手最后的成绩。

  1. 要求:
    1)采用结构体定义每个选手的参赛编号,姓名以及十个裁判打出的分数;
    2)从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;
    3)计算每位选手的最后得分,并按分数由高到低排序;
    4)查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名;
    5)找出最不公平委。
    以上功能采用菜单操作方式,并实现从文件读取数据并向文件保存数据。
    (2)问题分析
    对于要求1)和(2),输入10个评委的打分,假设分数存放在数组score[10]中,然后对分数由高到低排序(冒泡、插入、选择法),选手最后得分为(score[1]+score[2]+…+score[8])/8。
    对于要求5),最不公平的评委比较容易找到,就是把最高分score[0]和最低分score[9]分别与1)得到的平均分比较,差值较大的那个就是最不公平的评委。找最公平的评委,可以先把中间元素score[5]与平均分比较,计算差值,然后往前推,计算score[4]、score[3],如果差值比上一次计算所得值大,则停止;再往后推,计算score[6]与平均值的差值,并与前面得到的最小差值比较,如果大于最小差值,则得到最小差值的评分对应的评委就是最公平的评委;如果小于最小差值,则把最小差值改为score[6],并继续比较score[7],直到所得差值比上一次计算所得值大。
    2)具体实现
    数据结构采用结构体:
     Struct judge
     {
        Float score;        //评委打分
        Int  judgeNo;  //评委号码
     }Judge[10];    //评委结构体数组
核心程序:一次循环处理一个歌手。
While(还有歌手)
{
   //输入10个评委的打分
   For(i=0;i<10;++i)
{   
     Scanf(“%f”,&Judge[i].score);
     Judge[i].judgeNo=i;
 }
  //输出最后得分
evenScore=0;
For(i=1;i<9;++i)
     evenScore+=Judge[i].score;
evenScore/=8;
//评选最公平与最不公平评委
…
}

58. 歌手比赛系统

对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。(2)显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)数据查询 5)追加学生数据 6)写入数据文件7)退出系统。
59. 杂志订阅管理软件
(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)数据统计模块
对本期杂志订户数的统计,就是读文件,输出订户名、订阅数、单价,并计算金额(单价*订阅数)。(fread或fscanf读文件,printf输出结果)可以定义变量统计订户数、订阅数和总金额,最后输出。

60. 机房机位预约模拟

20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求:
1)系统以菜单方式工作
2)查询,根据输入时间,输出机位信息。
3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。
4)退出预定,根据输入的时间,机器号撤销该事件的预定!
5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。
(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,则显示“该时间段空闲!”。

61. 机房收费管理系统

1)输入功能:输入若干名学生的学号、班级、姓名、开始上机时间和结束上机时间。
2)计算功能:计算每个学生的上机费用(计算公式:上机费用=(结束上机时间-开始上机时间)*收费标准,(以分钟为单位))
3)修改功能:修改学生上机的个人档案(如:增添或删除)
4)查询功能:按条件(班级、学号、姓名)查询学生上机信息,并能显示查询学生的相应全部档案。机器使用情况的显示。

62. 学生计算机机房管理系统

功能:该计算机房共有100台计算机,分为20排,每排50台。管理系统应包含每台计算机一周内的使用全部信息,包括计算机序号、配置、位置、状态、使用情况的历史记录(包括使用者姓名、学号、使用时间段)等。本系统可以模拟学生上机和离开的登记过程,查询机房计算机的使用情况。
要求:
(1)完成最低要求:建立一个文件,包括200个计算机的必要信息,能实现学生上机和离开的登记过程模拟。
(2)进一步要求:完成机房计算机的使用情况查询和打印。

63. 停车场管理系统

停车场管理:
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)退出系统.
(1)需求分析
车辆信息要用文件存储,因而要提供文件的输入输出操作;当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作;另外还要提供现实操作和用键盘式菜单实现功能选择。
(2)总体设计
整个管理系统可以设计为停车模块、取车模块、车辆信息浏览模块。
(3)详细设计
停车场用二位数组实现park[2][6]; //2层,每层有6个车位
每辆车的信息用结构体来实现,设立车信息结构体:

   Struct carInfo
   {
      Int carNo;     //车牌号
      Int layerNo;   //层号
      Int parkNo;   //车位号
      Int time;     //停车时间
   }CInfo;

1)停车模块
对车辆信息赋值,分配前检查车位使用情况(按行查找park数组,元素为0表示车位为空,则允许分配)。把新添加的车辆信息以追加的方式用fwrite写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。
2)取车模块
计算费用(停车费用=停车时间*0.2元),从文件中删除该车信息。并将该车位对应的二位数组变量设为0,表示该车位可用。输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。
3)车辆信息浏览模块
输出车辆信息文件中的记录。
另外,用户按Esc键退出系统。

64. 建筑工地信息管理

(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
{
   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)数据输入模块
用fprintf或者fwrite写数据到相应文件中。
3)数据插入模块
采用追加的方式写数据到文件。
4)数据删除模块
通过菜单选择相应的文件后,用fopen打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。
5)数据更新模块
与数据删除模块类似,只是判断所读的纪录是否要更新,如果是,则把更新后的纪录写入文件,否则直接写入文件。
6)按空格键进入查询操作
通过菜单选择查询零件-供应商或者项目-供应商。例如选择查询零件-供应商。其基本流程如下:
打开销售商-配件-建筑工地文件;
While(文件未结束)
{
读一条记录,得到销售商号码和配件号;
在销售商文件中查找该销售商号码,得到该销售商所在城市;
在配件文件中查找配件号,得到该配件的产地;
如果销售商所在城市与配件的产地相同,则输出销售商号码和配件号码;
}
查询项目-供应商记录对的操作类似,只需把配件号改为工地号即可。

65. 电影俱乐部会员管理

(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信息,则采用fread或fscanf从DVD信息文件中读记录,分屏输出。浏览会员信息文件,则读会员信息文件,输出。
6)信息查询模块
会员对自己账户状况的查询,则输出其账户信息即可(登录时在会员信息文件中找到自身信息,事先读到临时变量中)。
管理员对所有交易情况的查看,则查找用户信息文件,如果用户的staet!=0,则输出用户信息。

66. 会员卡计费系统

设计一个会员卡计费管理系统。
(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)
(2)会员信息修改。
(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)
(4)会员消费结算。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。提示成功,并显示更新后的信息。)累计消费满1000元,及自动升级为VIP会员。之后每次消费给予9折优惠。
(5)会员退卡。(收回会员卡,并将余额退还,删除该会员信息。)
(6)会员卡挂失。(为该会员补办新卡,并将旧卡余额转至新卡。)
(7)用菜单进行管理
(8)统计功能。
1) 能够按每个会员的缴费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。
2) 能够按累计消费总额进行排序。在排序的最后一行显示所有会员的缴费总额,以及消费总额。
(9)只有正确输入用户名密码才能使用此系统。
(10)所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

67. 歌曲信息管理

(1)需求分析
用文件存储信息,因而要提供文件的输入输出操作;可对歌曲信息进行输入、删除、浏览,因而要提供文件的输入、删除和信息显示操作;查询歌曲信息要提供查找操作;实现按作者分组显示功能则要提供排序功能;另外要提供键盘式选择菜单以实现功能选择。
(2)总体设计
整个管理系统可以被设计为数据输入模块、数据删除模块、信息浏览模块、信息查询模块和信息分组显示模块。
(3)详细设计
数据结构采用结构体,建立歌曲信息结构体:

Struct SongInfo
{
  Char name[20];   //歌曲名
  Char author[20];  //作者
  Char singer[20];  //演唱者
  Char pub_date[6]; //发行年月(yyyymm)
}SI;

(1) 数据输入模块
用fprintf或fwrite把歌曲信息写入文件。
(2) 数据删除模块
采用基本的查找算法,查找歌曲信息文件,如果是要删除的歌曲,则舍弃改信息。否则重新写入文件。
(3) 信息浏览模块
用fscanf或fread读歌曲信息文件,分屏显示输出,每屏10条信息。
(4) 信息查询模块
通过菜单选择查询字段:歌曲名 作者 演唱者。 然后采用基本查找算法在歌曲信息文件中查找,如果找到,则输出;否则输出“对不起,没有您要找的歌曲信息!”。
(5) 信息分组显示模块
选择按作者分组显示歌曲信息,用fread或fscanf把歌曲信息文件中的信息读取到临时变量中(临时变量数据结构可以采用歌曲信息结构体数组),采用排序算法(冒泡、插入、选择等)把歌曲信息按照作者排序,然后分屏输出,每屏10条记录。

68. 交通处罚单管理

(1)需求分析
交通处罚单信息用文件存储,因而要提供文件的输入输出操作;要求可以输入、删除、浏览交通处罚单信息,因而要提供信息的输入、删除和显示操作;要实现按车辆、驾驶员和开单交警查询,则要提供查找操作;另外提供统计操作和键盘式选择菜单以实现功能选择。
(2)总体设计
整个管理系统被设计为信息输入模块、信息删除模块、信息浏览模块、信息查询模块和信息统计模块。
(3)详细设计
数据结构采用结构体,设计交通处罚单结构体:

  Struct TranficPunishBill
 {
Char carNo[10];    //车牌号
Char driverNo[20];  //驾照号
Char policeNo[10];  //开单交警号码
Char billNo[20];   //处罚单号码
Char time[12];  //处罚时间(yyyymmddhhmm,年月日时分)
}TPB;

1)主函数提示用户选择功能:输入 删除 浏览 查询 统计
2)信息输入模块
采用追加的方式用fwrite或fprintf把处罚单信息写入处罚单信息文件。
3)信息删除模块
输入处罚单号码,然后在处罚单信息文件中查找该条处罚单,删除之。具体删除操作:用fopen打开该文件,从文件中读一条记录,判断是否要删除,如果是,则舍弃;否则重新写入文件,读下一条记录。
4)信息浏览模块
采用fread或fscanf读处罚单信息文件,分屏输出,每屏10条记录。
5)信息查询模块
通过菜单选择查询字段:车辆 驾驶员 开单交警, 分别按照车牌号、驾照号、开单交警号采用基本的查找算法查找交通处罚单信息文件,如果找到相应得记录则输出处罚单信息,否则输出“您所查找的信息不存在!”。
6)信息统计模块
提示输入驾驶员的驾照号和时间段。设置一个计数器,初始化为0。采用基本算法查找交通处罚单信息文件,比较驾照号,如果驾照号匹配,再看处罚单时间是否出于查询时间段内,如果是,则计数器加1,并输出该处罚单号。文件查找结束后,输出计数器的值。

69. 客房管理系统

(1)需求分析
实现用户登记功能,要提供结构体的输入操作;实现统计功能,要提供相应的统计操作;实现查询功能,要提供查找操作;实现修改功能,要提供修改操作;另外还要提供键盘式菜单实现功能选择。
(2)总体分析
整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块。
(3)详细分析
数据结构采用结构体,设计如下结构体:

//客户结构体
struct   Client{   
            char   Name[20];   //姓名
            int   Sex;        //性别,0表示男,1表示女
            int   Age;       //年龄
            char   ID_card[20];  //居民身份证;   
            int   year;   
            int   month;   
            int   date;       //住店时间   
  };   
//客房结构体
  struct   Hotel{   
        int   Room_ID;  //房间号   
          int   Tel;      //电话
        int   Price;    //价格
          bool   Sign;  //标记房间是否为空房间;   
          struct   Client   Client_list;  //实现两个结构体的嵌套   
  }Room[NUM];  

1)用户登记模块
提示用户输入自身信息以及客房信息,把数据存入Room数组中。
2)统计模块
设置计数器,顺序遍历Room数组来实现。实现对房客数、某一天的房客数的统计。
3)查询模块
通过基本查找算法查找Room数组。可以按房间号、价格、房间标记、用户姓名、居民身份证查询。
4)修改模块
采用基本查找算法在数组中找到要修改的数据,直接更改。

70. 物资管理系统

根据要求,整个管理系统被设计为信息输入模块、信息查找模块、信息插入模块、领料模块和打印功能模块。
数据结构采用结构体,在题目要求中已给出,这里采用了链表,读者可以尝试把文件中的数据读入链表中,然后查找操作就是对链表的遍历。也可以把struct product*next; {结点指针} 以及struct l_pro * next; {结点指针}从结构体中去掉,采用结构体数组来做。
模块的分析如下:
1)信息输入模块
用fscanf或fwrite把物资信息录入pro.dat文件中。
2)信息查找模块
用键盘菜单提示查找字段:产品名称 进货日期 产品名称和库存量
按照产品名称查询,采用基本的查找算法查找物资库存文件记录的p_name字段,如果匹配则输出。 按照进货日期查询,则查找in_date字段。提示输入查找日期,检查日期是否匹配,如果日期匹配,则输出。 按照产品名称和库存量查询,则提示输入产品名称和最小库存量,那么首先查找p_name字段,如果p_name字段匹配,再看real_s字段,如果<输入的最小库存,则输出其信息。
在查找过程中,如果没有找到相应的记录,则输出“not found!”。
3)信息插入模块
信息插入模块所做的就是文件记录的添加操作,采用fprintf或fwrite用追加的方式写入物资信息文件。
4)领料模块
首先提示用户输入所要领的物资的名称或编号以及所领数量,然后查找物资库存信息文件,如果该物资存在且实际库存量满足,则允许领料,在领料文件中添加领料记录,并在物资库存文件中修改实际库存量。
5)打印功能模块
通过键盘菜单选择打印领料单或者物资库存清单,显示结果分屏输出,每屏10条记录。主要是文件的读操作(fscanf,fread)。

71. 职工工作量统计系统

编写有一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。不少于10名职工。要求程序分别用数组和有序链表存储数据信息。
以上信息解释如下:
(1)职工工号和产品数量的输入,可多次输入(实现键盘输入),最后累计产品数量(能实现文件的读取和保存);
(2)按产品数量排序,确定职工排名;
(3)输出要求:输出名次、同一职工人数及他们的工号(由小到大);
(4)不少于10名职工。

72. 物业费管理系统

(1)新住户信息的添加。(户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、平米数、每平米物业价格、应缴纳物业费,备注信息)
(2)修改住户信息的功能。
(3)删除住户信息的功能。
(4)应缴物业费自动生成。每月1号,自动生成本月份的物业费。如果该住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费。
(5)缴费功能。根据用户缴纳金额,修改“应缴纳物业费”。
(6)统计功能。
1) 能够按楼号分类统计所有未交清物业费的记录。
2) 能够按拖欠款项多少,对所有用户信息进行从大到小排序。
(7)用菜单进行管理
(8)只有正确输入用户名密码才能使用此系统。
(9)所有内容能够保存到文件中。下次进入系统是从文件中读取原有信息。

73. 车票管理系统

一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如:

 班次   发车时间   起点站   终点站   行车时间   额定载量      已定票人数 
1      8:00       郫县      广汉     2           45             30 
2      6:30       郫县      成都     0.5          40            40 
3      7:00       郫县      成都     0.5          40            20 
4      10:00      郫县      成都     0.5          40            2 
5       8:00       上海南    杭州     2            45           30 
6       6:30       嘉兴      杭州     0.5          40            40 
7       7:00       嘉兴      杭州      0.5         40            20 
8      10:00       嘉兴      杭州       0.5        40            2 

功能要求:用c/c++设计一系统,能提供下列服务:
1)录入班次信息(信息用文件保存),可不定时地增加班次数据
2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。 
3)查询路线:可按班次号查询,可按终点站查询 
4)售票和退票功能
A.当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B.退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数。

74. 保安值班安排系统

某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
 赵星期二、星期四
钱星期一、星期六
孙星期三、星期日
李星期五
周星期一、星期四、星期六
吴星期二、星期五
陈星期三、星期六、星期日

75. 仓库货物管理系统

货物信息包括:货物编号、货物名称、货物价格、货物数量等(货物编号不重复)。
功能描述
(1) 录入货物信息并保存
(2) 显示所有货物信息(以一定的格式)
(3) 查询货物信息(以一种或多种方式)
(4) 修改货物信息并保存
(5) 删除货物信息

76. 超市结账系统

商品信息包括:商品编号、商品名称、商品价格、商品数量等(商品编号不重复)。
功能描述:
(1)从屏幕上读取新商品的信息并将信息存入到数据文件中;
(2)修改变化了的商品的信息;
(3)在屏幕上输入顾客所购商品条形码编号;
(4)在屏幕上显示顾客所购商品清单,货款合计及收款数、找零;

77. 学院教学信息管理系统

功能:
(1)每一条记录包括一位教师的职工号、姓名、职称、性别、3门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学效果),教学效果综合评分。
(2)输入功能:可以一次完成若干条记录的输入。
(3)显示功能:完成全部教师记录的显示。
(4)查找功能:完成按姓名或课程查找教师的相关记录,并显示。
(5)排序功能:按职工号或教学效果综合评分进行排序。
(6)插入功能:按教学效果综合评分高低插入一条教师记录。
(7)将教师记录存在文件中。
(8)应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
要求:
(1)用C语言实现系统;
(2)利用结构体数组实现教学信息的数据结构设计;
(3)系统具有增加,查询,插入,排序等基本功能;
(4)系统的各个功能模块要求用函数的形式实现;
(5)将教学信息存在文件中。

78. 酒店房间登记与计费管理系统

功能:
(1)屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
(2)对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。
(3)在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。

79. 银行存取款管理系统

功能:能够输入和查询客户存款取款记录。在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额;在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种。本系统能够输入客户存款或取款记录;根据客户姓名查询存款和取款记录。
要求:
(1)完成最低要求:建立一个文件,包括输入10个客户的必要信息,能对文件进行输入、修订、删除。
(2)进一步要求:完成客户姓名查询存款和取款记录,并能得到每次帐户总金额。

80. 商品订购系统

功能:屏幕上出现一个界面,让顾客或输入商品名称,或商品型号,或选择列表进而输入商品编号都可以,如查到所选商品,则列出商品编号、商品名称、商品型号、商品价格、商品产地、库存数量和已订购数量;然后给出选购流程:所选商品编号—列出对应商品的信息—要求顾客输入邮寄地址信息—确认订购,是否继续选购其它商品,列出所有选订商品,再次确认订购。建立两个文件,分别存放商品信息与订购信息。
要求:
(1)完成最低要求:建立一个小系统,包括10种产品能供顾客选择。
(2)进一步要求:完成全部功能的系统。

81. 超市销售业绩信息管理系统

商品信息包括:商品编号,商品名称,商品类别,商品进价,商品售价,产地,生产厂家。

商品基本信息参考:
中文字段名 类型及长度 举例
商品编号 char[8] 1000101代表铅笔,1000201代表圆珠笔等
商品名称 char[20] 矿泉水
商品类别 char ‘1’表示文具类,‘2’表示食品类等
进货数量 int
商品进价 float
销售数量 int
商品售价 float
库存数量 int
库存金额 float
产地 char[10]
生产厂家 char[20]

员工销售业绩基本信息参考: 金额单位为:万元
中文字段名 类型及长度 举例
商品编号 char[8] 1000101代表铅笔,1000201代表圆珠笔等
员工编号 char[4] 0001代表中北仓储珞喻店食品柜台
员工姓名 char[20] 中北仓储珞喻店食品柜台
当月销售数量 int
当月销售金额 float
累计销售数量 int
累计销售金额 float
(1) 输入商品和员工信息、并存储到文件中;
(2) 插入(修改)商品和员工信息:
(3) 删除商品和员工信息:
(4) 浏览商品信息:输入商品名即能显示的相关信息。
(5)统计并显示各员工的销售量。
系统功能模块结构图示例

图1 系统功能模块结构图示例

也可以采用对顶层图中的模块进行逐步展开细化,从而得到更详尽的第2层模块的功能模块结构图。

图2 第2层模块的功能模块结构图示例

82. 高速公路计费系统

进入高速公路站后,发卡站进行发卡,离开高速公路时,收费站根据里程进行收费。
功能:在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。5元,中型车每公里0.4元,小型车每公里0.3元,来车验条,乘公里数即得该收的款项。在交班时要统计出总数。
要求:
(1)完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;
(2)进一步要求:完成任意多个入口的通用系统。

83. 抗震救灾药品信息管理系统

灾区救灾药品基本信息参考:
中文字段名 类型及长度 举例
药品编号 char[6] 100001代表青霉素编号
药品名称 char[12] 青霉素
调入药品数量 int
下拨药品数量 int
库存药品数量 int
调入药品金额 float
下拨药品金额 float
库存药品金额 float
保管员姓名
(1) 输入药品和员工信息、并存储到文件中。
(2) 插入(修改)药品和员工信息:
(3) 删除药品和保管员工信息:
(4) 浏览药品信息:输入商品名即能显示的相关信息。

84. 公交线路查询系统

公交线路编号,沿途经过站点名,经过时间,最早和最晚班车时间
1)、输入原始数据需保存到磁盘文件中。
2)能对公交线路进行日常维护(录入、删除、编辑修改);
3)查找浏览等功能。

85. 小区快递查询系统

自行根据小区快递特点设计合理的数据结构,保存快递相关信息,能够完成功能
1)根据快递单号、电话号码查询快递。
2)能模拟完成快递接收和派送(快递接收为插入,快递派送为删除);
3)能够完成一定的统计功能,比如:一共有多少个包裹需要配送,有多少个包裹已经完成配送等等。

标签:25,课程设计,删除,文件,信息,查询,查找,C++,模块
From: https://www.cnblogs.com/codewriter/p/17502687.html

相关文章

  • 云服务器使用记录-20230625
    三丰云提供稳定可靠的云服务器,搭载宝塔面板,支持多种语言环境(包括PHP等),让您轻松地管理网站和数据。无论您是个人博客、企业官网还是电商平台,都可以快速部署并安全运行。这样,您就可以专注于业务发展,享受高效稳定的云服务体验。我推荐您使用Linux版本的系统,因为它占用的资源较少。......
  • 2023/6/25
    19.3.2,19.3.3(4)......
  • 【雕爷学编程】Arduino动手做(125)---WT588D语音模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • Notes.views.2023-6-25 09:25:45
    目录001011章节123小节不分级备注用———符号,也不特意分级......
  • C++面试八股文:std::string是如何实现的?
    C++面试八股文:std::string是如何实现的?某日二师兄参加XXX科技公司的C++工程师开发岗位第18面:面试官:std::string用过吧?二师兄:当然用过(废话,C++程序员就没有没用过std::string的)。面试官:std::string("hello")+"world"、"hello"+std::string("world")和std::string("hello")......
  • Qt/c++类型转换总结
    1、static_cast、dynamic_cast、强制转换(reinterpret_cast和const_cast)、qobject_cast、qstatic_cast以及qdynamic_cast的区别:static_cast:用于执行静态类型转换,可以进行常见的类型转换,例如基本类型之间的转换、向上转型、向下转型(但没有运行时类型检查)等。在C++中......
  • C/C++ 类型显式转换
    上一章,我提到了下面的代码#include<stdio.h>inta=(long)4;externchark=(int)'m';voidmain(void){printf("%s",a);printf("%f",k);}这里我需要纠正上一篇文章的错误,C语言不存在bool类型只要数字是大于0,那么相当于true否则就是false 其中,inta表示......
  • C++面试八股文:std::vector和std::list,如何选择?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第24面:面试官:list用过吗?二师兄:嗯,用过。面试官:请讲一下list的实现原理。二师兄:std::list被称为双向链表,和C中手写双向链表本质上没有大的区别。list对象中有两个指针,一个指向上一个节点(node),一个指向下一个节点(node)。二师兄:与手写......
  • C++面试八股文:std::vector和std::list,如何选择?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第24面:面试官:list用过吗?二师兄:嗯,用过。面试官:请讲一下list的实现原理。二师兄:std::list被称为双向链表,和C中手写双向链表本质上没有大的区别。list对象中有两个指针,一个指向上一个节点(node),一个指向下一个节点(node)。二师兄:与手......
  • [QML]从零开始QML开发(二)QML开发,浅谈控件、槽函数、锚等基本概念。QML和C++怎么交互?贯
    [QML]从零开始QML开发(二)QML开发,浅谈控件、槽函数、锚等基本概念。QML和C++怎么交互?贯彻落实MVC原则先看代码:importQtQuick2.12importQtQuick.Window2.12importQtQuick.Controls2.5Window{visible:truewidth:320height:480title:qsTr("HelloW......