栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

用c语言实现简单的项目信息管理系统(单向链表实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用c语言实现简单的项目信息管理系统(单向链表实现)

这个其实是我之前为了进入学校的实验室而写的一个小项目,关于需要实现的功能(在菜单里)和具体思路就都写在代码里了,所以直接看完整的代码:

#include
#include
#include
#include
#include
#include
typedef struct project{
	char progname[50];
	char host[50];
	char members[100];
	char conductor[50];
	int membernum;
	char progkind[50];
	char prognum[50];
	struct project *next; 
}PROJECT;

//定义一些全局变量
char prognam[50];
char hos[50];
char member[100];
char conducto[50];
int membernu;
char progkin[50];
char prognu[50];

//随机输入一个七个字符长度的项目编号 
char*prognumBuild()
{
	char mysql1[]="0123456789";
	char mysql2[]="abcdefghljklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
	int i;
	int num_size1;
	int num_size2;
	int random;
	char *prognum=(char *)malloc(sizeof(char));
	srand((unsigned)time(NULL));
	num_size1=rand()%1+6;
	num_size2=rand()%1+1;
	for(i=0;inext=NULL;  
}

//查找尾结点
PROJECT *findLast(PROJECT *L)
{
	PROJECT *pt;
	pt=L;
	while(pt->next!=NULL)
	{
		pt=pt->next;
	}
	return pt;
}

//插入项目信息
void prog_add(PROJECT *&L)
{
	int num=0; 
	PROJECT *prePt,*pt;
	pt=(PROJECT *)malloc(sizeof(PROJECT));
	printf("项目名为:");
    scanf("%s",prognam);
	strcpy(pt->progname,prognam);
	printf("负责人为:");
	scanf("%s",hos);
	strcpy(pt->host,hos);
	printf("队员为:");
	scanf("%s",member);
	strcpy(pt->members,member);
	printf("指导老师为:");
	scanf("%s",conducto);
	strcpy(pt->conductor,conducto);
	printf("队员人数为:");
	num=scanf("%d",&membernu);
	while(num==0)
	{
		getchar();
		printf("输入非法,请重新输入一个数字:");
		num=scanf("%d",&membernu);	
	}
	pt->membernum=membernu;
	printf("项目类型为:");
	scanf("%s",progkin);
	strcpy(pt->progkind,progkin);
	printf("项目编号为:%sn",prognumBuild());
	strcpy(pt->prognum,prognumBuild());
	prePt=findLast(L);
	prePt->next=pt;
	pt->next=NULL;
	printf("增加成功!n");
 } 
 
 //浏览全部项目信息 
 void display(PROJECT *&L)
{  
    PROJECT *pt=L->next;  
    if(pt==NULL)  
    {  
        printf("还没有项目信息,请增加项目信息!n");  
        return;  
    }  
    while(pt)  
    {   
  			printf("项目名为:%st",pt->progname);
			printf("负责人为:%st",pt->host);
			printf("队员为:%st",pt->members);
			printf("指导老师为:%st",pt->conductor);
			printf("队员人数为:%dt",pt->membernum);
			printf("项目类别为:%st",pt->progkind);
			printf("项目编号为:%sn",pt->prognum);
			pt=pt->next;
    }  
}

//按项目编号降序输出项目信息
void low_print(PROJECT *L) 
{
	PROJECT *p,*q,*r;
	r=L->next;
	while(r!=NULL)
	{
		p=r;
		q=r->next;
		PROJECT *temp;
		InitList(temp);
		while(q!=NULL)
		{
			if(strcmp(p->prognum,q->prognum)<0)
			{
				//项目名 
				strcpy(temp->progname,p->progname);
				strcpy(p->progname,q->progname);
				strcpy(q->progname,temp->progname);
				//负责人 
				strcpy(temp->host,p->host);
				strcpy(p->host,q->host);
				strcpy(q->host,temp->host);
				//队员 
				strcpy(temp->members,p->members);
				strcpy(p->members,q->members);
				strcpy(q->members,temp->members);
				//指导老师 
				strcpy(temp->conductor,p->conductor);
				strcpy(p->conductor,q->conductor);
				strcpy(q->conductor,temp->conductor);
				//队员人数 
				temp->membernum=p->membernum;
				p->membernum=q->membernum;
				q->membernum=temp->membernum;
				//项目类型 
				strcpy(temp->progkind,p->progkind);
				strcpy(p->progkind,q->progkind);
				strcpy(q->progkind,temp->progkind);
				//项目编号 
				strcpy(temp->prognum,p->prognum);
				strcpy(p->prognum,q->prognum);
				strcpy(q->prognum,temp->prognum);
			}
			q=q->next;
		}
		r=r->next;
	}
	printf("排序后的项目信息为:n");
	display(L);
	
}

//模糊搜索,按项目编号删除项目信息
void prog_delete(PROJECT *L)
{
	char ch[10];
	PROJECT *pt,*prePt;
	prePt=L;
	pt=prePt->next;
	printf("请输入一个关键字:");
	scanf("%s",&ch);
	int flag=0;
	while(pt!=NULL)
	{
		if(strstr(pt->prognum,ch)!=NULL)
		{
			printf("需要删除项目的项目编号为:%sn",pt->prognum);
			prePt->next=pt->next;
			free(pt);
			flag=1;
			break;
		}
		else
		{
			prePt=pt;
			pt=pt->next;
		}
	}
	if(flag==1)
	{
		printf("删除项目信息成功!n");
	}
	else
	{
		printf("抱歉,未找到相关的项目信息!n");
	}
}

//模糊搜索,按项目编号修改项目信息 
void prog_change(PROJECT *L)
{
	char ch[10];
	PROJECT *pt;
	pt=L->next;
	printf("请输入一个关键字:n");
	scanf("%s",&ch);
	int flag=0;
	while(pt!=NULL)
	{
		if(strstr(pt->prognum,ch)!=NULL)
		{
			printf("%s",pt->prognum);
			flag=1;
			printf("请输入需要修改的项目信息:(1.项目名 2.负责人 3.队员 4.指导老师 5.队员人数 6.项目类别)n");
			int choose;
			scanf("%d",&choose);
			switch(choose)
			{
				case 1:
					printf("请输入您要修改的项目名:n");
					scanf("%s",prognam);
					printf("修改后的项目名为:%sn",prognam);
					strcpy(pt->progname,prognam);
					printf("修改成功!n");
					break;
				case 2:
					printf("请输入您要修改的负责人:n");
					scanf("%s",hos);
					printf("修改后的负责人为:%sn",hos);
					strcpy(pt->host,hos);
					printf("修改成功!n");
					break;
				case 3:
					printf("请输入您要修改的队员:n");
					scanf("%s",member);
					printf("修改后的队员为:%sn",member);
					strcpy(pt->members,member);
					printf("修改成功!n");
					break;
				case 4:
					printf("请输入要修改的指导老师:n");
					scanf("%s",conducto);
					printf("修改后的指导老师为:%sn",conducto);
					strcpy(pt->conductor,conducto);
					printf("修改成功!n");
					break;
				case 5:
					printf("请输入要修改的队员人数:n");
					scanf("%d",&membernu);
					printf("修改后的队员人数为:%dn",membernu);
					pt->membernum=membernu;
					printf("修改成功!n");
					break;
				case 6:
					printf("请输入要修改的项目类别:n");
					scanf("%s",progkin);
					printf("修改后的项目类别为:%sn",progkin);
					strcpy(pt->progkind,progkin);
					printf("修改成功!n");
					break;
				default :
					printf("请重新输入1-6的数字n");
					break;
			}
		}
		pt=pt->next;
	}
	if(flag==0)
	{
		printf("抱歉,未找到相关的项目信息!n");
	}
}

//按项目类别查询项目信息
void kind_search(PROJECT *L)
{
	int flag=0;
	PROJECT *pt;
	pt=L->next;
	printf("请输入相关项目类别,便于您查找相关项目信息:n");
	char s[100];
	scanf("%s",s);
	while(pt!=NULL)
	{
		if(strcmp(s,pt->progkind)==0)
		{
			flag=1;
			printf("该项目的项目名为:%sn",pt->progname);
			printf("该项目的负责人为:%sn",pt->host);
			printf("该项目的队员为:%sn",pt->members);
			printf("该项目的指导老师为:%sn",pt->conductor);
			printf("该项目的队员人数为:%dn",pt->membernum);
			printf("该项目的项目编号为:%sn",pt->prognum);
			break;
		}
		else
		{
			pt=pt->next;
		}
	}
	if(flag==0)
	{
		printf("抱歉,未找到相关的项目信息!n");
	}
 } 
 
 //模糊搜索,按项目编号查询项目信息 
void num_search(PROJECT *L)
{
	char ch[10];
	PROJECT *pt;
	pt=L->next;
	printf("请输入一个关键字:");
	scanf("%s",ch);
	int flag=0;
	while(pt!=NULL)
	{
		if(strstr(pt->prognum,ch)!=NULL)
		{
			flag=1;
			printf("%sn",pt->prognum);
			printf("该项目的项目名为:%sn",pt->progname);
			printf("该项目的负责人为:%sn",pt->host);
			printf("该项目的队员为:%sn",pt->members);
			printf("该项目的指导老师为:%sn",pt->conductor);
			printf("该项目的队员人数为:%dn",pt->membernum);
			printf("该项目的项目类别为:%sn",pt->progkind);
		}
		pt=pt->next;
	}
	if(flag==0)
	{
		printf("抱歉,未找到相关的项目信息!n");
	}
}

//将项目信息保存在文本文件中 
void  saveProjectFile(PROJECT *&L)
{
	FILE *fp;
	PROJECT *pt;
	pt=L->next;
	if((fp=fopen("project.txt","w"))==NULL)//对文件进行写操作 
	{
		printf("文件不能打开!n");
		exit(0);
	}
	while(pt!=NULL)
	{
		fprintf(fp,"%s %s %s %s %d %s %sn",pt->progname,pt->host,pt->members,pt->conductor,pt->membernum,pt->progkind,pt->prognum);
		pt=pt->next;
		printf("保存成功!n");
	}
	fclose(fp);
}



int main()  
{       
	PROJECT *L;  
    InitList(L);    
    int i,n;
    int num=1;
    printf("请输入需要管理的项目信息数量:");
    num=scanf("%d",&n);
    while(num==0)
    {
    	getchar();
    	printf("输入非法,请重新输入一个数字:");
    	num=scanf("%d",&n);
	}
    for(i=0;i 

这是我大一上学期期中时写的项目,所以可能会有许多还可以改进的地方,如果小伙伴们有什么更好的建议,欢迎在评论区写下你们的宝贵建议,谢谢各位小伙伴!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691398.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号