IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2021.12.13总结 -> 正文阅读

[C++知识库]2021.12.13总结

预备役结束啦!

虽然预备役结束了,我最终还是被pass掉了,但还是很开心,毕竟我在这期间也学到了很多东西,从开始的面试,对我来说就是一个挑战,那也是我第一次面试,尽管做的不是很好,但至少我尝试过了,这让我以后面试就没那么害怕了。然后在预备役期间,题组就开了三组,但都是针对某个知识或者算法开的,像开的结构体题组相当于帮我复习了一遍结构体的使用,字符串组的话就是对字符串的各种操作,这个需要灵活变通,最主要的就是栈组了,刷完之后对栈的简单使用还是都会了,用c写就比较麻烦,就知道了c++里有直接对栈的操作的函数,学会了之后方便多啦。然后预备役做的项目是简单通讯录,听名字确实也挺简单的,基本功能健全,主要就是对链表跟文件的操作,写这个也是一种复习吧,还学了一个模糊查找,在对文件读写写入的时候出现了几个bug,因为对文件的操作有很多细节的问题,找了几天才把这个小问题解决,那下次写其它用到文件操作的时候就不会放这种错误了。答辩其实挺失败的,但没关系,总是要在失败中积累经验嘛,好好学习才是重点,在哪学都一样,我个人认为。

这是简单通讯录的代码:

#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include<windows.h>
#define node (struct list*)malloc(sizeof(struct list))//宏定义开辟节点替换 
/*   链表
    文件操作
    函数
    结构体
    模糊查找
*/ 
//通讯录包括姓名,性别,电话号码,家庭住址,工作(学习)单位 
typedef struct list {
	char name[50];
	char sex[5];
	char tel[50];
	char address[100];
	char work[100];
	struct list *next;
} P;
//函数声明 
P *Filelr();
P *add(P *head);
P *upd(P* head);
int findname(char *str1,char *str2);
P *find(P* head);
P *save(P *head,int flag);
P *print(P *head);
P *clear(P *head);
P *sum(P *head);
FILE *fp;
// 把文件内的信息地址存入,建立链表
P *Filelr() {
	P *p1,*p2,*head,*p;
	fp=fopen("D:\\book.txt","r+");
	rewind(fp);//光标移到文件开头 
	p1=node;
	p1->next=NULL;
	if(fscanf(fp,"%s %s %s %s %s\n",p1->name,p1->sex,p1->tel,p1->address,p1->work)==EOF) return head=NULL;
	else {
		rewind(fp);
		head=p1;
		while(!feof(fp)) {
			fscanf(fp,"%s %s %s %s %s\n",p1->name,p1->sex,p1->tel,p1->address,p1->work);
		    if(feof(fp)!=0) break;
			p2=p1;
			p1=node;
			p2->next=p1;
			p1->next=NULL;
		}
	}
	fclose(fp);
	return head;
}
// 新增联系人,建立在链表末尾 
P *add(P *head) {
	P *p,*p1,*p2;
	fp=fopen("D:\\book.txt","a+");
	p=node;
	printf("请输入您需要添加的用户信息:\n");
	printf("请输入用户姓名:");
	scanf("%s",p->name);
	fprintf(fp,"%s ",p->name);
	printf("请输入用户性别:");
	scanf("%s",p->sex);
	fprintf(fp,"%s ",p->sex);
	printf("请输入用户电话号码:");
	scanf("%s",p->tel);
	fprintf(fp,"%s ",p->tel);
	printf("请输入用户家庭住址:");
	scanf("%s",p->address);
	fprintf(fp,"%s ",p->address);
	printf("请输入用户工作(学习)单位:");
	scanf("%s",p->work);
	fprintf(fp,"%s\n",p->work);
	if(head==NULL) {
		head=p;
		p->next=NULL;
	} else {
		p1=p2=head;
		while(p1!=NULL) {
			p2 = p1;
			p1=p1->next;
		}
		p2->next=p;
		p->next=NULL;
	}
	printf("您已成功添加该用户!\n");
	getchar();
	getchar();
	fclose(fp);
	return head;
}
//删除想要删除的联系人,从链表中删除,文件全覆盖 
P *del(P *head) {
	P *p1,*p2;
	int flag=0;
	char name[50];
	fp=fopen("D:\\book.txt","w");
	p1=p2=head;
	printf("请您输入需要删除的用户姓名:\n");
	scanf("%s",name);
	if(head!=NULL) {
		while(p1!=NULL) {
			if(strcmp(p1->name,name)==0) {
				if(head!=p1)    p2->next=p1->next;
				else   	head=p1->next;
				free(p1);
				printf("您已成功删除该用户!\n");
				flag=1;
				break;
			} else {
				p2=p1;
				p1=p1->next;
			}
		}
		if(flag==0)	printf("当前通讯录查无此人!\n");
		else 
		{
			p1=head;
			while(p1!=NULL) {
			fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->sex,p1->tel,p1->address,p1->work);
			p1=p1->next;
	      }
	      	fclose(fp);
		}
	} else	printf("当前通讯录无用户!\n");
	getchar();
	getchar();
	return head;
}
//修改用户信息,查找是否相等,想等进行修改,对文件进行全覆盖 
P *upd(P* head) {
	P *p1, *p2;
	int flag=0;
	fp=fopen("D:\\book.txt","w");
	char name[50];
	p2=p1=head;
	printf("请您输入需要修改的用户姓名:\n");
	scanf("%s",name);
	if(head!=NULL) {
		while(p1!=NULL) {
			if(strcmp(p1->name,name)==0) {
				printf("请您根据提示修改用户信息:\n");
				printf("将姓名(%s)修改为:",p1->name);
				scanf("%s",p1->name);
				printf("将性别(%s)修改为:",p1->sex);
				scanf("%s",p1->sex);
				printf("将电话号码(%s)修改为:",p1->tel);
				scanf("%s",p1->tel);
				printf("将家庭住址(%s)修改为:",p1->address);
				scanf("%s",p1->address);
				printf("将工作(学习)单位(%s)修改为:",p1->work);
				scanf("%s",p1->work);
				printf("您已成功修改该用户!\n");
				flag=1;
				break;
			} else {
				p2=p1;
				p1=p1->next;
			}
		}
		if(flag==0) printf("当前通讯录查无此人!\n");
		else 
		{
			p1=head;
			while(p1!=NULL) {
			fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->sex,p1->tel,p1->address,p1->work);
			p1=p1->next;
	      }
	  }
	} else	printf("当前通讯录无信息!\n");
	fclose(fp);
	getchar();
	getchar();
	return head;
}

int findname(char *s1,char *s2)//模糊查找 
{
	 char *st;
	 while(*s1!='\0')
	 {
	 	 while(*s1!='\0'&&*s1!=*s2)
	 	   s1++;
	 	   st=s2;
	 	   while(*s1!='\0'&&*st!='\0')
	 	   {
	 	   	if(*st!=*s1) break;
	 	   	st++;
	 	   	s1++;
			}
			if(*st=='\0') return 1;
	 } 
	 return 0;
 } 
// 查询用户信息 
P *find(P* head) {
	P *p1,*p2;
	int flag=0;
	char name[50];
	p2=p1=head;
	printf("请您输入需要查找的用户姓名:\n");
	scanf("%s",name);
	if(head!=NULL) {
		while(p1!=NULL) {
			if(findname(p1->name,name)==1) {
				printf("以下是该用户信息:\n");
				printf("姓名:%s  ",p1->name);
				printf("性别:%s  ",p1->sex);
				printf("电话号码:%s\n",p1->tel);
				printf("家庭住址:%s  ",p1->address);
				printf("工作(学习)单位:%s  ",p1->work);
				printf("\n");
				flag=1;
			  }
				p2=p1;
				p1=p1->next;
			}
		if(flag==0)	printf("当前通讯录查无此人!\n");
	} else printf("当前通讯录无数据!\n");
	getchar();
	getchar();
	return head;
}
//保存链表中的用户数据到文件中 
P *save(P *head) {
	fp=fopen("D:\\book.txt","w");
	rewind(fp);
	P *p1;
	p1=head;
	if(head!=NULL) {
		while(p1!=NULL) {
			fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->sex,p1->tel,p1->address,p1->work);
			p1=p1->next;
		}
		printf("您已成功保存所有用户信息!\n");
	} else {
	printf("当前无用户保存!\n");
	}
	getchar();
	getchar();
	fclose(fp);
	return head;
}
//预览整个通讯录 
P *print(P *head) {
	P *p;
	p=head;
	if(head!=NULL) {
		printf("现有通讯录列表:\n");
		while(p!=NULL) {
			printf("姓名:%s    ",p->name);
			printf("性别:%s    ",p->sex);
			printf("电话号码:%s\n",p->tel);
			printf("家庭住址:%s   ",p->address);
			printf("工作(学习)单位:%s    \n",p->work);
			p=p->next;
		}
	} else {
		printf("目前通讯录无用户信息!\n");
	}
	getchar();
	getchar();
	return head;
}
//清除整个通讯录 
P *clear(P *head) {
	fp=fopen("D:\\book.txt","w");
	printf("您已成功清除通讯录所有信息!\n");
	getchar();
	getchar();
	fclose(fp);
	return head=NULL;
}
//计算通讯录中的用户个数 
P *sum(P *head) {
	P *p1;
	int count=0;
	p1=head;
	if(head!=NULL) {
		while(p1!=NULL) {
			count++;
			p1=p1->next;
		}
		printf("当前通讯录中包含%d个用户!\n",count);
	} else {
		printf("当前通讯录中无用户!\n");
	}
	getchar();
	getchar();
	return head;
}
//菜单页面 
int initPrint() {
		printf("==============================================================\n");
	    printf("                        0.退出系统                        \n");
		printf("                        1.新增通讯录                      \n");
		printf("                        2.删除通讯录                      \n");
		printf("                        3.修改通讯录                      \n");
		printf("                        4.查询详细信息                    \n");
		printf("                        5.保存数据                        \n");
		printf("                        6.预览信息                        \n");
		printf("                        7.清除通讯录                      \n");
		printf("                        8.统计通讯录                      \n");
		//printf("                        9.清屏                            \n");
		printf("==============================================================\n");
		printf("请选择您要进行的操作(0---8):\n");
		int x;
    scanf("%d",&x);
    while(x!=0&&x!=1&&x!=2&&x!=3&&x!=4&&x!=5&&x!=6&&x!=7&&x!=8)
    {
        printf("您的选择不合法,请重新输入:\n");
        scanf("%d",&x);
    }
    return x;
}
void firstpage1()//小方块 
{
    SetConsoleTitle("欢迎进入简单通讯录系统");//设置当前控制台窗口的标题
    //消息框没有所有者窗口,要显示的消息,对话框标题,有一个确认按钮在里面
    IDYES==MessageBox(NULL,"欢迎进入简单通讯录系统","苒意服务",MB_OK);
}
//结束页面
void endpage()
{
    system("cls");
    printf("========================简单通讯录系统========================\n\n");
    printf("       ========         您已成功退出!   ========\n\n");
    printf("==============================================================\n\n");
}
//主函数 
int main() {
	P *head;
	system("color f0");//设置颜色 
	firstpage1();//设计小窗口
	head=Filelr();//读取文件 
	while(1) {
		system("cls");//清屏 
		int number=initPrint();//进入页面进行选择 
		if(number==0) {
			endpage();//退出 
			break;
		} else {
			switch(number) {
				case 1:
					head=add(head);//新增 
					break;
				case 2:
					head=del(head);//删除 
					break;
				case 3:
					head=upd(head);//修改 
					break;
				case 4:
					head=find(head);//查找 
					break;
				case 5:
					head=save(head);//保存 
					break;
				case 6:
					head=print(head);//预览 
					break;
				case 7:
					head=clear(head);//清除 
					break;
				case 8:
					head=sum(head);//统计 
					break;
			}
		}
	}
}

继续加油!按时学习。

今天

8:00~9:40高数课

9:40~11:50图书馆

2:30~4:10 c程序设计

4:30~18:00体育课测试

7:00~8:00 选修

8点之后面试,面试结束后回来考试(实验室安全规则,网课),写总结

一·、去图书馆的意义在于恶补高数,因为基础比较差,上这个课听懂有点难,然后需要时间预习,听课,在写题,所以每次高数课下课之后我都会在学习一遍。接下来将是高数的日子。

二、c程序设计这个课老师在讲指针,我认真听了一下,还刷了两个简单的栈题,主要是对那几个函数的使用,都是用c++写的,觉得很有意思。

这是其中一个题:

输入格式

输入包含多组测试数据。

每组数据,第一行包含一个整数?nn。

接下来?nn?行,每行的第一个字符可能是?P?或者?O?或者?A;如果是?P,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是?O,表示将栈顶的值?pop?出来,如果堆栈中没有元素时,忽略本次操作;如果是?A,表示询问当前栈顶的值,如果当时栈为空,则输出?E

堆栈开始为空。

当输入一行为?n=0n=0?时,表示输入结束。

输出格式

对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的?A?操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出?E

当每组测试数据完成后,输出一个空行。

数据范围

每个输入最多包含?1010?组数据。
1≤n≤1041≤n≤104。
栈中元素取值范围?[1,10000][1,10000]。

输入样例:

3
A
P 5
A
4
P 3
P 6
O 
A
0

输出样例:

E
5

3

AC代码:

#include<iostream>
#include<stack>
using namespace std;
int main()
{
	stack<int> st;
	int n,x;
	char c;
	while(cin>>n,n!=0)
	{
		
		getchar();
		for(int i=0;i<n;i++)
		{
		 cin>>c;
		 if(c=='A')
		 {
		 	 if(st.empty()) cout<<'E'<<endl;
		 	 else cout<<st.top()<<endl;
		 }
		   if(c=='P')
	    {
		    cin>>x;
		    st.push(x);
	     }
	     if(c=='O')
	     {
	     	if(!st.empty())
	     	 st.pop();
		 }
	   }
	   cout<<endl;
	} 
	return 0;
}

三、选修时间补长,我在写高数的题目,(高数老师应该很感动,我选修都还在学它的科目)。

四、最后就是面试了,还是有一丝丝紧张,面试也很短,学长也没问什么。然后回来就开始搞那个实验室安全考试,几百个题,写了很久。还有网课的期末考试,也顺便完成了。

忙碌的一整天结束了,明天又是新的一天。加油苒意!

?

明日计划:

早上满课。

下午图书馆见,不出意外,写高数题,刷知识点的相关题目。

晚上晚自习,刷知识点的相关题目,要把那些知识用烂。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:45:21  更:2021-12-14 15:46:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:41:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码