linux信息管理系统,编写思路

本周,我们进行了第一个项目,编写一个信息管理系统,主要功能是实现对信息的增删改查。自己第一次编写的相对比较简陋,在参考整理了一些同学的项目后,在此整理一下整个程序的编写思路。

以学生信息管理系统为例,我们把这个系统分为两个大的部分来完成,第一部分是账号的登录和注册,第二部分则是对于信息的增删改查。

数据的定义:

在一切开始以前,我们先定义一下账号和学生信息,账号就是简单的char[20]用户名和char[20]的密码,学生信息则是以int的学号,char[20]的姓名,char[8]的性别来记录。(当然可以往里面再添加成绩什么的,但int和char两种类型举例完全足够,也就不展示了。)再解释一下学号的构成,比如有int id = 201705010210,这里2017指的是入学年份,05指的是院系编号,01指的是具体专业编号,02是班级,10则是学生在班级里的编号,翻译一下就是,该生是2017级05(电子工程)学院01(测控技术与仪器)专业02(二班)10号。

数据存储结构:

在信息存储结构方面,账号信息我们使用的是链式表结构,相对于顺序表,它没有明确的数据存储上限。学生信息则使用的是Hash表结构,Hash函数是id/100000000%100,得到学号中第三位和第四位的数字,即201705010210中的17年,将hsah数组的长度设置为100,既分类存放2000-2099年的数据。

文件的读写:

在整个系统的开始与结束,我们还需要进行对数据文件的读写操作。我使用的是文件IO,open(打开文件),close(关闭文件),read(读取文件),write(写入文件)。

在打开文件时,我推荐加上O_CREAT参数,如果文件不存在,会新建文件。也就不需要预先新建一些用于存储信息的文件了。

在要进行写文件操作而打开文件时,需要使用O_TRUNC参数,它在打开文件时会删除文件中原有的数据,之后在写入数据。相当于进行了一个覆盖保存的操作。

在读文件时,需要申请空间来存放数据。

在写文件结束后,整个系统末尾时,还要对记录着数据空间的空间进行释放操作。

登录注册:

登录,输入账号和密码,然后进行判定。

将链表的首地址给p,p  !=   NULL作为循环条件来遍历整个链表。

char型字符串的判定需要用strcmp(char *a,char *b),如果字符串a和b内容相同,则返回0。

先判断账号,账户数据中没有相同的账号则提示输入账号错误,有相同账号则进行密码判定,密码错误提示输入密码有误,密码相同则进入对数据的操作界面。

数据操作:

增加:1、进行学号的遍历查重,如果有相同的 学号,则视为该生信息已存在,不需要增加信息,增加信息失败。2、在增加信息时,记得要申请一个节点空间存放该学生信息,才能有效增加数据。

删除:1、进行学号的遍历查重,如果没有相同的学号,则该生信息不存在,不需要删除信息,删除信息失败。2、在删除信息时,记得记录删除节点的地址,在最后释放节点空间。

修改:1.进行学号的遍历查重,如果有没有相同学号,则该生信息不存在,无法修改信息,修改信息失败。2、修改信息直接用赋值操作即可完成。

查看:主要就是对数据的遍历,char型的数据(例如姓名、性别可以用strcmp函数比较),int型的数据直接相等即可。因为学号包含的信息比较多,我们还可以进行如下的操作:

示例:

id/100 000 000 == 2017,查看2017级的所有学生信息;

id/1 000 000 == 201705,查看电工院2017级的所有学生信息;

id/1 000 000%100 == 05,查看电工院的所有学生信息;

大致思路就是这样,具体使用到的函数不是本文重点,不多赘述。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值