学生学籍管理系统 课程设计10.docx

上传人:b****3 文档编号:11637166 上传时间:2023-06-01 格式:DOCX 页数:29 大小:326.70KB
下载 相关 举报
学生学籍管理系统 课程设计10.docx_第1页
第1页 / 共29页
学生学籍管理系统 课程设计10.docx_第2页
第2页 / 共29页
学生学籍管理系统 课程设计10.docx_第3页
第3页 / 共29页
学生学籍管理系统 课程设计10.docx_第4页
第4页 / 共29页
学生学籍管理系统 课程设计10.docx_第5页
第5页 / 共29页
学生学籍管理系统 课程设计10.docx_第6页
第6页 / 共29页
学生学籍管理系统 课程设计10.docx_第7页
第7页 / 共29页
学生学籍管理系统 课程设计10.docx_第8页
第8页 / 共29页
学生学籍管理系统 课程设计10.docx_第9页
第9页 / 共29页
学生学籍管理系统 课程设计10.docx_第10页
第10页 / 共29页
学生学籍管理系统 课程设计10.docx_第11页
第11页 / 共29页
学生学籍管理系统 课程设计10.docx_第12页
第12页 / 共29页
学生学籍管理系统 课程设计10.docx_第13页
第13页 / 共29页
学生学籍管理系统 课程设计10.docx_第14页
第14页 / 共29页
学生学籍管理系统 课程设计10.docx_第15页
第15页 / 共29页
学生学籍管理系统 课程设计10.docx_第16页
第16页 / 共29页
学生学籍管理系统 课程设计10.docx_第17页
第17页 / 共29页
学生学籍管理系统 课程设计10.docx_第18页
第18页 / 共29页
学生学籍管理系统 课程设计10.docx_第19页
第19页 / 共29页
学生学籍管理系统 课程设计10.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生学籍管理系统 课程设计10.docx

《学生学籍管理系统 课程设计10.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统 课程设计10.docx(29页珍藏版)》请在冰点文库上搜索。

学生学籍管理系统 课程设计10.docx

学生学籍管理系统课程设计10

软件设计报告

 

题目:

学生学籍管理系统

 

院系名称

电子工程学院

专业名称

电子信息工程

班级

班内序号

学生姓名

指导教师

时间

2010年6月7日至2010年6月18日

 

一、课程设计目的

1.熟悉C语言程序的编辑、编译链接和运行的过程,至少能够用一种编译器较熟练地编辑、编译及调试程序。

2.掌握C语言数据类型,如何定义一个整型,如何将整形强制转换为实形以及对它们赋值的方法。

3.熟练运用if语句和switch语句以及嵌套应用。

涉及循环调用的,了解并掌握三种控制语句while、do-while和for语句。

4.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。

5.掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。

6.掌握结构体类型变量、数组的定义和使用。

7.掌握链表的使用,及函数的调用。

二、课程设计内容简介

学生成绩管理主要功能:

(1)能按学号完成对学生信息的录入、修改、插入以及删除。

(2)能按学生的学号大小对学生进行排序。

(3)能根据学号、姓名查询学生信息。

三、需求分析

系统功能:

(1)能按学号对学生的信息进行录入、修改、删除、插入

(2)。

能根据学生的学号进行排序

(3)能查询学生学号,姓名,出生年月日,性别,地址,电话。

(4)能按学号、姓名查询学生各个信息

(5)可以保存到文件(附加功能)

(6)可以从文件读入已有的文件(附加功能)

(7)以菜单方式工作

性能描述:

各种功能都可以满足;程序相对较小,因而运行时反应比较迅速,不存在响应不及时地问题。

四、总体设计

1.学生成绩管理系统模块图

2.程序可以满足以下功能:

1.各模块间通过菜单切换和调用

2.主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。

3.程序能够保证各模块功能的独立和数据共享。

4.安全需要,需输入密码进入系统。

 

(1)模块流程图:

输入模块:

输入学生的各种信息,并保存到文件中。

输出模块:

输出学生的信息,与输入的过程相反。

 

排序模块:

按学号排序

查找删除模块:

添加模块:

(2)主要函数说明:

a)主函数(main):

调用各功能模块。

b)密码验证模块(login()):

要求用户输入正确密码,对用户身份进行验证,保证数据安全。

c)读取信息模块(read_inf):

将已存入E:

\\chengji.txt的学生信息调入主函数;

d)保存信息模块(save_inf):

将从输入信息模块(input_message)输入的学生信息存入E:

\\chengji.txt

e)创建信息模块(creat):

创建链表,录入学生信息,并返回头指针。

f)输出信息模块(printf_inf):

显示输入的和已存学生信息;

g)学生查询修改模块(searchcorrect):

1)按姓名查询:

searchbynum

2)按学号查询:

searchbyname

修改查询信息,否则退出修改

h)统计信息模块(count_message):

统计学生数量。

i)信息排序模块(sort):

按学生学号进行排序。

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

1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。

这个程序的主要功能包括录入、浏览、排序、查询、修改、删除、统计、保存、版本信息、退出。

我自己认为都可以,就是程序的登录系统有点简单。

还有一点就是删除模块太简单,一次只能删除一个人的信息,而且是全部删除,不能选择删除某一个信息,有待改进。

2、在设计过程中的感受。

刚开始,头脑里没有任何思路,不知道如何下手,经过仔细研读例题后,终于有了思绪,先编小模块:

输入,输出,查询等,再编比较大的模块,我觉得所有模块中最难编的就是删除和更改模块,苦思冥想,再加上老师和例题的帮助,总算做出来了,但是非常复杂。

在编译的过程中总会出现五花八门的错误,比如:

输出的学生信息不是原先输入的信息,有错误信息,或者是乱码等。

后来才发现原来是定义的空间不够大,字符之间没有隔开,经过改正之后果然正确了。

改正完后,当把所有的小块连接在一起时,虽然没有错误,但是总有许多警告语句,运行的结果也不尽人意。

通过老师的提示后才发现原来是自己的定义有问题。

经过两个星期的上机实践学习,我才发现我的C语言上机实践能力很差,有待进步。

以后不但要重视课本与习题,更要重视上机实践。

七、源程序清单和执行结果:

(交电子文档)

运行结果如下:

 

源程序如下:

#include

#include

#include

#defineNsizeof(structnode)

structnode/*学生信息*/

{

charname[10];

charnum[10];

charsex[5];

intage;

charaddress[20];

structnode*next;

};

structnode*creat()/*创建链表*/

{

structnode*head,*p1,*p2;

charchoice;

head=(structnode*)malloc(N);

p2=head;

do

{p1=(structnode*)malloc(N);

printf("pleaseinputtheinfo:

\n");

printf("---------------------\n");

printf("请输入学生姓名:

\n");

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

printf("请输入学生学号:

\n");

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

printf("请输入学生性别:

\n");

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

printf("请输入学生年龄:

\n");

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

printf("请输入学生住址:

\n");

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

flushall();

p2->next=p1;

p2=p1;

printf("是否继续?

(y/n?

)");

choice=getchar();

}while(choice=='y');

p2->next=NULL;

return(head);

}

voidsearchbynum(structnode*p0)/*按学号查找*/

{charnum[10];

printf("请输入要查找的学号:

");

scanf("%s",num);

while(p0->next!

=NULL)

{

p0=p0->next;

if(strcmp(p0->num,num)==0)

{

printf("姓名学号性别年龄住址\n");

printf("%s%s%s%d%s\n",p0->name,p0->num,p0->sex,p0->age,p0->address);

}

}

printf("无该学生信息\n");

}

voidsearchbyname(structnode*p0)/*按姓名查找*/

{charname[10];

printf("请输入要查找学生的姓名:

");

scanf("%s",name);

while(p0->next!

=NULL)

{

p0=p0->next;

if(strcmp(p0->name,name)==0)

{

printf("姓名学号性别年龄住址\n");

printf("%s%s%s%d%s\n",p0->name,p0->num,p0->sex,p0->age,p0->address);

}

}

printf("无该学生信息\n");

}

voidsearchcorrect(structnode*p)/*查找修改信息*/

{

structnode*p0;

intchoice;

while

(1)

{

p0=p;

printf("请输入要查找的信息\n");

printf("1.按学号查找\n");

printf("2.按姓名查找\n");

printf("---------------");

scanf("%d",&choice);

switch(choice)

{

case1:

searchbynum(p0);break;

case2:

searchbyname(p0);break;

}

printf("是否对学生信息进行修改?

(y/n)");

getchar();

if(getchar()=='y')

{

printf("请输入学生新的信息!

");

printf("---------------------\n");

printf("请输入学生姓名:

\n");

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

printf("请输入学生学号:

\n");

scanf("%s",p0->num);

printf("请输入学生性别:

\n");

scanf("%s",p0->sex);

printf("请输入学生年龄:

\n");

scanf("%d",&p0->age);

printf("请输入学生住址:

\n");

scanf("%s",p0->address);

}

printf("是否继续查找?

(y/n)");

getchar();

if(getchar()=='n')

break;

}

}

 

voiddelete_inf(structnode*head)/*删除信息*/

{

charnum[10];

charname[10];

structnode*p,*p0;

intchoice;

p0=head;

p=p0->next;

if(p==NULL)

printf("无该学生信息!

!

");

while

(1)

{

printf("输入要删除的信息:

");

printf("1.学号2.姓名\n");

scanf("%d",&choice);

if(choice==1)

{

printf("输入删除学号:

\n");

scanf("%s",num);

p0=head;

p=p0->next;

while(p!

=NULL)

{

if(strcmp(p->num,num)==0)

{

p0->next=p->next;

printf("姓名学号性别年龄住址\n");

printf("%s%s%s%d%s\n",p->name,p->num,p->sex,p->age,p->address);

printf("确认删除吗?

(y/n)");

getchar();

if(getchar()=='n')

break;

else

{

free(p);

printf("删除成功!

!

");

break;

}

}

else

{

p0=p;

p=p->next;

if(p==NULL)

printf("无该学生信息!

!

");

}

}

}

elseif(choice==2)

{

printf("输入删除学生姓名:

\n");

scanf("%s",name);

p0=head;

p=p0->next;

while(p!

=NULL)

{

if(strcmp(p->name,name)==0)

{

p0->next=p->next;

printf("姓名学号性别年龄住址\n");

printf("%s%s%s%d%s\n",p->name,p->num,p->sex,p->age,p->address);

printf("确认删除吗?

(y/n)");

getchar();

if(getchar()=='n')

break;

else

{

free(p);

printf("删除成功!

!

");

break;

}

}

else

{

p0=p;

p=p->next;

if(p==NULL)

printf("无该学生信息!

!

");

}

}

}

printf("是否继续删除?

(y/n)");

getchar();

if(getchar()=='n')

break;

}

}

voidadd_inf(structnode*head)/*添加信息*/

{

while

(1)

{structnode*p;

p=(structnode*)malloc(N);

printf("请输入添加学生的信息!

");

printf("---------------------\n");

printf("请输入学生姓名:

\n");

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

printf("请输入学生学号:

\n");

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

printf("请输入学生性别:

\n");

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

printf("请输入学生年龄:

\n");

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

printf("请输入学生住址:

\n");

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

p->next=head->next;

head->next=p;

printf("是否继续添加?

(y/n)");

getchar();

if(getchar()=='n')

break;

}

}

 

voidsave_inf(structnode*h)/*链表信息存入文件*/

{

structnode*stu;

FILE*fp;

if((fp=fopen("E:

\\chengji.txt","wt"))==NULL)

{

printf("写文件出错,按任意键退出!

");

getchar();

exit

(1);

}

for(stu=h->next;stu->next!

=NULL;stu=stu->next)

{

fwrite(stu,N,1,fp);

}

printf("\n文件已保存!

按任意键返回");

getchar();

fclose(fp);

}

structnode*read_inf()/*文件信息存入链表*/

{

structnode*head,*r,*stu;

FILE*fp;

if((fp=fopen("E:

/chengji.txt","rt"))==NULL)

{

printf("文件未建立!

");

return(0);

}

head=(structnode*)malloc(N);

head->next=NULL;

r=head;

while(!

feof(fp))

{

stu=(structnode*)malloc(N);

fread(stu,N,1,fp);

r->next=stu;

r=stu;

}

r->next=NULL;

fclose(fp);

printf("读取文件成功!

");

getchar();

returnhead;

 

}

printf_inf(structnode*head)/*打印数据*/

{

structnode*stu;

printf("\n该学生信息为:

\n");

printf("姓名学号性别年龄住址\n");

printf("--------------------------------------------------------------------\n");

for(stu=head->next;stu->next!

=NULL;stu=stu->next)

printf("%s%s%s%d%s\n",stu->name,stu->num,stu->sex,stu->age,stu->address);

printf("\n按任意键返回");

getchar();

}

voidlogin()//密码

{

charname[10];

charp;

chars[9];

inti;

printf("用户名:

");

flushall();

gets(name);

printf("密码:

");

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

{

p=getch();

printf("*");

s[i]=p;

}

s[8]='\0';

printf("\n");

if(!

(strcmp(s,"88888888")))

{

system("cls");

printf("\n\n\n\n\n\n\n\n\n您已成功登陆!

");

}

else

{

system("cls");

printf("\n\n\n\n\n\n\n\n\n密码错误,您无权使用该系统!

\n\n");

exit

(1);

}

}

 

voidSort(structnode*head)//排序

{structnode*First,*Last;

chart[10];

intp;

First=head->next;

while(First->next!

=NULL)

{

Last=First->next;

while(Last!

=NULL)

{

if(strcmp(First->num,Last->num)>0)

{

strcpy(t,First->name);

strcpy(First->name,Last->name);

strcpy(Last->name,t);

strcpy(t,First->num);

strcpy(First->num,Last->num);

strcpy(Last->num,t);

strcpy(t,First->sex);

strcpy(First->sex,Last->sex);

strcpy(Last->sex,t);

strcpy(t,First->address);

strcpy(First->address,Last->address);

strcpy(Last->address,t);

p=First->age;

First->age=Last->age;

Last->age=p;

}

Last=Last->next;

}

First=First->next;

}

printf_inf(head);

}

voidmain()

{

structnode*head;

intchoice;

login();

if((head=read_inf())==0)

{

printf("请录入数据\n");

head=creat();

save_inf(head);

}

while

(1)

{

system("CLS");

printf("\n\n**************学生学籍管理系统**************\n\n");

printf("1.显示全部学生信息\n\n");

printf("2.添加学生信息\n\n");

printf("3.删除学生信息\n\n");

printf("4.查询或修改学生信息\n\n");

printf("5.学生学号排序\n\n");

printf("6.储存文件\n\n");

printf("7.退出系统\n\n");

printf("请选择(0~7)\n\n");

scanf("%d",&choice);

getchar();

system("CLS");

switch(choice)

{

case1:

printf_inf(head);break;

case2:

add_inf(head);break;

case3:

delete_inf(head);break;

case4:

searchcorrect(head);break;

case5:

Sort(head);break;

case6:

save_inf(head);break;

case7:

exit(0);break;

}

}

}

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

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2