学生学籍管理系统实验报告及源代码汇编.docx

上传人:b****4 文档编号:24385252 上传时间:2023-05-26 格式:DOCX 页数:26 大小:85.84KB
下载 相关 举报
学生学籍管理系统实验报告及源代码汇编.docx_第1页
第1页 / 共26页
学生学籍管理系统实验报告及源代码汇编.docx_第2页
第2页 / 共26页
学生学籍管理系统实验报告及源代码汇编.docx_第3页
第3页 / 共26页
学生学籍管理系统实验报告及源代码汇编.docx_第4页
第4页 / 共26页
学生学籍管理系统实验报告及源代码汇编.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

学生学籍管理系统实验报告及源代码汇编.docx

《学生学籍管理系统实验报告及源代码汇编.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统实验报告及源代码汇编.docx(26页珍藏版)》请在冰豆网上搜索。

学生学籍管理系统实验报告及源代码汇编.docx

学生学籍管理系统实验报告及源代码汇编

一、 课程设计目的

加深对C语言课程所学知识的理解,进一步巩固C语言语法规则。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,使学生通过系统分析、系统设计、编程调试,写实验报告等环节,初步掌握软件系统设计的方法和步骤,训练灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提高程序设计水平,培养必要的工程实践动手能力

 

二、课程设计内容

学生学籍管理系统

1,输入并验证密码;

2,设计菜单进行选择相应的操作;

3,用链表录入并输出数据,包括学生的户籍、成绩、奖惩信息;

4,将录入的数据存放在文件里面并读取文件;

5,对录入的数据进行修改;

6,删除个人信息;

7,查找个人信息;

8,对录入的成绩进行排序;

9,统计不及格的成绩;

10,释放链表;

三、需求分析

对所开发系统功能、性能的描述,想要实现的目标。

输入并验证密码的正确性,定义结构体类型来存放学生的基本信息(包括学生的姓名、学号、性别、出生日期等),然后建立链表存放信息,将信息存入文件中,以便以后的各个功能模块调试时直接调用,对数据进行修改、删除、查找、排序操作,然后对输入的数据进行统计,查出不及格的学生成绩。

实现的目标是对学生的学籍进行管理,更新并统计数据。

 

四、概要设计

 

 

 

 

功能模块说明:

输入密码:

从键盘输入密码,判断输入的密码是否与系统设定的密码相同,若相同则进入主菜单,不相同则继续输入;

主菜单:

显示系统的各项功能与相对应的数字选项。

输入数据函数:

从键盘输入数据,并将数据存入链表。

输出数据函数:

对存储的数据进行输出。

查找数据函数:

对存储的数据进行查询并显示查询结果。

删除数据函数:

对存入的数据进行删除。

修改数据函数:

对存入的数据进行修改。

保存数据函数:

将从键盘输入的数据存入到文件中

读取数据函数:

从文件中读取个人信息。

排序函数:

对平均成绩进行排序并显示排序结果

统计函数:

对不及格成绩进行统计并显示统计结果。

退出系统:

退出系统

五、详细设计及运行结果

 

 

六、调试情况,设计技巧及体会

通过两周的课程设计,我对学过的C语言基本知识进行了巩固,并且还对知识进行了扩展。

在本次实习时,刚开始完全没有头绪,不知道从何入手,感觉难度很大.但是逐渐开始编写程序慢慢发现,原来不是想象中的那么难.在一个个模块成功编写出来的同时,获得了巨大的成就感,并且掌握的许多上课遗漏和不很了解的知识.。

对一些细节以前不太注意,常常忽略,真正操作起来时发现一些小问题也会导致程序无法进行。

要想运行正常,必须保证零错误。

同时,这两周的实习使我对链表更熟悉了。

以前总感觉链表很难,这次程序设计中,我用链表存取数据,并进行删除修改等操作,慢慢对链表熟悉。

另外,在程序运行编译的过程中出现一些错误,需要耐心的去检查错误,调试程序。

七、参考文献

《C语言程序设计》谭浩强清华大学出版社

《C语言程序设计教程》张毅坤曹锰张亚玲西安交通大学出版社

《C语言程序设计》王曙燕曹锰科学出版社

#include

#include

#include

#include

#include

#include

#include

#defineLENsizeof(structstudent)

typedefstruct

{intyear;

intmonth;

intday;

}DATE;

structstudent

{intnum;

charname[10];

charsex;

DATEbirthday;

intmath;

intC;

intphysic;

intEnglish;

floataverage;

DATEtime;

charreason[50];

charresult[50];

charunit[50];

structstudent*next;

};

structstudent*read_file();/*读取文件*/

voidsave_file();/*保存*/

voidinput();/*创建链表,输入数据*/

voidoutput(structstudent*head);/*输出*/

voidseek(structstudent*h);/*查找*/

voiddel();/*删除*/

voidchange();/*修改*/

voidsort();/*对成绩进行排序*/

voidsummarise();/*对不及格成绩进行统计*/

voidfree_linklist(void);/*释放链表*/

voidprint(structstudent*p);/*输出函数*/

voidmenu();/*菜单*/

voidpassword();/*密码*/

structstudent*head=NULL;

intnumber=0;

main()

{password();

getch();

system("cls");

printf("\n\n\n\n\n\t\t\t*******欢迎进入学生学籍管理系统*******\n\n\n");

getch();

menu();

}

voidpassword()

{

chars[8],ch;

inti;

s[0]='0';s[1]='4';s[2]='0';s[3]='8';

s[4]='2';s[5]='0';s[6]='4';s[7]='1';

printf("\n\n\n\n\n\t\t\t**************************\n\n");

printf("\t\t\t**************************\n\n");

printf("\t\t\t**************************\n\n\n\n\n");

do{

printf("\t\t\t\tpleaseinputpassword:

\n\t\t\t\t\t");

for(i=0;i<8;i++)

{ch=getch();

if(ch!

=s[i])

break;

printf("*");

}

printf("\n\n");

if(i!

=8)

{

printf("It'serror!

!

\n");

printf("pleaseinputagain!

\n");

}

elsebreak;

}while

(1);

}

voidmenu()

{

intselect=-1;

head=NULL;

while(select!

=0)

{system("cls");

printf("\t\t\t*************************************\n");

printf("\t\t\t*1Input\n");

printf("\t\t\t*2Output\n");

printf("\t\t\t*3seek\n");

printf("\t\t\t*4delete\n");

printf("\t\t\t*5change\n");

printf("\t\t\t*6save\n");

printf("\t\t\t*7read\n");

printf("\t\t\t*8sort\n");

printf("\t\t\t*9summarise\n");

printf("\t\t\t*0Exit\n");

printf("\t\t\t************************************\n");

printf("Pleaseinputselect(0-8):

");

scanf("%d",&select);

switch(select)

{

case1:

input();

break;

case2:

output(head);

break;

case3:

seek(head);

break;

case4:

del();

break;

case5:

change();

break;

case6:

save_file();

break;

case7:

head=read_file();

break;

case8:

sort();

break;

case9:

summarise();

break;

case0:

free_linklist();

break;

}

}

}

voidinput()/*创建链表,输入数据*/

{

structstudent*p1,*p2;

p1=(structstudent*)malloc(LEN);

printf("pleaseinputthestudent'sinformation:

\n");

printf("addressinformation:

\n");

printf("numnamesexyearmonthday\n");

scanf("%d",&p1->num);

fflush(stdin);

scanf("%s",p1->name);

fflush(stdin);

scanf("%c",&p1->sex);

fflush(stdin);

scanf("%d%d%d",&p1->birthday.year,&p1->birthday.month,&p1->birthday.day);

printf("scoreinformation:

\n");

printf("mathCphysicEnglish\n");

scanf("%d%d%d%d",&p1->math,&p1->C,&p1->physic,&p1->English);

p1->average=((float)(p1->math+p1->C+p1->physic+p1->English))/4;

printf("rewardsandpunishments:

\n");

printf("time(yearmonthday)\n");

scanf("%d%d%d",&p1->time.year,&p1->time.month,&p1->time.day);

printf("reason:

");

fflush(stdin);

scanf("%s",p1->reason);

printf("result:

");

fflush(stdin);

scanf("%s",p1->result);

printf("unit:

");

fflush(stdin);

scanf("%s",p1->unit);

p1->next=NULL;

number++;

if(head==NULL)

{

head=p1;

}

else

{

p2=head;

while(p2->next)

p2=p2->next;

p2->next=p1;

}

getch();

}

voidoutput(structstudent*head)/*输出链表*/

{

structstudent*p;

intkind,flag=1;

charchoice='a';

if(head==NULL)

{

printf("NotInputbefore!

\n");

getch();

return;

}

while(flag)

{

printf("students'informationinputbeforeasfowllow:

\n");

printf("1:

address;2:

score;3:

rewardsandpunishments0:

exit\n");

printf("pleasechoice:

");

scanf("%d",&kind);

p=head;

do

{

switch(kind)

{case1:

printf("addressinformation:

\n");

printf("numnamesexyearmonthday\n");

printf("%d%s%c",p->num,p->name,p->sex);

printf("%d%d%d\n",p->birthday.year,p->birthday.month,p->birthday.day);

break;

case2:

printf("scoreinformation:

\n");

printf("numnamemathCphysicEnglishaverag\n");

printf("%d%s%d%d%d%d",p->num,p->name,

p->math,p->C,p->physic,p->English);

printf("%2.2f\n",p->average);

break;

case3:

printf("rewardsandpunishments:

");

printf("num:

%dname%s\n",p->num,p->name);

printf("time:

year/%dmonth/%dday/%d\n",p->time.year,p->time.month,p->time.day);

printf("reason:

%s\n",p->reason);

printf("result:

%s\n",p->result);

printf("unit:

%s\n",p->unit);

break;

}

p=p->next;

}while(p);

printf("continuetochoice(y/n)");

fflush(stdin);

choice=getchar();

if(choice=='n')

flag=0;

}

printf("Displayfinish!

\n");

getch();

}

voidseek(structstudent*h)/*查找链表*/

{structstudent*p;

intseeknum;

printf("pleaseinputthenumwhatyoulookfor:

");

scanf("%d",&seeknum);

p=h;

while(p&&seeknum!

=p->num)

p=p->next;

if(!

p)

printf("thenumyoulookfordon'texist!

\n");

else

{

print(p);

}

getch();

}

voiddel()/*删除链表*/

{

intdelnum;

structstudent*p1,*p2;

p1=head;

printf("inputdeletenum:

\n");

scanf("%d",&delnum);

while(delnum!

=p1->num&&p1->next!

=NULL)

{p2=p1;

p1=p1->next;

}

if(delnum==p1->num)

{

if(p1==head)

head=p1->next;

else

p2->next=p1->next;

printf("thestudent'sinformationyouinputhavebeendeleted!

\n");

number--;

}

else

printf("thestudentyouwhattodeletedon'texist!

\n");

getch();

}

voidchange()/*修改链表*/

{

intchangenum,kind;

intchoice,flag=1;

charselect=1;

structstudent*p;

p=head;

while(flag!

=0)

{printf("pleaseinputthenumyouwanttochange:

\n");

scanf("%d",&changenum);

while(changenum!

=p->num)

p=p->next;

if(changenum==p->num)

{

printf("inputthenewinformation:

\n");

printf("1:

address;2:

score;3:

rewardsandpunishments;0:

exit;\n");

printf("inputthekindyouwanttochange:

");

fflush(stdin);

scanf("%d",&kind);

switch(kind)

{case1:

printf("1:

name;2:

sex;3:

birthday;");

printf("pleasechoice:

");

fflush(stdin);

scanf("%d",&choice);

switch(choice)

{case1:

printf("inputthenewname:

");

fflush(stdin);

scanf("%s",p->name);

break;

case2:

printf("inputthenewsex:

");

fflush(stdin);

scanf("%c",&p->sex);

break;

case3:

printf("inputthenewbirthday:

");

fflush(stdin);

scanf("%d%d%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);

break;

}

break;

case2:

printf("1:

math;2:

C;3:

physics;4:

English;");

printf("pleasechoice:

");

fflush(stdin);

scanf("%d",&choice);

switch(choice)

{case1:

printf("inputthenewmath:

");

fflush(stdin);

scanf("%d",&p->math);

break;

case2:

printf("inputthenewC:

");

fflush(stdin);

scanf("%d",&p->C);

break;

case3:

printf("inputthenewphysic:

");

fflush(stdin);

scanf("%d",&p->physic);

break;

case4:

printf("inputthenewEnglish:

");

fflush(stdin);

scanf("%d",&p->English);

break;

}

break;

case3:

printf("1:

time;2:

reson;3:

result;4:

unit;");

printf("pleasechoice:

");

fflush(stdin);

scanf("%d",&choice);

switch(choice)

{case1:

printf("inputthenewtime:

");

fflush(stdin);

scanf("%d%d%d",&p->time.year,&p->time.month,&p->time.day);

break;

case2:

printf("inputthenewreason:

");

fflush(stdin);

scanf("%s",p->reason);

break;

case3:

printf("inputthenewresult:

");

fflush(stdin);

scanf("%s",p->result);

break;

case4:

printf("inputthenewunit:

");

fflush(stdin);

scanf("%s",p->unit);

break;

}

}

}

else

printf("thenumyouwanttochangedon'texist!

\n");

printf("continuetochange?

(y/n)");

fflush(stdin);

select=getchar();

if(select=='n')

flag=0;

else

printf("continue!

\n");

}

print(p);

getch();

}

voidsave_file()/*保存文件*/

{FILE*fp;

structstudent*stu;

charfilename[10];

printf("inputinfilename:

\n");

scanf("%s",filename);

if((fp=fopen(filename,"wb+"))==NULL)

{printf("cannotopenfile!

!

");

exit(0);

}

stu=head;

do

{

if(fwrite(stu,LEN,1,fp)!

=1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1