C语言实训报告-学生成绩管理系统(2)

2019-04-02 21:38

1052400101 周谒真 C语言实训报告 电子信息科学与技术一班

void Exit(); //主函数 void main() {

CreateHeadLink();//调用建立表头函数 DesplayMenu();//调用菜单显示函数 }

/************************************* 函数功能:显示菜单,根据用户的输入信息 来完成对应的功能

*************************************/ void DesplayMenu() {

STUDENT *p;

printf(\***********************\

printf(\欢 迎 使 用 学 生 成 绩 管 理 系 统\\n\

printf(\.排序 (按学号)\\n\ printf(\.插入 (录入)\\n\

printf(\.查找 (输入一个学生学号,输出其各科成绩)\\n\

printf(\.删除 (从数组中按输入的学号删除该学生)\\n\

printf(\.统计\\n\ printf(\.退出\\n\

printf(\***********************\

printf(\请输入序号进行操作: \ scanf(\从终端读入一个值进行菜单选择 getch();

system(\ switch(choose) {

case 1:CompositorBystudentNumber();break; case 2:

p=MallocNode();//让p指向新节点的首地址 GetInformation(p);//获取学生信息

InsertOneNode(p);break;//插入学生信息 case 3:DesplayInfoBystudentNumber();

break;

case 4:DeleteNodeBystudentNumber();break; case 5:CompositorMenu();break;

6

1052400101 周谒真 C语言实训报告 电子信息科学与技术一班

case 6:Exit();break; }

getch();

system(\

DesplayMenu();//递归调用菜单显示函数 }

/************************************* 函数功能:建立链表表头

*************************************/ void CreateHeadLink() {

STUDENT *p;

p=(STUDENT*)malloc(sizeof(STUDENT));//在内存中开辟一个大小为sizeof(STUDENT)的空间并使p指向它的首地址 headLink=p;//令链表head指针指向p指针 p->next=NULL;//初始化链表 }

/************************************* 函数功能:申请一个新结点,并将其初始化 *************************************/ STUDENT *MallocNode() {

STUDENT * p;//定义一个STUDENT变量 int i;

p=(STUDENT*)malloc(sizeof(STUDENT));//在内存中开辟一个大小为sizeof(STUDENT)的空间并使p指向它的首地址

if(p==NULL)//如果p指向的是空地址,那么返回一个空值 {

return NULL; }

for(i=0;i<10;i++)//下面全是初始化 {

p->studentNumber[i]='\\0'; }

for(i=0;i<10;i++) {

p->studentName[i]='\\0'; }

for(i=0;i<10;i++) {

p->studentNumber[i]='\\0'; }

p->mark1=0.0; p->mark2=0.0;

7

1052400101 周谒真 C语言实训报告 电子信息科学与技术一班

p->mark3=0.0; p->next=NULL; return p; }

/************************************* 函数功能:取得用户输入的学生信息

*************************************/ void GetInformation(STUDENT *t) {

printf(\***********************\\n\

printf(\请输入学生学号: \ scanf(\

printf(\请输入学生姓名: \ scanf(\

printf(\请输入学生英语成绩: \ scanf(\

printf(\请输入学生数学成绩: \ scanf(\

printf(\请输入学生计算机成绩: \ scanf(\

printf(\录入成功!按任意键返回上级。。。\}

/************************************* 函数功能:在链表的结尾处增加一个节点 *************************************/ void InsertOneNode(STUDENT *t) {

STUDENT *p; p=headLink;

while(p->next)//当p不指向空地址时,就指向下一个地址 {

p=p->next; }

p->next=t;//在最后一个空地址中插入学生的信息 }

/************************************* 函数功能:根据用户输入的学生学号显示该 学生信息

*************************************/ void DesplayInfoBystudentNumber() {

STUDENT *p;

8

1052400101 周谒真 C语言实训报告 电子信息科学与技术一班

char studentNumber[10];

char flag=0;//这里作为一个判断变量,意在判断是否存在学号为用户输入值的学生

p=headLink->next;//初始化head指针 printf(\请输入学生学号\

scanf(\输入学生学号字符串 while(p) {

if(strcmp(p->studentNumber,studentNumber)==0)//在链表中查找相同学号的学生,如果找到了则输出他们的信息 {

printf(\学号\\t姓名\\t英语\\t数学\\t计算机\\t总成绩\\t平均成绩\\n\\n\

DesplayOneNode(p); flag=1; break; }

p=p->next; }

if(!flag) {

printf(\对不起,不存在学号为%s的学生\\n\ } }

/************************************* 函数功能:输出一个节点的信息

*************************************/ void DesplayOneNode(STUDENT *t) {

printf(\输出该结构体对象的信息 printf(\ printf(\ printf(\ printf(\

printf(\

printf(\}

/************************************* 函数功能:根据用户输入的学号删除该学生 *************************************/ void DeleteNodeBystudentNumber() {

char studentNumber[10]; STUDENT *p,*q;

9

1052400101 周谒真 C语言实训报告 电子信息科学与技术一班

char flag=0;

printf(\请输入要删除的学生学号: \

scanf(\输入学生学号字符串 p=headLink;

q=headLink->next;

while(q)//当q不指向空地址的时候,查找与用户输入的学号相一致的学生,并删除 {

if(strcmp(q->studentNumber,studentNumber)==0)//strcmp函数比较两个字符串是否相同 {

p->next=q->next;

free(q);//释放q指向地址的空间 flag=1; break; }

p=p->next;//把下一个人的地址补空,下同 q=q->next; }

if(!flag) {

printf(\不存在该学号的学生\\n\ return; }

printf(\成功删除\\n\}

/************************************* 函数功能:根据用户输入的学号排序

*************************************/ void CompositorBystudentNumber() {

STUDENT exchange,*r,*p,*q; r=headLink->next;

if(r==NULL)//当指针指向空地址时则认为没有学生信息 {

printf(\现在还没有学生信息,请先输入学生信息\\n\ return; }

while(r)//用r,q构成循环,使用冒泡法进行排序, {

p=r;

q=r->next; while(q) {

10


C语言实训报告-学生成绩管理系统(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015南昌教师招聘笔试成绩查询入口

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: