C语言课程设计学情管理系统

1.课程设计应达到的目的
本课程设计是在学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。通过本次课程设计进一步巩固和加深对C语言课程的基本知识的理解,掌握C语言程序编写和调试的基本技能,了解有关程序设计程序开发的思路方法,提高利用软件程序解决实际问题的能力。
2、课程设计题目及要求
本课题要求用C语言编写智网231班级学生学情管理系统。对一个有若干个学生的学院,每个学生有N门课程,系统实现对学生情况的管理。学生信息包括:学号、姓名、班级、身高、体重、身体健康,各门课程的成绩、家庭住址、本人联系电话、紧急联系人及联系电话、本人QQ号,本人特长、本人智育排名、任课教师姓名及手机号等信息。系统要求能够实现以下功能:
1、信息录入:建立学生情况记录数据库;
2、 显示:按照学号顺序显示所有学生信息记录;
3、增加记录:增加学生的信息记录;
4、修改(要求先输入密码):可修改某个学生的基本信息(学号不可改变)。
5 删除:删除一个或多个学生的记录:
6、检索:可按“学号”、“姓名”或者“手机号”查询学生的记录,可提供模糊检索;
7、成绩统计:可显示某门课程最高成绩及其名单、最差成绩及其名单、平均成绩、及格人数、不及格人数、及格率;
8、智育排名序:按照智育排名排序,并将学生信息按顺序显示。要求:
1、系统以菜单方式工作,可以完成多项功能,由用户选择;
2、 各种操作结果在界面有显示:
3、有一定的错误提示功能,如姓名不可以包含数字、名字2-4个汉字等,输入
出错有提示并允许重新输入。
4、 界面设计要求友好美观,操作方便,有足够的提示信息。
5、将所有学生信息保存在外部文件上。
6. 使用链表。
运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码示例:

	//学生信息结构体 
	struct Stu{
		int id;
	    char name[MAX_NAME_LEN];
	    char Class[MAX_NAME_LEN];
	    float height;
	    float weight;
	    char health[MAX_NAME_LEN];
	    float scores[10];  // 假设最多 10 门课程
	    char addr[MAX_ADDR_LEN];
	    char phone[MAX_PHONE_LEN];
	    char emergency_contact[MAX_NAME_LEN];
	    char emergency_phone[MAX_PHONE_LEN];
	    char qq[MAX_QQ_LEN];
	    char specialty[MAX_NAME_LEN];
	    int rank;
	    char teacher_name[MAX_NAME_LEN];
	    char teacher_phone[MAX_PHONE_LEN];	
	};//数据域 
	//节点结构体 
	struct Node{
		struct Stu student; //数据 
		struct Node *next;  //指针指向下一空间 
	}; // 指针域 
	enum Tag{quit,add,del,change,find,rank,print,charu,scorestatistics}; 
	int count;
	void menu();                       //菜单
	void Add(struct Node *head);       //1.添加学生信息
	void Del(struct Node *head);       //2.删除学生信息
	void Change(struct Node *head);    //3.修改学生信息
	void Find(struct Node *head);      //4.查看单个学生信息
	void Rank(struct Node *head);      //5.学生信息排序
	void Print(struct Node *head);     //6.遍历学生信息
	void Charu(struct Node *head);     //7.插入学生信息
	void Save(struct Node *head);      //保存学生信息
	void Load(struct Node *head);      //加载学生信息 
	void scoreStatistics(struct Node *head);   //成绩统计 
	int main()
	{
		int i=0,f=0;
		char mima[20]={"666666"};  //密码可以直接设定,也可以手动输入设置密码 
		char password[20] = {0};   
		for (i = 0; i < 3; i++)        
		{
		    f++;
			printf("请输入密码:");
			scanf("%s",password);     
	       
			if (0 == strcmp(password,mima))
			{ 
				struct Node *head = (struct Node *)malloc(sizeof(struct Node));
				memset(head,0,sizeof(struct Stu));
				head->next = NULL;
				FILE *fp = fopen("students.txt", "r");
				if(fp == NULL)
				{
					FILE *fp = fopen("students.txt", "w+");
				}
				else
				{
					Load(head); 
				}
		
				while(1)
				{
					int num;
					menu();
					printf("请输入要执行的操作!\n");
					scanf("%d",&num);
					switch(num)
					{
						case add:
							Add(head);
							break; 
						case del:
							Del(head);
							break; 
						case change:
							Change(head);
							break; 
						case find:
							Find(head);
							break;
						case rank:
							Rank(head);
							break;
						case print:
							Print(head);
							break;
						case charu:
							Charu(head);
							break;
						case scorestatistics:
							scoreStatistics(head);
							break;
						case quit:
							Save(head);
							return 0;
						default:printf("输入有误,请重新输入!\n");
					}
				 }
			 }
			 else 
			{
				printf("密码输入错误,您还有%d次输入机会!\n",3-f);
			}
		}
		
		if (i < 3)
		{
			printf("登录成功\n");
		}
		else
		{
			printf("退出程序\n");
		}
		return 0; 
	}
	 
	//学生管理系统菜单
	void menu()
	{
		printf("*********欢迎来到学生管理系统*********\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("*********0.退出学生管理系统*********\n");
	 
	}

点击这里查看源码源码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏尧木子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值