基于文件的数据管理实例(R语言版)

摘要

在学习数据库原理之前很多小伙伴可能都会接触文件系统管理,现在我们用一个实例来理解一下它。假如我们有一个教学管理系统,所有的数据都用csv文件保存,我们如何模拟对这个系统的一系列操作呢?且听我慢慢道来

目录

压缩文件说明

文件的随机生成

1.首先是记录学生选课信息的文件StudentClassChoose.csv

2.其次是记录学生每门课程分数的文件CourseGrades.csv

3.然后是课程信息文件CourseInfo.csv

4.最后是教师信息文件

模拟数据管理

1.如果我们需要查询某个学生的选课情况,请问怎么实现?

2.如果我们要查询某门课程的选课情况,如何实现?

3.如果我们要修改某个学生某门课程的分数,怎么实现?

4.如果我们要给某个学生退课,怎么操作实现?

5.如果一个教师没有开课,我们怎么查询这个教师的信息?

6.如果我们需要约束每个学生每个选课的学分不能低于20,如何实现?

总结


压缩文件说明

我将我用到的所有代码都保存为了一个R脚本文件FonctionCode.R并放在了文件夹中,里面的csv文件是我在模拟过程中用到的文件,读者也可以删除以后自己调用函数来模拟~

点这里下载~

文件的随机生成

为了模拟文件系统的管理方式,在这里我使用R语言作为工具,首先假设有一个教学管理系统,我们先为它随机生成一些数据文件:

1.首先是记录学生选课信息的文件StudentClassChoose.csv

假设我们有100个学生,这里用一个6位的学号作为其唯一标识,假设有八门课程分别为Chinese,Mathematics,English,Physical,Chemistry,Biology,History和Geography,为便于读者模拟,我把它放到函数StudentChooseClass中,调用StudentChooseClass(),即可生成文件StudentClassChoose.csv,模拟学生选课的这一过程,表中0表示为选课,1表示已选课:

StudentChooseClass <- function(){
  studentID <- as.character(sample(100000:999999,100))
  Chinese <- sample(0:1,100,replace = T)
  Mathematics <- sample(0:1,100,replace = T)
  English <- sample(0:1,100,replace = T)
  Physical <- sample(0:1,100,replace = T)
  Chemistry <- sample(0:1,100,replace = T)
  Biology <- sample(0:1,100,replace = T)
  History <- sample(0:1,100,replace = T)
  Geography <- sample(0:1,100,replace = T)
  StdClsChos <- data.frame(studentID,Chinese,Mathematics,English,Physical,Chemistry,History,Geography,Biology)
  rownames(StdClsChos) <- paste("student",1:100,sep = "")
  write.csv(StdClsChos,"StudentClassChoose.csv")
}

可以看一下随机生成的结果(这里只展示前20条):

2.其次是记录学生每门课程分数的文件CourseGrades.csv

在这里需要注意的是,学生只有在选了课程以后相应的课程才会有分数,所以在随机生成这一文件的时候是有一定的条件的,需要参照StudentClassChoose.csv里的选课信息来赋予分数,在这里我用两重循环来实现,未选的课程用NA来表示,并放到了函数RandomCourseGrades()中:

RandomCourseGrades <- function(){
  CourseGrades <- StdClsChos
  for(i in 1:nrow(CourseGrades)){
    for(j in 2:ncol(CourseGrades)){
      if(StdClsChos[i,j]==1)CourseGrades[i,j] <- sample(0:100,1)
      else if(StdClsChos[i,j]==0)CourseGrades[i,j] <- NA
    }
  }
  write.csv(CourseGrades,"CourseGrades.csv")
}

我们看一下随机生成的结果:

3.然后是课程信息文件CourseInfo.csv

假设每个课程包含课程学分和任课教师的信息,我们也同样可以通过模拟生成一个文件:

RandCourseInfo <- function(){
  AllTeacher <- paste("teacher",1:9,sep = "")
  course <- c("Chinese","Mathematics","English","Physical","Chemistry","History","Geography","Biology")
  teacher <- sample(AllTeacher,8,replace = T)
  credit <- sample(5:8,8,replace = T)
  CourseInfo <- data.frame(credit,teacher)
  row.names(CourseInfo) <- course
  write.csv(CourseInfo,"CourseInfo.csv")
}

这里假设课程学分从5到8分不等,我们可以看看生成的结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值