c语言课程设计报告+学生成绩信息管理系统+源代码

时间:2024.3.31

实验报告

一、问题陈述及其需求分析

(一) 问题陈述

学生信息管理系统是对学生信息的基本管理,其中包括以下及模块:

(1)增加一个学生的信息(需输入要增加学生的所有信息);

(2)统计本班学生总人数及男女生人数。

(3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。

(4)按学号对所有学生信息排序,并输出结果;

(5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。

( 二 ) 功能需求分析

  学生信息管理系统设计

学生信息包括:学号,姓名,性别,出生年月,电话

使之提供以下功能:

1、 系统以菜单方式工作

2、建立链表并显示

3、插入新的学生信息

4、删除某学号的学生信息

5、查找某学号的学生信息

6、对学生信息排序

7、统计学生人数

8、输出学生信息

总体设计

(一)模块

   依据程序的数据结构,描述该程序的层次结构,如下图:

1、建立链表并显示

void createlist(struct stucode **r);

2、插入新的学生信息

void insert(struct stucode **r);

3、删除某学号的学生信息

void del(struct stucode **r);

4、查找某学号的学生信息

void search1(struct stucode *r);

5、对学生信息排序

void sort(struct stucode **r);

6、统计学生人数

void search2(struct stucode *r);

7、输出学生信息

void out(struct stucode *r);

(二)程序总体框架

模块层次结构,只确定了模块之间的关系和函数原型,不是程序的执行步骤。程序总体框架是该程序的总体流程图。改程序不是顺序连续地执行全部功能,而是在某一时刻有选择地执行一种或多种功能。因此选用菜单方式是较佳的方案,程序总体框架如下图:

c语言课程设计报告 学生成绩信息管理系统 源代码

(三) 运行环境(软,硬件环境)

硬件:CPU, 内存, 主板, 硬盘, 显卡, 键盘, 显示器等等。

  软件:Windows XP   trubo c应用软件。

(四)  开发工具和编程语言

  开发工具:trubo c

  编程语言:C 语言

三、  详细设计

(一)数据结构

依据给定学生信息和数据格式,数组用结构体实现,结构体层次结构:

struct stud

{

学号  整型    long int num;

姓名  字符串    name[20];

性别   字符串   sex[2];

出生日期  字符串  birthday[12];

联系方式  字符串  tel[12];

};

头文件

#include

#include

#include

   /*定义数据结构和链表*/

struct stud

{

long num;

char name[20];

char sex[2];

char birthday[12];

char tel[12];

};

typedef struct stucode

{

struct stud student ;

struct stucode *next;

}L;

(二)、算法说明

1、主函数的算法设计:

   清屏、显示子菜单及运用选择操作(运用swith语句),调用各个子函数,最后退出程序,

主要代码:

while(flag)

{

system("cls");

menu();

choose=getchar();

switch(choose){}

2、各个子函数的算法设计

   1、一些显示操作,输入相应的内容即可

   代码:

   2、创建链表并显示学生信息

     申请空间p=(L *)malloc(sizeof(L));

     学生信息的输入及显示:

p->student.num=n;

strcpy(p->student.name,a);

p->next=NULL;

3、学生信息的删除

首先查询要删除的学生信息的学号,如果存在删除该学生,如果不存在给予相应的提示。

t=p->next;

p->next=p->next->next;

free(t);//释放空间

4、学生信息的排序

  新建链接,然后按要求对学生信息进行排序

while(z->next&&z->next->student.num>=p->student.num)

z=z->next;

p->next=z->next;

z->next=p;

5、学生人数的统计:

6、学生信息的显示:直接发调用函数即可。

四、运行结果

五、总结

1、调试分析

 (1)刚编译完后有好多错误和警告,运行失败,然后经过修改错误警告慢慢减少,最终可以运行。

  (2)该程序中可能还存在一些小问题,比如有的时候它会主动清屏,有的时候不会。并且我在编译的过程中发现自己存在好多毛病,有粗心了等,不注意细节,其实自己也知道细节决定成败,以后我会注意。

 2、设计总结

经过一周的课程设计,我学到了很多东西:

①巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。

②培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。

③过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

④够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。

⑤通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。

课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。

在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!

六、  参考文献

 书籍: 谭浩强 《C程序设计》(第三版)   北京    清华大学出版社

谭浩强  《C程序设计题解与上机指导》(第三版)   北京    清华大学出版社

 王为青 刘变红 《C语言高级编程及实例剖析》  人民邮电出版社

张建勋 《C语言程序设计教程》  清华大学出版社

李玲 桂玮珍 刘莲英 《C语言程序设计教程习题解答与实验指导》 人民邮电出版社

源程序:

#include

#include

#include

struct stud

{

long num;

char name[20];

char sex[2];

char birthday[12];

char tel[12];

};

typedef struct stucode

{

struct stud student ;

struct stucode *next;

}L;

void menu();

void createlist(struct stucode **r);

void out(struct stucode *r);

void search1(struct stucode *r);

void search2(struct stucode *r);

void del(struct stucode **r);

void insert(struct stucode **r);

void sort(struct stucode **r);

void main()

{

char choose;

int flag=1;

struct stucode *r=NULL;

while(flag)

{

system("cls");

menu();

choose=getchar();

switch(choose)

{

case '1':

createlist(&r);

out(r);

printf("Testing function 1\nPress any key to continue\n");

getchar();

getchar();

break;

case '2':

search1(r);

printf("Testing function 1\nPress any key to continue\n");

getchar();

getchar();

break;

case '3':

search2(r);

printf("Testing function 1\nPress any key to continue\n");

getchar();

getchar();

break;

case '4':

del(&r);

out(r);

printf("Testing function 1\nPress any key to continue\n");

getchar();

getchar();

break;

case '5':

insert(&r);

out(r);

printf("Testing function 1\nPress any key to continue\n");

getchar();

getchar();

break;

case '6':

sort(&r);

out(r);

printf("Testing function 1\nPress any key to continue\n");

getchar();

getchar();

break;

case '7':

out(r);

printf("Testing function 7\nPress any key to continue\n");

getchar();

getchar();

break;

case '0':

flag=0;

printf("The end.\n");

getchar();

getchar();

break;

default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();

getchar();

}

}

}

void createlist(struct stucode **r)

{

struct stucode *p,*t;

long n;

char a[20];

char s[4];

char b[12];

char m[12];

if(*r) *r=NULL;

printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 性别  出生日期  电话 (若要结束请输入五个为零) \n");

scanf("%ld%s%s%s%s",&n,a,s,b,m);

if(n==0) return;

p=(L *)malloc(sizeof(L));

p->student.num=n;

strcpy(p->student.name,a);

strcpy(p->student.sex,s);

strcpy(p->student.birthday,b);

strcpy(p->student.tel,m);

p->next=NULL;

*r=p;

scanf("%ld%s%s%s%s",&n,a,s,b,m);

while(n)

{

t=p;

p=(L *)malloc(sizeof(L));

p->student.num=n;

strcpy(p->student.name,a);

strcpy(p->student.sex,s);

strcpy(p->student.birthday,b);

strcpy(p->student.tel,m);

p->next=NULL;

t->next=p;

scanf("%ld%s%s%s%s",&n,a,s,b,m);

}

}

void search1(struct stucode *r)

{

long x;

if(!r)

{

printf("没有学生信息可查询!\n");

return ;

}

printf(" 请输入要查询的学生信息的学生学号:\n");

scanf("%ld",&x);

while(r&&r->student.num!=x)

r=r->next;

if(r==NULL)

printf("Error! No such student !\n");

else

printf("%ld %s %s %s %s\n",r->student.num,r->student.name,r->student.sex,r->student.birthday,r->student.tel);

}

void search2(struct stucode *r)

{

int a=0,b=0,c=0;

if(!r)

{

printf("没有学生信息可统计!\n");

return ;

}

else{

while(r)

{a++;

if(strcmp(r->student.sex,"男")=='0'){b++;}

if(strcmp(r->student.sex,"女")==0){c++;}

r=r->next;}

}

printf("共有学生%d人,其中男生%d人,女生%d人",a,b,c);

}

void del(struct stucode **r)

{

long k;

struct stucode *p=*r,*t;

if(!(*r))

{

printf("没有学生信息可删除 !\n");

return ;

}

printf(" 请输入要删除的学生信息的学生学号:\n");

scanf("%ld",&k);

if(p->student.num==k)

*r=(*r)->next,free(p);

else

{

while(p->next&&p->next->student.num!=k)

p=p->next;

if(p->next==NULL)

printf("Error! No such student !\n");

else

{

t=p->next;

p->next=p->next->next;

free(t);

}

}

}

void insert(struct stucode **r)

{

long n;

char a[20];

char s[4];

char b[12];

char m[12];

L *p,*t,*k;

printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 性别  出生日期  电话 (若要结束请输入三个为零) \n");

scanf("%ld%s%s%s%s",&n,a,s,b,m);

p=(L *)malloc(sizeof(L));

p->student.num=n;

strcpy(p->student.name,a);

strcpy(p->student.sex,s);

strcpy(p->student.birthday,b);

strcpy(p->student.tel,m);

if(!(*r))

{

*r=p;

(*r)->next=NULL;

return ;

}

if(p->student.num<(*r)->student.num)

p->next=(*r),(*r)=p;

else

{

t=*r;

k=t;

while(t->next&&t->next->student.num<=p->student.num)

t=t->next;

p->next=t->next;

t->next=p;

*r=k;

}

}

void sort(struct stucode **r)

{

struct stucode *t,*p,*q,*z;

if(!r)

{

printf("没有学生信息可排序!\n");

return ;

}

if(!(*r)||!(*r)->next)

return;

t=*r;

p=t->next;

t->next=NULL;

while(p)

{

q=p->next;

if(p->student.num>t->student.num)

{

p->next=t;

t=p;

}

else

{

z=t;

while(z->next&&z->next->student.num>=p->student.num)

z=z->next;

p->next=z->next;

z->next=p;

}

p=q;

}

*r=t;

}

void out(struct stucode *r)

{

printf("\n\n");

if(!r)

{

printf("没有学生信息可输出!\n");

return ;

}

while(r)

{

printf("%ld %s %s %s %s\n",r->student.num,r->student.name,r->student.sex,r->student.birthday,r->student.tel);

r=r->next;

}

printf("\n\n");

}

void menu()

{

printf("\n 学生信息管理系统\n");

printf("\n 菜单\n\n");

printf("\n 1建立链表并显示\n");

printf("\n 2查找某学号的学生信息\n");

printf("\n 3查找某姓名的学生信息\n");

printf("\n 4删除某学号的学生信息\n");

printf("\n 5插入新的学生信息\n");

printf("\n 6按学号降序排列输出\n");

printf("\n 7输出\n");

printf("\n 0退出\n");

printf("\n 请选择您要执行的选项:\n");

}

更多相关推荐:
C语言学生成绩管理系统课程设计报告

C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1能按学期按班级完成对学生成绩的录入修改2能按班级统计学生的成绩求学生的总分及平均...

c语言程序设计报告 学生成绩管理系统

学生成绩管理系统课程设计报告书学生成绩管理系统单位分院班级学号姓名指导老师完成日期20xx年7月14日1学生成绩管理系统内容摘要摘要本次课程设计的课题是学生成绩管理系统本文介绍课程设计课题的选题意义说明了本系统...

C语言课程设计报告学生成绩管理系统

数据结构课程设计报告学号0820xx106姓名付振华日期20xx年7月9日一课程设计题目学生成绩管理二需求分析给出n个学生的m门考试的成绩表每个学生的信息由学号姓名性别以及各科成绩组成对学生的考试成绩进行有关统...

C语言课程设计 学生成绩管理系统 源代码

学生成绩管理系统用户名xdxy密码700619includeltstdiohgtincludeltconiohgt清屏includeltstdlibhgt显示目录includeltstringhgtdefine...

C语言课程设计报告 --学生成绩管理系统

内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计论文题目学生成绩管理系统学生姓名胡书培学号1067111106专业计算机科学与技术班级10级计算机1班指导教师周李涌20xx年12月30日1内蒙古科技大学课...

C语言学生成绩管理系统课程设计报告

目录摘要11需求分析22详细设计说明221功能模块图222数据结构设计3221学生成绩信息结构体3222单链表node结构体323功能模块设计4231主函数main执行流程4232输入学生信息模块4233查询学...

c语言课程设计报告学生成绩管理系统

C语言课程设计报告题目:学生成绩管理系统设计者:专业班级:计算机应用技术101班学号:指导教师:20##年12月23日学生成绩管理系统课程设计报告目录一.系统软件环境(3)二.课程设计目的(3)三.内容与要求(…

C语言课程设计报告学生成绩管理系统

C语言课程设计报告学生成绩管理系统学院计算机学院专业软件工程4班年级20xx级姓名学号教师20xx年2月27日广东工业大学计算机学院制一设计题目学生成绩管理系统二课程设计目的了解软件工程中的一些系统分析模块分析...

c语言课程设计-学生成绩管理系统

学生成绩管理系统课程设计报告目录一系统软件环境3二课程设计题目3三课程设计的基本要求3四数据结构设计描述4五各变量的定义和作用4六系统各函数的功能相互调用关系4七NS流程图5八课程设计过程中遇到的问题及解决过程...

C语言课程设计报告--学生成绩管理系统

学生成绩管理系统课程设计报告20xx79一程序整体规划1系统的基本功能数据的录入如录入学生的基本信息以及该学生选修课程的基本信息数据的修改如修改指定学号或者指定姓名的学生信息或者修改其选修课程信息数据的插入插入...

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

C语言课程设计报告学生成绩管理系统系统需求一当前学生信息通过结构体structstudent来保存学生的姓名学号性别语文数学英语和计算机等等相关信息并且通过cin函数来进行给当前学生输入初始信息二学生成绩查询输...

C语言课程设计学生成绩管理系统

学生成绩管理系统前言C语言程序设计课程设计是对学生的一种全面综合训练它包括问题分析总体结构设计用户界面设计程序设计基本技能和技巧多人合作以至一整套软件工作规范的训练和科学作风的培养是与课堂听讲自学和练习相辅相成...

c语言课程设计报告学生成绩管理系统(40篇)