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++知识库 -> 学习C语言后第一个像样的小系统 -> 正文阅读

[C++知识库]学习C语言后第一个像样的小系统

要求是建立一个学生社团管理系统
其中主要的是基本信息和主要功能

(1) 学生社团基本信息包括:
社团编号(no)、社团名称(name)、社团类型(tupe)、
社团隶属院系(departments)、社团负责人(head)、
社团批准时间(approvaltime)、社团活动内容(content)、
社团简介(synopsis)、社团联系电话(telephone)等。
(2) 系统具有的功能
菜单方式选择功能;
社团信息录入,要求数据以文件形式保存;
社团信息浏览;
社团信息查询,查询方式可以是按社团编号、社团名称等方式查询;
社团信息的修改与删除。

**

第一个就是要建立一个结构体用来存储多名学生的多项信息

**

typedef struct
{
	char no[11];
	char name[18];
	char tupe[10];
	char departments[10];
	char head[5];
	char approvaltime[20];
	char content[50];
	char synopsis[50];
	char telephone[15];
	int i;
}Student;
Student stu[N];

其次是定义全局变量n

int n = 0;

接下来就是建立菜单函数,使系统功能以菜单方式工作

int menu() 
{
	int c;
	do{
		printf("\t========学生社团管理系统========\n\n");
		printf("\t\t1. 输入学生社团信息\n");
		printf("\t\t2. 输出学生社团信息\n");
		printf("\t\t3. 查询学生社团信息\n");
		printf("\t\t4. 删除学生社团信息\n");
		printf("\t\t5. 插入学生社团信息\n");
		printf("\t\t6. 学生社团信息排序\n");
		printf("\t\t0. 退出系统\n\n");
		printf("\t请选择:"); 
		scanf("%d",&c);
	}while(c<0||c>6);  //当c值小于0或大于6时,循环输出,直到不满足。
	return(c);  //返回c值给主调函数,用来选择相应功能。
}

接着建立函数以用来输入学生社团信息

void Input() 
{
	char k,x[10];
	while(k!='n'&&k!='N')
	{
		printf("输入社团编号:n=%d",n);
		scanf("%s",&stu[n].no);
		printf("输入社团名称:");
		scanf("%s",&stu[n].name);
		printf("输入社团类型:");
		scanf("%s",&stu[n].tupe);
		printf("输入社团隶属院系:");
		scanf("%s",&stu[n].departments);
		printf("输入社团负责人:");
		scanf("%s",&stu[n].head);
		printf("输入社团批准时间:");
		scanf("%s",&stu[n].approvaltime);
		printf("输入社团活动内容:");
		scanf("%s",&stu[n].content);
		printf("输入社团简介:");
		scanf("%s",&stu[n].synopsis);
		printf("输入社团联系电话:");
		scanf("%s",&stu[n].telephone);
		stu[n].i=1;
		gets(x);
		printf("输入下一个?(Y/N)\n");
		scanf("%c",&k);
		n++;
	} 
}

当然输入信息就有输出信息的函数啦

void Output() 
{
	int i;
	printf("-------------------------------------------------------------------\n");
	printf("编号   名称   类型   隶属院系   负责人   批准时间   活动内容   简介   联系电话\n"); 
	printf("-------------------------------------------------------------------\n");
	for(i=0;i<n;i++)
	{
	printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",stu[i].no,stu[i].name,stu[i].tupe,stu[i].departments,stu[i].head,stu[i].approvaltime,stu[i].content,stu[i].synopsis,stu[i].telephone);
	printf("-------------------------------------------------------------------\n");
	}
}

当我们有信息是错误或是需要删除的时候就需要一个删除信息的函数了

void Delete() 
{
	char x[8]; 
	int j,i=0;
	printf("输入要删除的社团名称:"); 
	scanf("%s",x); 
	while(strcmp(stu[i].name,x)!=0&&i<n)
		i++; 
	if(i==n) 
	{
		printf("未找到相关学生社团信息!\n"); 
	}
	for(j=i;j<n-1;j++)
	{
		strcpy(stu[j].no,stu[j+1].no);
		strcpy(stu[j].name,stu[j+1].name);
		strcpy(stu[j].tupe,stu[j+1].tupe);
		strcpy(stu[j].departments,stu[j+1].departments);
		strcpy(stu[j].head,stu[j+1].head);
		strcpy(stu[j].approvaltime,stu[j+1].approvaltime);
		strcpy(stu[j].content,stu[j+1].content);
		strcpy(stu[j].synopsis,stu[j+1].synopsis);
		strcpy(stu[j].telephone,stu[j+1].telephone);

	}
	n--;
printf("该学生社团信息已删除!\n");
}

要在茫茫海洋当中寻找属于我们的所要的那一滴水,让我们用一个查找函数来实现吧

void Findname()  //按名称查找学生社团信息。
{
	char s[20];
	int i=0;
	printf("请输入要查询的学生社团名称:"); 
	scanf("%s",&s);
	while(strcmp(stu[i].name,s)!=0&&i<n)
		i++;
	if(i==n) 
	{
		printf("未找到相关学生社团信息!\n");
	}
	printf("-------------------------------------------------------------------\n");
	printf("编号   名称   类型   隶属院系   负责人   批准时间   活动内容   简介   联系电话\n"); 
	printf("-------------------------------------------------------------------\n");
	printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",stu[i].no,stu[i].name,stu[i].tupe,stu[i].departments,stu[i].head,stu[i].approvaltime,stu[i].content,stu[i].synopsis,stu[i].telephone);
	printf("-------------------------------------------------------------------\n");
}

void Findno()  //按编号查找学生社团信息。
{
	char s[20];
	int i=0;
	printf("请输入要查询的学生学号:");
	scanf("%s",&s);
	while(strcmp(stu[i].no,s)!=0&&i<n)
		i++;
	if(i==n)
	{
		printf("未找到相关学生社团信息!\n");
	}
	printf("-------------------------------------------------------------------\n");
	printf("编号   名称   类型   隶属院系   负责人   批准时间   活动内容   简介   联系电话\n");
	printf("-------------------------------------------------------------------\n");
	printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n",stu[i].no,stu[i].name,stu[i].tupe,stu[i].departments,stu[i].head,stu[i].approvaltime,stu[i].content,stu[i].synopsis,stu[i].telephone);
	printf("-------------------------------------------------------------------\n");
}

然后就是插入信息的部分

void Insert()  //插入学生社团信息。
{
	int i,j;
	printf("请输入要插入的位置:");
	scanf("%d",&i);
	if(i>n)
	{
	  printf("输入社团编号:");
	  scanf("%s",&stu[n].no);
	  printf("输入社团名称:");
	  scanf("%s",&stu[n].name);
	  printf("输入社团类型:");
	  scanf("%s",&stu[n].tupe);
	  printf("输入社团隶属院系:");
	  scanf("%s",&stu[n].departments);
	  printf("输入社团负责人:");
	  scanf("%s",&stu[n].head);
	  printf("输入社团批准时间:");
	  scanf("%s",&stu[n].approvaltime);
	  printf("输入社团活动内容:");
	  scanf("%s",&stu[n].content);
	  printf("输入社团简介:");
	  scanf("%s",&stu[n].synopsis);
	  printf("输入社团联系电话:");
	  scanf("%s",&stu[n].telephone);
	
	  printf("学生社团信息输入成功!\n");
	}
	else
	{
		for(j=n-1;j>=i;j--)
		{
			strcpy(stu[j+1].no,stu[j].no);
			strcpy(stu[j+1].name,stu[j].name);
			strcpy(stu[j+1].tupe,stu[j].tupe);
			strcpy(stu[j+1].departments,stu[j].departments);
			strcpy(stu[j+1].head,stu[j].head);
			strcpy(stu[j+1].approvaltime,stu[j].approvaltime);
			strcpy(stu[j+1].content,stu[j].content);
			strcpy(stu[j+1].synopsis,stu[j].synopsis);
			strcpy(stu[j+1].telephone,stu[j].telephone);

		}
	    
		printf("输入社团编号:");
	    scanf("%s",&stu[i].no);
	    printf("输入社团名称:");
	    scanf("%s",&stu[i].name);
	    printf("输入社团类型:");
	    scanf("%s",&stu[i].tupe);
	    printf("输入社团隶属院系:");
	    scanf("%s",&stu[i].departments);
	    printf("输入社团负责人:");
	    scanf("%s",&stu[i].head);
	    printf("输入社团批准时间:");
	    scanf("%s",&stu[i].approvaltime);
	    printf("输入社团活动内容:");
	    scanf("%s",&stu[i].content);
	    printf("输入社团简介:");
	    scanf("%s",&stu[i].synopsis);
	    printf("输入社团联系电话:");
	    scanf("%s",&stu[i].telephone);
	
	    printf("学生社团信息输入成功!\n");

	}
	n++;
}

要是没有排序的话,那不就乱成一锅粥了

void Rank()  //学生社团信息排序。
{
	int i,j;
	char x[20],y[20],z[20],r[20],t[20],w[20],p[50],q[50],m[20];
	printf("正在根据学生学号进行排序,请稍后...\n");
	for(i=0;i<n-1;i++)
		for(j=0;j<n-1-i;j++) 
			if(strcmp(stu[j].no,stu[j+1].no)>0) 
			{
				strcpy(x,stu[j].no);
				strcpy(stu[j].no,stu[j+1].no);
				strcpy(stu[j+1].no,x); 

	            strcpy(y,stu[j].name); 
				strcpy(stu[j].name,stu[j+1].name); 
				strcpy(stu[j+1].name,y);
				
				strcpy(z,stu[j].tupe);
				strcpy(stu[j].tupe,stu[j+1].tupe);
				strcpy(stu[j+1].tupe,z);

				strcpy(r,stu[j].departments);
				strcpy(stu[j].departments,stu[j+1].departments);
				strcpy(stu[j+1].departments,r); 

				strcpy(t,stu[j].head);
				strcpy(stu[j].head,stu[j+1].head);
				strcpy(stu[j+1].head,t); 

				strcpy(w,stu[j].approvaltime);
				strcpy(stu[j].approvaltime,stu[j+1].approvaltime);
				strcpy(stu[j+1].approvaltime,w); 

				strcpy(p,stu[j].content);
				strcpy(stu[j].content,stu[j+1].content);
				strcpy(stu[j+1].content,p); 

				strcpy(q,stu[j].synopsis);
				strcpy(stu[j].synopsis,stu[j+1].synopsis);
				strcpy(stu[j+1].synopsis,q); 

				strcpy(m,stu[j].telephone);
				strcpy(stu[j].telephone,stu[j+1].telephone);
				strcpy(stu[j+1].telephone,m); 
			} 
}

下面就是一些小函数了

int Find()  //自定义函数,查找功能下的第二级菜单。
{
	int i;
	printf("\t\t1.按社团名称查询\n"); 
	printf("\t\t2.按社团编号查询\n"); 
	scanf("%d",&i);
	return i;  //将用户输入的数据(i值)返回到主调函数中。
}

void load()
{
	FILE* input;
	input=fopen("data.dat","rb");
	fread(&stu,sizeof(stu),1,input);
	fclose(input);
	int i=0;
	for(i=0;i<N;i++){
		if(stu[i].i>0)
			n++;
		else
			break;
	}
}

void save()
{
	stu[n].i=0;
	FILE* output;
	output=fopen("data.dat","wb");
	fwrite(&stu,sizeof(stu),1,output);
	fclose(output);
}

最后就是主函数啦

int main()  //主函数。
{
	load();
	for(;;)
	{
		for(;;)
		{
			int n=0;
			switch(menu()) 
			{
			  case 1:Input();Output();break;
			  case 2:Output();break;
			  case 3:
				switch(Find())
				{
				  case 1:Findname();break;
				  case 2:Findno();break;
				} break; 
			  case 4:Delete();break;
			  case 5:Insert();break;
			  case 6:Rank();Output();break;
			  case 0:save();exit(0);break;
			  default:printf("*输入错误!*");break;
			}
		}
	}
}

有许多需要改进的地方大家尽管提出来

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 00:01:57  更:2021-07-24 00:03:14 
 
开发: 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年5日历 -2024/5/7 19:37:46-

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