联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> C/C++编程C/C++编程

日期:2018-07-27 04:20

数据结构与程序课程综合实践

实践1: 文件加解密

目的

(1)文件访问

(2)加解密文件

内容

(1)文件及其访问

掌握数据文件建立、数据的读写访问,包括文本文件、二进制文件

(2)文件加解密

采用位运算方法对文件进行加密和解密。采用主函数带参数方法。

作业要求

(1)实现人员数据文件的建立、访问;

(2)实现加密程序,要求加解密文件本身,不建立新文件。


实践2:基于顺序存储的人员信息管理系统

目的

掌握线性表的顺序存储

内容

顺序存储结构的设计、访问

作业要求

以类似人事管理系统为例,进行顺序存储的访问(建立、初始化、增、删、改):

假设人员信息记录包括编号、姓名、性别、年龄、出生年月日、工资和住址。功能要求:①增加人员记录;②修改人员记录;③删除人员记录;④查询人员记录;⑤显示人员记录。

设计思路:

①采用结构体类型描述人员信息;

②设定足够大的结构体类型数组存储人员信息;

③考虑管理的五个功能都要访问人员数据,把结构体数组设置为全局数组,同时定义全局变量记录当前人员个数;

④设计一个菜单,显示五个功能项;

五个功能设计要求;

增加人员记录

可随机增加人员信息,但要求人员信息有按编号从小到大排序。

修改人员记录

可修改人员信息。如果修改人编号,还要保留人员信息的有序性。

删除人员记录

可删除人员记录。首先根据人员编号定位即将删除人员,再进行删除。

查询人员记录

根据人员编号可查询到人员记录及其在数组中位置(下标)。建议先排序,再用折半查询。

显示人员记录

以交互方式按页(每页25行)方式显示所有人员记录信息。

除了上述五个功能函数外,还可设计其他辅助函数,以提高程序模块化程度。

#include "stdio.h"

#include "string.h"

#define OK 1//符号常量

#define ERROR -1

#define MAXSIZE 200//人群大小


typedef int Status;

struct DATE            //日期结构体类型

{ int month, day, year; };

typedef char NAME[20];//姓名字符数组类型

typedef char ADDRESS[500];//住址字符数组类型

typedef struct //人员结构体类型定义

{

int num;//编号,变量成员

NAME name;         //姓名,数组成员

char sex;              //性别,变量成员

struct DATE birth;//日期,变量成员

float salary;//工资,变量成员

ADDRESS address;//住址,数组成员

}PERSON;//人员数据类型


typedef struct

{

PERSON person[MAXSIZE];//人员集合

int count;//实际人数

}PEOPLE;//人员集合结构体类型定义


void Init();//函数声明

void Input();

Status Add();      

Status Update();

Status Delete();

Status Locate();

void Sort();

void Display();

void DisplayAll();

void DisplayPerson();

void Menu();

void OpenDataFile(char *filename,PEOPLE *people);

void CloseDataFile(char *filename,PEOPLE *people);


void main()

{

PEOPLE people;//定义人员存储空间

FILE *fp;

char filename[200]="d:\\C_EX2018\\workers.rec";

Init(&people); //初始化人员集合

OpenDataFile(filename,&people);//打开数据文件,读数据集

Menu(&people);//人员系统菜单操作

CloseDataFile(filename,&people);//关闭数据文件,写数据集

}

void Menu(PEOPLE *people)//功能菜单

{

char sel;//菜单选项

int index,num;//人员在集合中下标、人员编号

PERSON person;//人员变量

while(1)//无限循环

{

printf("1.增加人员 Add Person.\n");//菜单项

printf("2.更新人员 Update Person.\n");

printf("3.删除人员 Delete Person.\n");

printf("4.查询人员 Query Person.\n");

printf("5.显示人员 Display People.\n");

printf("6.退出 Exit.\n");

sel=getch();

index=-1;

switch(sel)

{

case '1':Input(&person);//输入一个人员

if(Add(people,person)==ERROR) //加入人员成功?

{

printf("不能加入人员.\n");

break;

}

Sort(people);//人员集合排序

break;

case '2':printf("Number:");//输入人员编号

scanf("%d",&num);

if(Locate(people,num,&index)==ERROR)//人员定位(查询)成功?

{

printf("没找到.\n");

break;

}

Display(people,index);//显示找到人员

Input(&person);//输入人员信息

if(Update(people,index,person)==ERROR)//人员信息更新成功?

{

printf("不能更新人员.\n");

break;

}

Sort(people);//人员集合排序

break;

case '3':printf("Number:");//输入人员编号

scanf("%d",&num);

if(Locate(people,num,&index)==ERROR)//人员定位(查询)成功?

{

printf("没找到.\n");

break;

}

Display(people,index);//显示找到人员

if(Delete(people,index,&person)==ERROR)//人员删除成功?

printf("不能删除人员\n");

break;

case '4':printf("Number:");//输入人员编号

scanf("%d",&num);

if(Locate(people,num,&index)==ERROR)//人员定位(查询)成功?

{

printf("没找到.\n");

break;

}

Display(people,index);//显示找到人员

break;

case '5':DisplayAll(people);//显示所有人员

break;

case '6':printf("===End===\n");//退出菜单

return;

}

}

}


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp