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");
}
点击这里查看源码源码