知道写代码的感觉吗?
但你还在为大作业烦恼ヾ( ̄0 ̄; )ノ?
你认为还没有思绪吗?
不妨进来看看吧!(学生信息管理系统)
这个代码虽然很简单!
但是增,删,查,改还是不能少的!
下面直接看源码吧!(拿走不用客气)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student
{
int hao; //学号
char name[20]; //姓名
float math; //数学成绩
float english; //英语成绩
float C; //计算机成绩
float num; //总分
float aver; //平均成绩
struct student *next;
}lsl;
lsl *InputStudentDate(lsl *head) //学生信息输入
{
lsl *pr = head;
lsl *p = NULL;
p = (lsl*)malloc(sizeof(lsl));
if(p==NULL)
{
printf("抱歉,学生信息输入失败!");
}
if(head==NULL)
{
head=p;
}
else
{
while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
}
printf("请输入学生学号:\n");
scanf("%d",&p->hao);
printf("请输入学生姓名:\n");
scanf("%s",p->name);
getchar();//1.清除缓存区,2.获得字符;
printf("请输入学生的数学成绩:\n");
scanf("%f", &p->math);
printf("请输入学生的英语成绩:\n");
scanf("%f",&p->english);
printf("请输入学生的计算机成绩:\n");
scanf("%f",&p->C);
p->num = p->C + p->math + p->english;
p->aver = p->num / 3.0;
printf("*****学生信息添加成功!*****");
p->next = NULL;
return head;
}
lsl *ChangeStudentDate(lsl *head) //修改学生信息(通过学号)
{
lsl *pr=head,*temp=NULL;
int hao;
int choose=0;
char ch='y';
if(head==NULL)
{
printf("不存在学生信息,无法进行修改!\n");
return head;
}
printf("请输入你想要修改学生的学号:\n");
scanf("%d",&hao);
while(ch=='y'||ch=='Y')
{
for(;pr!=NULL;pr=pr->next)
{
if(pr->hao==hao)
{
temp=pr;
break;
}
}
if(temp==NULL)
{
printf("你输入的学号不存在!\n");
printf("提示:是否要继续,是y(Y),请输入你的选择:\n");
getchar();
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
printf("请输入你想要修改学生的学号:\n");
scanf("%d",&hao);
pr=head;
}
else
{
return head;
}
}
else
{
ch='n';
}
}
if(temp!=NULL)
{
pr=temp;
temp=NULL;
while(1)
{
printf("\t\t\t***************学生信息修改中心***************\n");
printf("\t\t\t~~~~~~~~~~~~~~~1.修改学号!~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~2.修改姓名!~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~3.修改数学成绩!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~4.修改英语成绩!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~5.修改计算机成绩!~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~6.返回上一步!~~~~~~~~~~~~~~~~~\n");
printf("\t\t\t**********************************************\n");
printf("请选择你的操作:\n");
scanf("%d",&choose);
if(choose==1)
{
printf("请输入新的学号:\n");
scanf("%d",&pr->hao);
}
else if(choose==2)
{
printf("请输入新的姓名:\n");
scanf("%s",pr->name);
}
else if(choose==3)
{
printf("请输入新的数学成绩:\n");
scanf("%f",&pr->math);
}
else if(choose==4)
{
printf("请输入新的英语成绩:\n");
scanf("%f",&pr->english);
}
else if(choose==5)
{
printf("请输入新的计算机成绩:\n");
scanf("%f",&pr->C);
}
else if(choose==6)
{
return head;
}
else
{
printf("输入错误!\n");
}
}
}
return head;
}
lsl *DeleteStudentDate(lsl *head) //学生信息删除
{
int hao;
lsl *pr=head,*p=head;
if(head==NULL)
{
printf("找不到该生的信息!\n");
return head;
}
else
{
printf("请输入您想删除的学生的学号:\n");
scanf("%d",&hao);
while(pr->next!=NULL&&pr->hao!=hao)
{
p=pr;
pr=pr->next;
}
if(pr->hao==hao)
{
if(pr==head)
{
head=pr->next;
}
else
{
p->next=pr->next;
}
free(pr);
printf("~~~删除成功!~~~\n");
}
else
{
printf("未找到该生的信息!\n");
}
return head;
}
}
lsl *QueryStudentDate(lsl *head) //学生信息查询
{
lsl *pr=head,*temp=NULL,*pp=NULL;
int hao;
if(head==NULL)
{
printf("抱歉,未查到该生的信息,无法进行查询!\n");
return head;
}
printf("请输入你想要查询学生的学号:\n");
scanf("%d",&hao);
for(pr=head;pr!=NULL;pr=pr->next)
{
if(pr->hao==hao)
{
temp=pr;
break;
}
}
if(temp==NULL)
{
printf("您输入的学生学号不存在!\n");
return head;
}
if(temp!=NULL)
{
pr=temp;
printf(" 1.该生的学号为:%-10d\n",pr->hao);
printf(" 2.该生的姓名为:%-10s\n",pr->name);
printf(" 3.该生的数学成绩为:%-8.1f\n",pr->math);
printf(" 4.该生的英语成绩为:%-8.1f\n",pr->english);
printf(" 5.该生的计算机成绩为:%-6.1f\n",pr->C);
printf(" 6.该生的总分为:%-10.5f\n",pr->num);
printf(" 7.该生的平均分为:%-9.5f\n",pr->aver);
printf("------------------------------------------------\n");
}
return head;
}
lsl *DisplayStudentDate(lsl *head) //学生信息显示
{
lsl *pr=head;
if(head==NULL)
{
printf("抱歉,未查到该生的信息!\n");
return head;
}
printf("---------------该生的信息如下:------------------\n");
while(pr!=NULL)
{
printf(" 1.该生的学号为:%-10d\n",pr->hao);
printf(" 2.该生的姓名为:%-10s\n",pr->name);
printf(" 3.该生的数学成绩为:%-8.1f\n",pr->math);
printf(" 4.该生的英语成绩为:%-8.1f\n",pr->english);
printf(" 5.该生的计算机成绩为:%-6.1f\n",pr->C);
printf(" 6.该生的总分为:%-10.5f\n",pr->num);
printf(" 7.该生的平均分为:%-9.5f\n",pr->aver);
printf("------------------------------------------------\n");
system("pause");
pr=pr->next;
}
return head;
}
void menu(lsl *head) //唤起菜单
{
int choose;
do
{
printf("\n\n\n");
printf("\t\t\t**********************************************\n");
printf("\t\t\t~~~~~~~~~~~~~~~1.学生信息输入!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~2.学生信息修改!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~3.学生信息删除!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~4.学生信息查询!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~5.学生信息显示!~~~~~~~~~~~~~~~\n");
printf("\t\t\t~~~~~~~~~~~~~~~6.退出信息系统!~~~~~~~~~~~~~~~\n");
printf("\t\t\t**********************************************\n");
printf("请选择你的操作:\n");
scanf("%d",&choose);
switch(choose)
{
case 1:
//输入
head=InputStudentDate(head);
break;
case 2:
//修改
head=ChangeStudentDate(head);
break;
case 3:
//删除
head=DeleteStudentDate(head);
break;
case 4:
//查询
head=QueryStudentDate(head);
break;
case 5:
//显示
head=DisplayStudentDate(head);
break;
case 6:
//退出
printf("欢迎下次使用!\n");
system("pause");
exit(0);
default:
printf("输入错误,系统退出\n");
system("pause");
break;
}
}while(choose);
}
下面是这是主函数:
int main()
{
lsl *head = NULL;
menu(head);
return 0;
}
第一次写,感觉不是太好,但还是希望能够帮助你!