精华内容
下载资源
问答
  • C语言学生信息管理系统代码

    千次阅读 多人点赞 2020-12-22 10:21:36
    大学C语言实训课学习到的一段源代码,C语言学生信息管理系统。 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> struct stu_inf//学生信息结构体定义 { int...

    相关文章推荐:

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    4、职工信息管理系统C++代码 ★★★

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    更多管理系统更新中,请注意关注!

    大学C语言实训课学习到的一段源代码,C语言学生信息管理系统。

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<string.h>
    struct stu_inf//学生信息结构体定义
    {
    	int age,year,month;
    	long int number;
    	char name[10],sex[4],tel[15],email[30],address[50];	
    	struct stu_inf *next;
    };
    #define LEN sizeof(struct stu_inf)
    int STU_SUM=0;//学生总数同时写入文件再次读取可防止读取空文本出现乱码的情况。
    int FLAG=0;//判断是否对学生信息进行了改动
    struct stu_inf *Stu_Create(struct stu_inf *head);//学生信息录入
    struct stu_inf *Stu_Delete(struct stu_inf *head);//学生信息删除
    struct stu_inf *Stu_Correct(struct stu_inf *head);//学生信息修改
    struct stu_inf *Stu_Search_Number(struct stu_inf *head,int number);//按学号查询学生信息
    struct stu_inf *Stu_Search_Name(struct stu_inf *head,char *name);//按姓名查询学生信息
    struct stu_inf *Stu_Insert(struct stu_inf *head,struct stu_inf *stu);//学生信息的插入
    void Stu_Print(struct stu_inf *head);//学生信息的输出
    void Stu_Search(struct stu_inf *head);//选择按何种方式查询学生信息
    void Write_Data(struct stu_inf *head);//学生信息写入到文件
    struct stu_inf *Read_Data();//学生信息读入到文件
    void main()
    {
    	char choice,choice2;
    	struct stu_inf *head=NULL;
    	head=Read_Data();
    	do
    	{
    		printf("\n\t\t------------------\n");
    		printf("\t\t学生信息管理系统\n");
    		printf("\t\t-*-*-*-*-*-*-*-*-*\n");
    		printf("\t\t(1)---录入学生信息\n");
    		printf("\t\t(2)---浏览学生信息\n");
    		printf("\t\t(3)---查询学生信息\n");
    		printf("\t\t(4)---删除学生信息\n");
    		printf("\t\t(5)---修改学生信息\n");
    		printf("\t\t(0)---退出系统\n");
    		printf("\t\t-*-*-*-*-*-*-*-*-*\n");
    		printf("\t\t请输入您的选择:");
    		choice=getche();
    		putchar('\n');
    		switch(choice)
    		{
    		case '1':
    			head=Stu_Create(head);
    			break;
    		case '2':
    			Stu_Print(head);
    			break;
    		case '3':
    			Stu_Search(head);
    			break;
    		case '4':
    			head=Stu_Delete(head);
    			break;
    		case '5':			
    			Stu_Correct(head);
    			break;
    		case '0':
    			if(FLAG==1)
    			{
    				printf("\n是否将改动保存到“学生信息.txt”?(y/n)\n");
    				do
    				{
    					choice2=getche();
    					switch(choice2)
    					{
    					case 'y':
    						Write_Data(head);
    						break;
    					case 'n':
    						break;
    					}
    				}while(choice2!='n'&&choice2!='y');
    			}	
    			break;
    		default:
    			printf("\n无效的选项。\n");
    			break;
    		}
    		printf("\n按任意键继续...");
    		getch();
    		putchar('\n');
    	}while(choice!='0');
    	exit(0);
    }
    
    stu_inf *Stu_Create(struct stu_inf *head)//学生信息录入
    {
    	struct stu_inf *p;
    	p=(struct stu_inf *)malloc(LEN);
    		printf("\n请输入学号:");
    		scanf("%d",&p->number);
    		printf("请输入姓名:");
    		scanf("%s",p->name);
    		printf("请输入年龄:");
    		scanf("%d",&p->age);
    		printf("请输入性别:");
    		scanf("%s",p->sex);
    		printf("请输入出生年月(年月之间用空格隔开):");
    		scanf("%d%d",&p->year,&p->month);
    		printf("请输入地址:");
    		scanf("%s",p->address);
    		printf("请输入电话号码:");
    		scanf("%s",p->tel);
    		printf("请输入E-mail:");
    		scanf("%s",p->email);
    		p->next=NULL;
    
    		head=Stu_Insert(head,p);
    		STU_SUM++;
    		FLAG=1;
    
    		printf("\n该学生的信息为:\n"); 
    		printf("-----------------------------------------------------------\n"); 
    		printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t电话\tE-mail\n"); 
    		printf("%d\t%s\t%d\t%s\t%d %d\t%s\t\t%s\t%s\n",
    			p->number,p->name,p->age,p->sex,p->year,p->month,p->address,p->tel,p->email);
    		return head;
    }
    struct stu_inf *Stu_Insert(struct stu_inf *head,struct stu_inf *stu)//学生信息插入
    {
    	struct stu_inf *phead=head,*pstu=stu,*previous;
    	if(head==NULL)
    		head=stu;
    	else
    	{
    		while(pstu->number  >  phead->number  &&  phead->next  !=  NULL)
    			previous=phead,phead=phead->next;
    		if(pstu->number  <=  phead->number)
    		{
    			if(phead==head)
    				head=pstu;
    			else
    				previous->next=pstu;
    			pstu->next=phead;
    		}
    		else
    			phead->next=pstu;
    	}
    	return head;	
    }
    void Stu_Search(struct stu_inf *head)//选择按何种方式查询学生信息
    {
    	if(head==NULL)
    	{
    		printf("\n无学生信息。\n\n");
    		return ;
    	}
    	int number;
    	char choice;
    	char *name=(char *)calloc(15,sizeof(char));
    	do
    	{
    		printf("\n\n\t学生信息查询\n");
    		printf("------------------------------\n");
    		printf("\t按学号查询 请按1\n");
    		printf("\t按姓名查询 请按2\n");
    		printf("\t取消       请按0\n");
    		printf("------------------------------\n");
    		printf("请输入您的选择:");
    		choice=getche();	
    		putchar('\n');
    		switch(choice)
    		{
    		case '0':
    			return;
    		case '1':
    			printf("\n请输入学号:");
    			scanf("%d",&number);
    			Stu_Search_Number(head,number);
    			break;
    		case '2':
    			printf("\n请输入姓名:");
    			scanf("%s",name);
    			Stu_Search_Name(head,name);
    			break;
    		default:
    			printf("\n无效的选项。\n");	
    			break;
    		}
    		printf("\n按任意键继续...");
    		getch();
    		putchar('\n');
    	}while(1);
    }
    struct stu_inf *Stu_Search_Number(struct stu_inf *head,int number)//按学号查询学生信息
    {
    	struct stu_inf *p=head;
    	if(head==NULL)
    		printf("\n无学生信息。\n\n");
    	else
    	{
    		while(p->number  !=  number  &&  p->next  !=  NULL)
    			p=p->next;
    		if(p->number==number)
    		{
    			printf("\n学号\t姓名\t年龄\t性别\t出身年月\t地址\t电话\tE-mail\n");
    			printf("%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    				p->number,p->name,p->age,p->sex,p->year,p->month,p->address,p->tel,p->email);
    		}
    		else
    			printf("\n无该学生的记录。\n\n");
    	}
    	return p;
    }
    struct stu_inf *Stu_Search_Name(struct stu_inf *head,char *name)//按姓名查询学生信息
    {
    	struct stu_inf *p=head;
    	if(head==NULL)
    		printf("\n无学生信息。\n\n");
    	else
    	{
    		while(strcmp(p->name,name)  !=  0  && p->next  !=  NULL)
    			p=p->next;
    		if(strcmp(p->name,name)==0)
    		{
    			printf("\n学号\t姓名\t年龄\t性别\t出身年月\t地址\t电话\tE-mail\n");
    			printf("%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    				p->number,p->name,p->age,p->sex,p->year,p->month,p->address,p->tel,p->email);
    		}
    		else
    			printf("\n无该学生的记录。\n\n");
    	}
    	return p;
    }
    void Stu_Print(struct stu_inf *head)//学生信息的输出
    {
    	struct stu_inf *p=head;
    	if(head==NULL)
    		printf("\n无学生信息。\n\n");
    	else
    	{
    		printf("\n学生总数:%d\n",STU_SUM);
    		printf("\n学号\t姓名\t年龄\t性别\t出身年月\t地址\t电话\tE-mail\n");
    		while(p!=NULL)
    		{
    			printf("%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    				p->number,p->name,p->age,p->sex,p->year,p->month,p->address,p->tel,p->email);
    			p=p->next;
    		}
    	}
    }
    struct stu_inf *Stu_Delete(struct stu_inf *head)//学生信息删除
    {
    	struct stu_inf *phead=head,*previous;
    	int number;
    	if(head==NULL)
    	{
    		printf("\n无学生信息。\n\n");
    		return NULL;
    	}
    	printf("\n请输入要删除的学生的学号:");
    	scanf("%d",&number);
    	while(phead->number  !=  number  &&  phead->next  !=  NULL)
    		previous=phead,phead=phead->next;
    	if(phead->number==number)
    	{
    		if(phead==head)
    			head=phead->next;
    		else
    			previous->next=phead->next;
    		printf("\n删除成功。\n\n");
    		STU_SUM--;
    		FLAG=1;
    	}
    	else
    		printf("\n无该学生的信息。\n\n");
    	return head;
    }
    struct stu_inf *Stu_Correct(struct stu_inf *head)//学生信息修改
    {
    	struct stu_inf *phead=head;
    	int number;
    	char choice;
    	if(head==NULL)
    	{
    		printf("\n无学生信息。\n\n");
    		return NULL;
    	}
    	else
    	{	
    		printf("\n请输入要修改的学生的学号:");
    		scanf("%d",&number);
    		while(phead->number  !=  number  &&  phead->next  !=  NULL)
    			phead=phead->next;
    		if(phead->number==number)
    		{
    			printf("\n该学生的信息:\n");
    			printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
    			printf("\n学号\t姓名\t年龄\t性别\t出身年月\t地址\t电话\tE-mail\n");
    			printf("%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    				phead->number,phead->name,phead->age,phead->sex,phead->year,phead->month,phead->address,phead->tel,phead->email);
    			printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \n");
    			do
    			{
    				printf("---------------------\n");
    				printf("修改姓名      请按1\n");
    				printf("修改年龄      请按2\n");
    				printf("修改性别      请按3\n");
    				printf("修改出生年月  请按4\n");
    				printf("修改地址      请按5\n");
    				printf("修改电话号码  请按6\n");
    				printf("修改E-mail    请按7\n");
    				printf("取消          请按0\n");
    				printf("---------------------\n");
    				printf("请输入您的选择:");
    				choice=getche();
    				putchar('\n');
    				switch(choice)
    				{
    				case '0':
    					return head;
    				case '1':
    					printf("\n请输入新姓名:");
    					scanf("%s",phead->name);
    					FLAG=1;
    					break;
    				case '2':
    					printf("\n请输入新年龄:");
    					scanf("%d",&phead->age);
    					FLAG=1;
    					break;
    				case '3':
    					printf("\n请输入新性别:");
    					scanf("%s",phead->sex);
    					FLAG=1;
    					break;
    				case '4':
    					printf("\n请输入新的出生年月(年月之间用空格隔开):");
    					scanf("%d%d",&phead->year,&phead->month);
    					FLAG=1;
    					break;
    				case '5':
    					printf("\n请输入新的地址:");
    					scanf("%s",phead->address);
    					FLAG=1;
    					break;
    				case '6':
    					printf("\n请输入新的电话号码:");
    					scanf("%s",phead->tel);
    					FLAG=1;
    					break;
    				case '7':
    					printf("\n请输入新的E-mail:");
    					scanf("%s",phead->email);
    					FLAG=1;
    					break;
    				default:		
    					printf("\n无效的选项。\n\n");
    					break;				
    				}
    				printf("\n按任意键继续...");
    				getch();
    				putchar('\n');
    			}while(choice!='0');
    		}
    		else
    			printf("\n无该学生的信息。\n\n");
    	}
    	return head;
    }
    void Write_Data(struct stu_inf *head)//学生信息写入到文件
    {
    	FILE *fp;
    	struct stu_inf *p;
    	if((fp=fopen("学生信息.txt","w"))==NULL)
    	{
    		printf("\n*************\n");
    		printf("文件创建失败。\n\n");
    		printf("*************\n");
    		return;
    	}
    	fprintf(fp,"学生总数:%d\n",STU_SUM);
    	if(STU_SUM!=0)
    		fprintf(fp,"\n学号\t姓名\t年龄\t性别\t出身年月\t地址\t电话\tE-mail\n");
    	for(p=head;p!=NULL;p=p->next)
    		fprintf(fp,"%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    			p->number,p->name,p->age,p->sex,p->year,p->month,p->address,p->tel,p->email);
    	fclose(fp);/*
    	printf("\n*************\n");
    	printf("文件写入成功。\n");
    	printf("*************\n");*/
    }
    
    struct stu_inf *Read_Data()//从文件读入学生信息
    {
    	FILE *fp;
    	struct stu_inf *p,*phead,*head;	
    	if((fp=fopen("学生信息.txt","r"))==NULL)
    	{/*
    		printf("\n*************\n");
    		printf("文件读取失败。\n");
    		printf("*************\n");*/
    		return NULL;
    	}/*
    	printf("\n*************\n");
    	printf("文件读取成功。\n");
    	printf("*************\n");*/
    	fscanf(fp,"学生总数:%d\n",&STU_SUM);
    	if(STU_SUM==0)
    		return NULL;
    	fscanf(fp,"\n学号\t姓名\t年龄\t性别\t出身年月\t地址\t电话\tE-mail\n");
    	head=phead=p=(struct stu_inf *)malloc(LEN);
    	fscanf(fp,"%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    			&p->number,p->name,&p->age,p->sex,&p->year,&p->month,p->address,p->tel,p->email);
    	while(!feof(fp))
    	{
    		p=(struct stu_inf *)malloc(LEN);
    		fscanf(fp,"%d\t%s\t%d\t%s\t%d %d\t%s\t%s\t%s\n",
    			&p->number,p->name,&p->age,p->sex,&p->year,&p->month,p->address,p->tel,p->email);
    		phead->next=p;
    		phead=phead->next;		
    	}
    	phead->next=NULL;
    	fclose(fp);
    	return head;
    }

    也希望能帮到正在做实训报告的你,欢迎留言区讨论。

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    扫描下方公众号,发送 成绩系统 4个字,获取下载实训源码

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,随时更新,没获取到的朋友直接留言告诉一声)

    展开全文
  • 系统是可视化系统,编程工具:eclipse和MySQL数据库,可用作课程设计,其中包含Java源代码、数据库文件、word文档(总体设计、详细设计和核心代码部分)。
  • 学生信息管理系统代码

    万次阅读 2018-11-14 00:00:56
    #!/usr/bin/python #!coding:utf-8 ...#定义函数,系统菜单信息,帮助用户选择 def printStuSys(): print('**********学生信息查询系统***********') print(' 1.查询学生信息 ') print(' 2.增加学生信息 ...
    #!/usr/bin/python
    #!coding:utf-8
    import sys
    #定义函数,系统菜单信息,帮助用户选择
    def printStuSys():
    	print('**********学生信息查询系统***********')
    	print('          1.查询学生信息             ')
    	print('          2.增加学生信息             ')
    	print('          3.删除学生信息             ')
    	print('          4.修改学生信息             ')
    	print('          5.退出信息系统             ')
    	print('************************************')
    #定义函数,显示查询学生信息的内容
    def showStuInfo(stuInfo):
    	print('学生信息如下:')
    	print('*'*35)
    	print('姓名           年龄          学号')
    	for temp in stuInfo:
    		print('%s           %d          %d'%(temp['name'],temp['age'],temp['stuID']))
    	print('*'*35)
    #定义函数,增加学生信息
    def addStuInfo(stuInfo):
    	name = input('请输入学生的姓名:')
    	age = int(input('请输入学生的年龄:'))
    	stuID = int(input('请输入学生的学号:'))
    	stu = {}
    	stu['name'] = name
    	stu['age'] = age
    	stu['stuID'] = stuID
    	stuInfo.append(stu)
    	return stuInfo
    #定义一个删除学生信息的函数
    #遗憾的是,不能使用 学生学号的删除:delNum == temp['stuID']执行不了
    #K的值是从0开始,如果有5个元素,K最大为4,
    #所以输入的数字5的话,那么最后一个不能删除,故要 delNum = k
    #在while循环中i自加一定要与if齐平,否则不能执行
    def delStuInfo(stuInfo):
    	delNum = int(input('请输入删除学生的序号(从0开始排序):'))
    	k = len(stuInfo)
    	if delNum >= k or delNum < 0:
    		print('你删除的序号不存在,请重新输入!')
    	i = 0
    	while i < k:
    		if delNum == i:
    			del stuInfo[i]
    		i += 1
    	return stuInfo
    #定义修改学生信息的函数,注意在python区别大小写,
    #keys值中大小写不同会认为不同的keys值。
    def modStuInfo(stuInfo):
    	modNum = int(input('请输入修改学生的序号(从0开始排序):'))
    	k = len(stuInfo)
    	if modNum >= k or modNum <0:
    		print('你修改的序号不存在,请重新输入!')
    	i = 0
    	while i < k:
    		if modNum == i:
    			name = input('请输入修改学生的姓名:')
    			age = int(input('请输入修改学生的年龄:'))
    			stuID = int(input('请输入学生的学号:'))
    			stuInfo[i]['name'] = name
    			stuInfo[i]['age'] = age
    			stuInfo[i]['stuID'] = stuID
    			print('你修改的学生信息如下:')
    			print('*'*35)
    			print('姓名           年龄          学号')
    			print('%s           %d          %d'%(stuInfo[i]['name'],stuInfo[i]['age'],stuInfo[i]['stuID']))
    			print('*'*35)
    		i += 1
    	return stuInfo
    
    #主程序运行逻辑
    stuInfo = []
    while True:
    	choiceNum = int(input('请输入你要操作的内容:'))
    	if choiceNum == 1:
    		showStuInfo(stuInfo)
    	elif choiceNum == 2:
    		addStuInfo(stuInfo)
    	elif choiceNum == 3:
    		delStuInfo(stuInfo)
    	elif choiceNum == 4:
    		modStuInfo(stuInfo)
    	elif choiceNum == 5:
    		quitFlag = input('亲,你真的要退出系统么? yes/no')
    		if quitFlag == 'yes':
    			exit()
    			break
    	else:
    		print('你输入错误,请重新输入')
    
    
    展开全文
  • C语言学生成绩管理系统代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    点击查看 ----> C语言学生成绩管理系统(课程设计报告书)

    扫描下方公众号,发送 成绩系统 4个字,获取下载源码

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,但仍在更新补充中)

    以后有时间再给大家继续分享,有任何问题欢迎留言区交流。

    大学C语言实训课,C语言学生成绩管理系统。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    struct student
    	{
    		int num;
    		char name[20];
    		float pingshi;
    		float shiyan;
    		float kaoshi;
    		double zongping;
    	}stu[4];
    void main()
    {
    	void a();
    	void b();
    	void c();
    	void d();
    	void e();
    	int n;
    	while(n!=6)
    	{	printf("\t大学计算机基础成绩管理系统\n");
    		printf("1:输入一个班学生大学计算机基础成绩记录\n");
    		printf("2:显示所有成绩记录\n");
    		printf("3:计算并输出平均成绩,均方差\n");
    		printf("4:输出成绩与排名\n");
    		printf("5:结果存入文件chengji.txt\n");
    		printf("6:退出系统\n");
    		printf("输入选项代码:");
    		scanf("%d",&n);
    		switch(n)
    		{
    			case 1:a();break;
    			case 2:b();break;
    			case 3:c();break;
    			case 4:d();break;
    			case 5:e();break;
    			case 6:printf("\n*******************谢谢使用!*******************\n");break;
    			break;    
    		}	
    	}
    getchar();
    }
    /* 子  函  数*/
    void a() /* 输入一个班的学生记录*/
    
    {
    	int i;
    
    	for(i=0;i<4;i++)
    
    	{   
    
    		printf("请输入学号 姓名 平时成绩 实验成绩 考试成绩:");
    
    		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi);
    		
    	}for(i=0;i<4;i++)
    stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;
    }
    void b()/* 显示所有记录*/
    
    {
    	int i;
    
    	printf("学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    }
    
    void c()/* 求出全班平均成绩,显示均方差*/
    {  
    	int a[4]={0,1,2,3};
        int i,j;
        double total=0,pfc=0,bzc=0;
        double ave;
        for(i=0;i<4;i++)
    	{
    		total=total+stu[i].zongping;
    	}
        ave=total/4.0;
        printf("总评平均成绩是%f\n",ave);
    	for(i=0;i<4;i++)
    	{
    		pfc=pow((stu[i].zongping-ave),2)/4;
    	}
    	bzc=sqrt(pfc);
    	printf("\n平方差是%f\n",pfc);
    	printf("\n标准差是%f\n",bzc);
    }
    void d()
    
    {
    	int a[4]={0,1,2,3};
    	int i,j,temp;
    	for(j=0;j<3;j++)
    	{
    		for(i=0;i<3-j;i++)
    		if(stu[a[i]].zongping>stu[a[i+1]].zongping)
    		{	
    			temp=a[i];a[i]=a[i+1];
    			a[i+1]=temp;
    
    		}
    	}
    
    	printf("顺序为:\n");
    
    	printf("学号     姓名      总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);
    
    	printf("\n");
    
    }
    
    void e()
    {int i;
    FILE *fp;
    fp=fopen("chengji.txt","w");
    
    	fprintf(fp,"学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    printf("\n\n*******************恭喜,保存完成!*******************\n\n");
    }
    

    简单记录。

    关注微信公众号“资料在线”,回复“C语言源码”,即可获得C语言源码包

    更多资源等着你

    最新文章:

    0、C语言学生成绩管理系统(课程设计报告书)★★★

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    4、C语言学生信息管理系统源代码 ★★★★

    展开全文
  • 学生信息管理系统是我第一个独立完成的比较长的代码,也算是花费了一些心血,这个系统是我一点点把它从几百行的代码逐渐优化到上千行,功能从简单到复杂。在这里我把我的思路分享给大家,希望能给大家带来一些帮助。...

    课程设计————学生管理系统(包含历代思路和代码)

    一.前言

    学生信息管理系统是我第一个独立完成的比较长的代码,也算是花费了一些心血,这个系统是我一点点把它从几百行的代码逐渐优化到上千行,功能从简单到复杂。在这里我把我的思路分享给大家,希望能给大家带来一些帮助。

    相比较上一篇博客(学生管理系统)而言,这一篇,主要讲的是我逐步优化的思路和过程。以及在那篇博客后,继续进行的优化。

    二.学生管理系统1.0版

    1. 实现功能

    • 简单的密码验证
    • 学生信息的录入(链表的创建)
    • 学生信息的增.删.改.查
    • 按照平均分排序输出

    2. 函数框架

    int main(void)
    {
    	int a;
    	struct student *pHead;
    	show1(); 
    	while(1)
    	{
    		system("cls");//清屏
    		show2();//界面
    		fflush(stdin);
    		scanf("%d",&a);
    		switch(a)
    		{
    			case 1:pHead=input();break;//输入 
    			case 2:output(pHead);break;//输出 
    			case 3:increase(pHead);break;//增加 
    			case 4:strike_out(pHead);break;//删除
    			case 5:chang(pHead);break;//修改 
    			case 6:inquiry(pHead);break;//查询 
    			case 7:sore(pHead);break;//排序 
    			case 0:exit(0);break;
    			default :printf("输入有误请重新输入\n");break; 
    		}
    		printf("按任意键进行下一步操作\n");
    		getch();
    	}
    }
    

    3. 函数调用关系图

    这里写图片描述

    4. 部分功能函数

    1. 链表的创建输出和增删改查
      这一部分大家可以参考我之前的博客(链表及其简单应用),里面有较详细的说明
    2. 链表的排序
      这一部分在我之前的博客(链表及其简单应用)中也有写到,里面介绍了两种排序,链表的冒泡排序和插入排序。相比较而言,其实插入排序更加简单一点,可能是因为冒泡排序是我接触的第一个排序吧,所以我的代码中几乎都是用冒泡来进行排序的
    3. 密码的输入显示 *
    void show1()
    {
    	char cipher[20]={"123456"},a[20],t;//cioher 表示密码
    	int i,j;
    	printf("欢迎进入学生信息管理系统\n");
    	for(i=0;i<3;i++)
    	{
    		printf("请输入管理员密码:");	
    		for(j=0;a[j-1]!=13;j++)//输入时回车时,停止录入密码
    		{
    			a[j]=getch();//getch接受键盘输入字符,不显示到屏幕上
    			if(a[j]==8&&j>0)//如果输入的是删除键
    			{
    				printf("\b \b");//用\b和空格覆盖前面的*
    				j-=2;//删除数组中的字符
    			}		
    			else if(j>=0)
    				printf("*");
    			else //防止删除提示语句
    				printf(" ");
    		}
    		printf("\n");
    		a[j-1]='\0';	
    		if(strcmp(cipher,a)==0)
    	 		return;
    	}
    	printf("三次输入错误!!!退出系统\n");
    	Sleep(150);
    	exit(1);
    }
    

    5. 源代码

    代码地址

    学生信息管理2.0版

    这个版中,刚刚学习了文件的相关操作,所以将文件的操作加入到其中。

    1. 新增功能

    1. 从文件中录入数据
    2. 可以选择多种顺序输出
    3. 将学生信息保存到文件中
    4. 使用多文件保存不同功能的函数

    2. 函数框架

    int main(void)
    {
    	struct student *pHead;
    	int flag;
    	show1();//登录界面 
    	pHead=startup();//信息的录入 
    	save_3(pHead);//保存到缓存文件中 
    	while(1)
    	{
    		system("cls");
    		show3();
    		fflush(stdin);
    		scanf("%d",&flag);
    		switch(flag)
    		{
    			case 1:increase(pHead);break;//增加  
    			case 2:strike_out(pHead);break;//删除 
    			case 3:chang(pHead);break;//修改 
    			case 4:inquiry(pHead);break;//查询
    			case 5:save_3(pHead);
    				   output(pHead);
    				   pHead=finput(1);break;//输出
    			case 6:
    			   	   save_3(pHead);
    				   save(pHead);
    				   pHead=finput(1);break;//保存 
    			case 0:exit(0);break;
    			default :printf("输入有误请重新输入\n");break; 
    		}
    		printf("按任意键进行下一步操作\n");
    		getch();
    	}	
    }
    
    

    3. 函数调用关系图

    这里写图片描述

    4. 部分功能函数

    1. 文件的读
    struct student *finput(int a)//文件录入 a控制是否需要输入文件名 
    {
    	
    	FILE *fp;
    	struct student *pHead=NULL,*pEnd,*pNew;
    	int sum=0,i,j,num;
    	char filename[100]=N; 
    	if(a==2)
    	{
    		printf("请输入文件路径及文件名:"); 
    		fflush(stdin); 
    		gets(filename);
    	}
    	iCound=0;
    	pEnd=pHead=(struct student *)malloc(sizeof(struct student));
    	fp=fopen(filename,"rt+");
    	if(fp==NULL)
    	{
    		printf("不能打开文件");
    		exit(1); 
    	}
    	while(1)
    	{
    		sum=0;
    		pNew=(struct student *)malloc(sizeof(struct student));
    		fscanf(fp,"%s %s %s",pNew->name,pNew->num,pNew->classes);
    		fscanf(fp,"%s %s %s",pNew->score[0],pNew->score[1],pNew->score[2]); 
    		for(i=0;i<3;i++)//字符串转换为整数 
    		{	
    		 	num=0;
    			for(j=0;pNew->score[i][j];j++)
    				num=num*10+pNew->score[i][j]-'0';	
    			sum=sum+num;	
    		}	
    		pNew->aver=sum*1.0/3;
    		if(feof(fp))
    			break;
    		pEnd->next=pNew;
    		pEnd=pNew;
    		iCound++;
    	}
    	pEnd->next=NULL;
    	fclose(fp);
    	return pHead;
    }
    
    1. 文件的写
    void save_3(struct student *pHead)
    {
    	FILE *fp;
    	char filename[100]= N;  
    	fp=fopen(filename,"wt");
    	if(fp==NULL)
    	{
    		printf("不能打开文件");
    		exit(1); 
    	}
    	pHead=pHead->next;
    	while(pHead)
    	{
    		fprintf(fp,"%s %s %s ",pHead->name,pHead->num,pHead->classes);
    		fprintf(fp,"%s %s %s\n",pHead->score[0],pHead->score[1],pHead->score[2]);
    		pHead=pHead->next;
    	}
    	fclose(fp);
    }
    
    1. 使用参数多次调用排序函数
    void output_2(struct student *pHead,int a)//a控制排序依据 //方式2输出 
    {
    	int i,j,flag;
    	struct student *pj_1,*pj,*pj_h;
    	for(i=0;i<iCound-1;i++)
    		for(j=0,pj=pHead,flag=0;j<iCound-i-1;j++) 
    		{
    			if(flag==0)
    			{
    				pj_1=pj;
    				pj=pj->next;
    				pj_h=pj->next;
    			}
    			if(flag==1)
    			{
    				pj_1=pj_1->next;
    				pj_h=pj->next;
    			}	
    			flag=0;
    			if(a==2&&(pj->aver)<(pj_h->aver))
    			{
    				exchange(pj,pj_h,pj_1);
    				flag=1;	
    			}
    			else if(a==3&&strcmp(pj->num,pj_h->num)==1)	
    			{
    				exchange(pj,pj_h,pj_1);
    				flag=1;	
    			}
    			else if(a==4&&strcmp(pj->classes,pj_h->classes)==1)
    			{
    				exchange(pj,pj_h,pj_1);
    				flag=1;
    			}
    			else if(a==5&&strcmp(pj->name,pj_h->name)==1)
    			{
    				exchange(pj,pj_h,pj_1);
    				flag=1;
    			}
    		}
    	output_t(pHead);		
    } 
    

    5. 源代码

    这个代码中我使用的是cfree创建工程文件的方法
    其他编译器不知道是否可以正常运行。
    如果要运行查看结果,推荐使用c free
    代码地址

    学生信息管理3.0版

    这个版本具体可以看我的上一篇博客。

    1. 新增功能

    1. 位运算对密码的加密
    2. 分为三个登录端,学生,教师,管理员

    2.源代码

    这个代码中我使用的是cfree创建工程文件的方法
    其他编译器不知道是否可以正常运行。
    如果要运行查看结果,推荐使用c free
    代码地址

    学生信息管理4.0版

    1. 新增功能

    1. 从管理一个班变为管理五个班
    2. 对学生信息的数据结构进行改进,将保存成绩从二维数组改为链表,即十字链表。(老师加的要求)

    2. 函数框架

    这里写图片描述

    3. 函数调用关系图

    这里写图片描述

    4. 部分功能函数

    1. 学生信息结构节点的定义
    struct score//分数 
    {
    	char date[20];
    	int No;
    	struct score *next;
    };
    struct student
    {
    	int No; //排名 
    	char name[20];//姓名 
    	char num[20];//学号 
    	char classes[20];//班级 
    	struct score *ScorepHead;//分数 
    	double aver;//平均分
    	struct student *next;//指针域 
    }; 
    struct student *StupHead[6]; //5个班的头节点 
    int iCound[6];//5个班的节点数量
    
    1. 学生信息链表的创建(文件读入)
    struct student *Finput(char filename[]) 
    {
    	
    	FILE *fp;
    	struct student *pHead=NULL,*pEnd,*pNew;
    	int sum=0,i,j,num;
    	iCound[filename[5]-'0'-1]=0;
    	pEnd=pHead=(struct student *)malloc(sizeof(struct student));
    	fp=fopen(filename,"rt");
    	if(fp==NULL)
    	{
    		printf("不能打开文件");
    		exit(1); 
    	}
    	char a[20];//暂存信息 
    	fscanf(fp,"%s",a);
    	
    	int temp[Classnum]={0};//暂存科目数量 
    	while(!feof(fp))
    	{
    		sum=0;
    		pNew=(struct student *)malloc(sizeof(struct student));
    		strcpy(pNew->name,a);
    		fscanf(fp,"%s %s",pNew->num,pNew->classes);
    		
    				
    		struct score *spEnd,*spNew,*spt; //录入科目成绩 
    		pNew->ScorepHead=spEnd=(struct score *)malloc(sizeof(struct score));
    		while(1)
    		{
    			spNew=(struct score *)malloc(sizeof(struct score));
    			fscanf(fp,"%s",a);
    			if(a[0]<'0'||a[0]>'9'||feof(fp))
    				break;
    			strcpy(spNew->date,a);
    			spEnd->next=spNew;
    			spEnd=spNew;	
    		}
    		spEnd->next=NULL;
    		int k;
    		for(k=0,spt=pNew->ScorepHead->next;spt!=NULL;spt=spt->next,k++)//字符串转整数 
    		{	
    			for(j=0,num=0;spt->date[j];j++)
    				num=num*10+spt->date[j]-'0';	
    			sum=sum+num;
    			temp[k]++;	
    		} 
    		pNew->aver=sum/k;	
    			
    		iCound[filename[5]-'0'-1]++;
    		pEnd->next=pNew;
    		pEnd=pNew;
    	}
    	for(i=0;i<Classnum;i++)
    			subject[filename[5]-'0'-1][i]=temp[i]; 
    	pEnd->next=NULL;
    	fclose(fp);
    	return pHead;
    }
    

    5. 源代码

    这个代码中我使用的是cfree创建工程文件的方法
    其他编译器不知道是否可以正常运行。
    如果要运行查看结果,推荐使用c free
    代码地址

    后续可以进行的优化

    1.梳理函数调用关系,让代码更加清晰简洁

    2.使用MFc或者Esay_x制作图形化界面。

    展开全文
  • c语言课程设计,学生信息管理系统

    万次阅读 多人点赞 2019-03-06 21:20:50
    学生信息管理系统 题目: 新生入学,需要管理学生信息,要求如下: 能够通过键盘进行输入学生的信息,比如:学生姓名,学号,性别,班级,专业,入学成绩; 能够通过键盘输入要录入的学生的个数; 能够...
  • java se课程设计 图书管理系统代码

    热门讨论 2011-06-03 18:23:04
    java se课程设计 图书管理系统代码java se课程设计 图书管理系统代码java se课程设计 图书管理系统代码java se课程设计 图书管理系统代码java se课程设计 图书管理系统代码
  • 毕业生就业信息管理系统设计与实现(毕业设计 完整)毕业生就业信息管理系统设计与实现(毕业设计 完整)
  • asp.net 实现的学生信息管理系统(c#,oracle数据库),本系统采用三层结构,模块化实现学生的信息管理,不足的地方大家多提意见。。。
  • 设计的只是一个简单版的学生信息管理系统,用来模拟实现管理学生信息 首先,我们要求学校内的所有人都可以方便地查询学生信息。 这就要求我们这个系统对学校内所有人都是公开的。 只有特定的人才可以对学生信息...
  • 学习是自己,需要学生管理系统源码的话,还不如自己写一遍,把代码写下来,该视频使用的是gcc编译器. http://pan.baidu.com/s/1boFTGKZ
  • 本文目录Python语言设计编写的成绩管理系统基本要求具体要求合理的创建标题,有助于目录的生成分析要求实现功能如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建...
  • 包含需求分析、 项目计划安排、概要设计、详细设计、数据库设计、项目技术准备、系统功能设计、项目的测试、实战演练9个课题,图文并茂,好学易懂。是Java项目实战训练的优秀教程。
  • 数据库课程设计——学生宿舍信息管理系统

    万次阅读 多人点赞 2018-09-17 23:33:00
    数据库课程设计——学生宿舍信息管理系统 目录  1.设计目的... 2 2、任务与要求... 2 3、学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1....
  • 就业信息管理系统设计与实现

    千次阅读 热门讨论 2018-04-20 20:36:39
    就业信息管理系统设计与实现本系统带程序说明书 有需要的可以去我上传的资源里面找,找不到的话,评论我,或者站内私信留下邮箱,我给你发,也可以主动联系我博客名字。因为最近太忙一直没有上传完。emmmm本系统带...
  • 数据库课程设计 ——酒店管理系统

    万次阅读 多人点赞 2019-05-31 10:36:11
    (1)酒店管理系统用于满足酒店工作人员和管理人员的需求。 (2)酒店管理人员和工作人员可以为酒店房间加入入住和退房记录,并生成相应的报表用于查阅,确认和保存,酒店工作人员可以浏览、查询、统计、添加酒店...
  • Java课程设计-学籍信息管理系统

    万次阅读 多人点赞 2015-12-15 21:08:23
     学生的学籍信息是记录学生的重要信息档案,如何以电子文档形式记录下学生的学籍信息是每个学校必须做的事情,该学生学籍信息管理系统就是为了方便学校记录下每一个学生的基本信息,生成电子数据库,并且能够做到...
  • java课程设计学生信息管理系统

    万次阅读 多人点赞 2018-04-18 14:45:14
    import java.awt.FlowLayout; import javax.swing.JFrame; import javax.swing.JPanel; ... public static void main(String[] args) { ... JOptionPane.showConfirmDialog(MyFrame02.this, "保存成功", "系统提示",...
  • 教学管理系统 数据库课程设计 SQL-Server 源代码工程与报告 非常完整 ………………………… 一、课程设计题目 完成一个实际系统的数据库应用系统的设计全过程。 二、课程设计内容 应包括:需求分析、数据库设计、...
  • C++ 学生信息管理系统课程设计报告

    千次阅读 2020-06-13 11:22:27
    《面向对象课程设计》报告学生信息管理系统设计一、问题描述二、需求分析和概要设计三、功能模块描述和设计思路四、具体实现过程五、收获与展望 一、问题描述 学生信息管理系统设计 学生信息包括:学号,姓名,年龄...
  • Java课程设计【学生信息管理系统

    万次阅读 多人点赞 2020-06-01 13:48:20
    课程设计目录一、问题描述二、基本要求三、需求分析四、概要设计1、类...如何实现一个功能简单的学生信息管理系统,能够对学生信息(包括照片)进行添加、删除、修改和查询等操作。 二、基本要求 实现一个功能简单的学
  • 利用HTML+CSS3技术设计一个简单的用户信息管理系统,主要包含框架主页、我的工作台、用户注册、用户信息列表共计四个页面。 一、框架结构 二、我的工作台 三、用户注册 四、用户信息列表 源代码:...
  • 系统的软件开发及运行环境具体如下。 操作系统:Windows 7、Windows 10。 Python版本:Python 3.7.0。 开发工具:Python IDLE。 运行方法 在项目文件studentsystem.py上单击鼠标右键,在弹出快捷菜单中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 632,418
精华内容 252,967
关键字:

信息管理系统设计代码