1、学生成绩管理系统 C语言江西科技师范大学高级语言程序设计实训报告 专 业:计算机科学与技术(职教)学生姓名:芦育清学 号:20142371指导教师:曾纯青2015年5月27日C语言学生系统调试分析与运行结果一系统总体设计(用了链表)本系统设计的函数是由一个主函数几个子函数组成的。首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决新建、显示、查找、删除、退出功能的子函数编程中遇到的问题。首先通过新建函数添加信息,然后再逐步编写和验证其它功能。显示函数的设计利用C语言的循环功能依次输出信息。查找是用一个字符串比较得出两个相同的字符串的方法找出用户要查找的人。删除函数的设计首先先
2、找到对应的链表然后删除此链表实现删除目的的,for循环和 while循环在这此设计中也起了很大的作用。 三系统流程图四程序的数据设计1 菜单函数菜单函数首先标出欢迎进入学生管理系统,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:2 新建学生信息 通过开辟链表对每个链表赋值,每输完一次便指向下一个链表,并用一个计数器计入新建的个数; 3 查看学生信息 显示学校信息通过循环函数将全部的通讯录信息以此显示出来,其流程图如图所示: 4 删除学生信息链表的删除操作是指将某个节点从链表中分离出来,也就是修改该节点的前趋节点指针,使其指向要删除节点的后节点就
3、可以了。 假真假真 5 查找学生信息 通过两字符串的比较,找到与输入姓名相同的姓名的位置。 6 退出学生管理系统在使用完系统后,按0键便会退出系统. 按0即退出;7我的代码 #include#include#include#include#include#define LEN sizeof(struct student) struct student* Head;struct student int num; char name10; int score;struct student *next; int n;struct student* creat() /新建学生信息 struct stu
4、dent* head=NULL,*a,*b; /这里的初始化为null是为了避免出错 n=0; a=(struct student*)malloc(LEN); printf(请输入学号姓名和分数(当输入的学号姓名和分数为0时退出新建):n); scanf(%d,&a-num); scanf(%s,a-name); scanf(%d,&a-score); a-next=NULL;while(a-num!=0) n=n+1;if(n=1) head=a; b=a;else a=(struct student*)malloc(LEN); a-next=NULL; printf(请输入学号姓名和分数:
5、n); scanf(%d,&a-num); scanf(%s,a-name); scanf(%d,&a-score); if(a-num !=0) b-next=a; b=a; b-next=NULL; return head;void print(struct student* head) /查看所有学生信息 struct student* p; p=head;while(p!=NULL) printf(学号:%d,p-num); printf(姓名:%s,p-name); printf(分数:%dn,p-score); p=p-next; printf(按任意键进行.); fflush(s
6、tdin); getchar(); system(cls);void delet(struct student* head,int num) struct student* s,* p;if(head=NULL) printf(链表为空,不能进行删除结点操作!);else p=head; while(p-num!=num) s=p; p=p-next; if(p=NULL) printf(没有此人信息!n); else if(p=head) Head=head-next; n-; else s-next=p-next; free(p); n-; printf(按任意键进行.); fflush(
7、stdin); getchar(); system(cls); void search(struct student* head,int num) /查找单个学生信息 struct student* c; int i=0; c=head;while(c!=NULL) i=i+1; if(c-num=num) printf(学号:%d,c-num); printf(姓名:%s,c-name); printf(分数:%dn,c-score); break; else c=c-next;if(in) printf(查无此人!n); printf(按任意键进行.); fflush(stdin); ge
8、tchar(); system(cls); void code() int a; static int b=0; if(b=3) printf(对不起!你已经输入3次!n); printf(按任意键退出.); fflush(stdin); getchar(); exit(0); char mima11; char mima111=20142371; int j; printf( - n); printf( - n); printf( 请输入您的登录密码:); for(j=0;j10;j+) mimaj=getch(); if(mimaj= r ) /空格也是一个字符 break; printf
9、(*); mimaj=0;/ Romdo(); b=b+1; if(strcmp(mima1,mima)=0); else system(cls); printf(你输入的密码错误!n); printf(1:继续 2:退出n); scanf(%d,&a); system(cls); switch(a) case 1: code();break; case 2: exit(0); system(cls);void main() system(color 5A); code(); int choic,m,s; printf(n); printf( - n); printf( - n); Sleep
10、(300); printf( 欢); system(color 1A); Sleep(300); printf(迎); system(color 2A); Sleep(300); printf(来); system(color 3A); Sleep(300); printf(到); system(color 4A); Sleep(300); printf(学); system(color 6A); Sleep(300); printf(生); system(color 0A); Sleep(300); printf(管); system(color 1b); Sleep(300); print
11、f(理); system(color 7A); Sleep(300); printf(系); system(color 2b); Sleep(300); printf(统n); system(color 5A); Sleep(300); printf( - n); printf( - n); do printf(tt n) ; printf(tt * *n) ; printf(tt * *n) ; printf(tt * 1:新建学生信息 *n) ; printf(tt * *n) ; printf(tt * 2:查看学生信息 *n) ; printf(tt * *n) ; printf(tt
12、 * 3:删除学生信息 *n) ; printf(tt * *n) ; printf(tt * 4:查找学生信息 *n) ; printf(tt * *n) ; printf(tt * 0:退出学生系统 *n) ; printf(tt * *n) ; printf(tt n) ; printf(请选择您要进行的操作); /printf(请选择学生管理系统功能:1:新建 2:查看学生信息 3:删除 4:查找 0:退出n); scanf(%d,&choic); system(cls);switch(choic)case 1: printf(新建学生信息); Head=creat(); system(cls);break;case 2: print(Head);break;case 3: printf(输入您要删除的学生的学号:); scanf(%d,&s); delet(Head,s);break;case 4: printf(输入您要查找的学生的学号:); scanf(%d,&m); search(Head,m); break; case 0: break;while(choic!=0);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1