首页 > 其他分享 >本科生导师制问题之文件存取累加

本科生导师制问题之文件存取累加

时间:2023-06-25 16:14:20浏览次数:51  
标签:导师制 研究生 本科生 string int lines 累加

在小学期的过程中,我选择了一个本科生导师制的问题,主要数据结构是广义表,在编写功能的时候有一个统计某导师所有的学生数量,其中包括研究生、本科生两种,为此我编写了一个函数,具体如下


void updateFile(const string& filename, const string& tutorName, int updatedNumber1, int updatedNumber2) {
ifstream inputFile(filename);
vector lines;
string line;


// 读取文件内容
while (getline(inputFile, line)) {
	lines.push_back(line);
}

inputFile.close();

// 在文件中查找对应导师的行
for (int i = 0; i < lines.size(); i++) {
	if (lines[i].find(tutorName) != string::npos) {
		// 更新对应导师的行
		int pos = lines[i].find("研究生、本科生的人数分别为:");
		string prefix = lines[i].substr(0, pos);
		string suffix = lines[i].substr(pos + strlen("研究生、本科生的人数分别为:"));

		// 解析当前的研究生和本科生人数
		int currentNumber1 = 0;
		int currentNumber2 = 0;
		sscanf_s(suffix.c_str(), "%d %d", &currentNumber1, &currentNumber2);

		// 累加更新后的数字
		int updatedNumber1Total = currentNumber1 + updatedNumber1;
		int updatedNumber2Total = currentNumber2 + updatedNumber2;

		// 构造更新后的行
		string newLine = prefix + "研究生、本科生的人数分别为:" + to_string(updatedNumber1Total) + " " + to_string(updatedNumber2Total);
		lines[i] = newLine;

		// 写回文件
		ofstream outputFile(filename);
		for (const string& updatedLine : lines) {
			outputFile << updatedLine << endl;
		}
		outputFile.close();

		cout << "成功累加更新导师 " << tutorName << " 的研究生、本科生人数。" << endl;

		return;
	}
}

cout << "未找到导师 " << tutorName << " 的信息。" << endl;
}

这个函数实现的是提取文件中的行,对其进行分割,然后提取出其中的数字,对数字和传入的参数进行求和,再构造一个新的行,再存储回去,说实话,写这个函数的时候真切的让我感受到了为什么大家说计算机是一个傻瓜的天才,每一个步骤都需要详细的写明,其中使用了一些以前基本没有接触过的函数,包括cstr/sscanf_s等。

标签:导师制,研究生,本科生,string,int,lines,累加
From: https://www.cnblogs.com/Arkiya/p/17503141.html

相关文章

  • 本科生应该选择考研还是就业?这是所有大学生应该思考的问题
    亮观点首先要声明接下来的内容主要是针对互联网人来说的,不适用于所有人。对于互联网人,特别是做技术的来说,越早就业越好。是什么给出这个结论?我在大一的时候就决定了毕业以后找工作,读到高三已经是12年的光阴,对于当时的我来说,再读完四年大学,我再也不想读书了。一是因为家庭条件......
  • mysql聚合函数---总体聚合、总体累加、分组聚合、分组累加
    MySQL从版本8.0开始,才支持窗口函数,所以之前的版本分组累加需要构造sql语句来实现。数据:select*fromemp;一、mysql总体聚合函数min()、max()、count()、sum()、avg()selectcount(ename),max(sal),min(sal),sum(sal),round(avg(sal),2)fromemp;二、mysql总体累加/总体累计数量......
  • 累加与累乘器
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ intt2=1,sum=0,t1=0,i; printf("请输入需要累加累积次数:\n"); scanf("%d",&t1); for(i=1;i<=t1;i++) { sum+=i; t2*=i; } printf("%d次累积=%......
  • 求累加和
    题目描述:求  输入格式:无输出格式:题目描述中算式的值,并保留4位小数。样例输入:无样例输出:无时间限制:1000ms......
  • 载波同步仿真,使用的是反馈补偿法,接收信号经补偿矩阵,误差提取,环路滤波,相位累加器后反馈
    载波同步仿真,使用的是反馈补偿法,接收信号经补偿矩阵,误差提取,环路滤波,相位累加器后反馈回补偿矩阵,稳定后估计相位趋近相位差,存在相位模糊情况ID:95200672832692285......
  • 累加求和 1~ n求和
    a=1~n的求和\[\sum_{a=1}^na\]公式:(首项+末项)*项数/2如果a=1、n=10=>(1+10)10/2=55Python代码a=1n=101#常规方法sum=0foriinrange(a,n):sum+=iprint(sum)#递归方法defsum(num):ifnum==1:return1ret......
  • 数组求和累加
    publicclassTest2{publicstaticvoidmain(String[]args){int[]arr={68,27,95,88,171,996,51,210};intsum=getEvenNumberSum(arr);System.out.println(sum);}/*一个数组,元素是{68,27,95,88,171,996,51,210}求出该数......
  • LeetCode 538.把二叉搜索树转换成累加树
    1.题目:给出二叉搜索树的根节点,该树的节点值各不相同,请你将其转换为累加树(GreaterSumTree),使每个节点node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键小于节点键的节点。节点的右子树仅包含键大于节点键的......
  • sql 逐行累加
    sql逐行累加,包括当前行selectname,sl,sum(sl)over(partitionbynameorderbynamerowsbetweenunboundedprecedingandcurrentrow)asaccumulatefromtest;    可以实现在窗口中进行逐行累加selectuid,month,amount,sum(amount)over(partitionbyuid......
  • 实现一个无限累加的 sum 函数
    实现一个sum函数如下所示:sum(1,2,3).valueOf();//6sum(2,3)(2).valueOf();//7sum(1)(2)(3)(4).valueOf();//10sum(2)(4,1)(2).valueOf();//9sum(1)(2)(3)(4)(5)(6).valueOf();//21可以这样functionsum(...args){//allArgs收集所有的argsleta......