C语言学生信息管理系统2文档格式.doc

上传人:wj 文档编号:8430470 上传时间:2023-05-11 格式:DOC 页数:12 大小:394KB
下载 相关 举报
C语言学生信息管理系统2文档格式.doc_第1页
第1页 / 共12页
C语言学生信息管理系统2文档格式.doc_第2页
第2页 / 共12页
C语言学生信息管理系统2文档格式.doc_第3页
第3页 / 共12页
C语言学生信息管理系统2文档格式.doc_第4页
第4页 / 共12页
C语言学生信息管理系统2文档格式.doc_第5页
第5页 / 共12页
C语言学生信息管理系统2文档格式.doc_第6页
第6页 / 共12页
C语言学生信息管理系统2文档格式.doc_第7页
第7页 / 共12页
C语言学生信息管理系统2文档格式.doc_第8页
第8页 / 共12页
C语言学生信息管理系统2文档格式.doc_第9页
第9页 / 共12页
C语言学生信息管理系统2文档格式.doc_第10页
第10页 / 共12页
C语言学生信息管理系统2文档格式.doc_第11页
第11页 / 共12页
C语言学生信息管理系统2文档格式.doc_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言学生信息管理系统2文档格式.doc

《C语言学生信息管理系统2文档格式.doc》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统2文档格式.doc(12页珍藏版)》请在冰点文库上搜索。

C语言学生信息管理系统2文档格式.doc

/*性别*/

chardate[LEN+1];

/*出生年月*/

chartel[LEN+1];

/*电话号码*/

}stu[N];

2.2.2输入记录模块

voidreadfile()/*建立信息*/

char*p="

student.txt"

;

FILE*fp;

inti=0;

if((fp=fopen("

"

r"

))==NULL)

{

printf("

Openfile%serror!

Strikeanykeytoexit!

"

p);

system("

pause"

);

exit(0);

}

while(fscanf(fp,"

%s%s%d%s%s%s"

stu[i].code,stu[i].name,&

stu[i].age,

stu[i].sex,stu[i].date,stu[i].tel)==8)

i++;

i=i;

fclose(fp);

n=i;

录入完毕!

\n"

2.2.3查询记录模块

voidseek()/*查找*/

inti,item,flag;

chars1[21];

/*以姓名和学号最长长度+1为准*/

------------------\n"

-----1.按学号查询-----\n"

-----2.退出本菜单-----\n"

while

(1)

请选择子菜单编号:

scanf("

%d"

&

item);

flag=0;

switch(item)

case1:

请输入要查询的学生的学号:

%s"

s1);

for(i=0;

i<

n;

i++)

if(strcmp(stu[i].code,s1)==0)

flag=1;

学生学号学生姓名年龄性别出生年月电话\n"

--------------------------------------------------------------------\n"

%6s%7s%6d%5s%9s%10s\n"

stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].date,stu[i].tel);

if(flag==0)

该学号不存在!

break;

case2:

return;

default:

请在1-2之间选择\n"

2.2.4删除记录模块

voiddel()

inti,j,flag=0;

chars1[LEN+1];

请输入要删除学生的学号:

flag=1;

for(j=i;

j<

n-1;

j++)

stu[j]=stu[j+1];

if(flag==1)

删除成功,显示结果请选择菜单6\n"

n--;

2.2.5显示所有学生记录模块

voiddisplay()

inti;

所有学生的信息为:

学生学号学生姓名年龄性别出生年月电话\n"

{

%6s%7s%5d%5s%8s%10s\n"

}

3、系统实现

3.1.1程序预处理

包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作

#include<

stdio.h>

/*I/O函数*/

stdlib.h>

/*其它说明*/

malloc.h>

string.h>

/*字符串函数*/

#defineBUFLEN100/*缓冲区最大字符数*/

#defineLEN15/*学号和姓名最大字符数,实际请更改*/

#defineN100/*最大学生人数,实际请更改*/

3.1.2主函数main()

main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。

voidseek();

/*函数声明*/

voidinsert();

voiddel();

voiddisplay();

voidsave();

voidgetnum();

voidreadfile();

voidmenu();

intmain()

while(k)

menu();

return0;

switch(num)

insert();

break;

del();

case3:

seek();

case4:

display();

case5:

getnum();

case6:

readfile();

case7:

k=0;

请在1-7之间选择\n"

3.1.3主菜单界面

用户进入成绩管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。

此代码被main()函数调用。

voidmenu()/*界面*/

intnum;

*********************系统功能菜单************************\n"

*******************闫晨曦0951100206********************\n"

//printf("

友情提醒:

查询前请先刷新系统!

\n"

******************************************\n"

**1.增加学生信息**\n"

**2.删除学生信息**\n"

**3.查询学生信息**\n"

**4.显示当前信息**\n"

**5.统计学生人数**\n"

**6.刷新当前信息**\n"

**7.退出系统**\n"

******************************************\n"

请选择菜单编号:

num);

3.1.4插入学生记录

在插入学生记录操作中,系统会先按学号查找到要插入的节点的位置,然后在该学号之后插入一个新节点。

voidinsert()/*插入函数*/

inti=n,j,flag;

请输入待增加的学生数:

m);

do

while(flag)

请输入第%d个学生的学号:

i+1);

stu[i].code);

for(j=0;

i;

if(strcmp(stu[i].code,stu[j].code)==0)

已有该学号,请检查后重新录入!

/*如有重复立即退出该层循环,提高判断速度*/

请输入第%d个学生的姓名:

stu[i].name);

请输入第%d个学生的年龄:

stu[i].age);

请输入第%d个学生的性别(格式:

男1女0):

stu[i].sex);

请输入第%d个学生的出生年月:

(格式:

年.月)\n"

stu[i].date);

请输入第%d个学生的电话:

stu[i].tel);

i=i;

while(i<

n+m);

n+=m;

\n\n"

sort();

3.1.5统计学生记录

在统计学生记录操作中,系统会统计学生人数总数,并打印输出统计结果。

voidgetnum()

intnum_b=0,num_g=0;

fp=fopen("

a+"

for(i=0;

num;

{

if(strcmp(stu[i].sex,"

1"

))num_g++;

elsenum_b++;

}

printf("

【统计结果】\n"

fprintf(fp,"

printf("

学生总人数为:

10人\n"

num);

其中男生5人,女生5人\n"

num_b,num_g);

其中男生%d人,女生%d人\n"

fclose(fp);

3.1.6排序学生记录

在排序学生记录操作中,系统会利用插入排序法实现单链表的按总分字段的降序排序,并打印出排序前和排序后的结果。

voidsort()/*按学号排序*/

inti,j,*p,*q,s;

chartemp[10];

for(j=n-1;

j>

j--)

if(strcmp(stu[j-1].code,stu[j].code)>

0)

strcpy(temp,stu[j-1].code);

strcpy(stu[j-1].code,stu[j].code);

strcpy(stu[j].code,temp);

strcpy(temp,stu[j-1].name);

strcpy(stu[j-1].name,stu[j].name);

strcpy(stu[j].name,temp);

strcpy(temp,stu[j-1].sex);

strcpy(stu[j-1].sex,stu[j].sex);

strcpy(stu[j].sex,temp);

strcpy(temp,stu[j-1].date);

strcpy(stu[j-1].date,stu[j].date);

strcpy(stu[j].date,temp);

strcpy(temp,stu[j-1].tel);

strcpy(stu[j-1].tel,stu[j].tel);

strcpy(stu[j].tel,temp);

p=&

stu[j-1].age;

q=&

stu[j].age;

s=*q;

*q=*p;

*p=s;

3.2测试与调试

3.2.1概述

一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句。

在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试。

测试是通过运行程序发现错误的过程,常见的错误有数据溢出、数组越界、进入死循环、语句顺序颠倒、多加“;

”或少加“{}”等等。

调试则是确定测试中找到的错误性质并改正错误的过程。

测试与调试通常交替进行,即测试——调试——再测试——再调试。

能检查出尚未发现的、各种不同类型错误的测试才是成功的测试。

测试程序需要测试用例,测试用例可用如下公式表示:

测试用例=测试数据+预期结果。

好的测试用例应该是用尽可能少的测试数据发现尽可能多的错误,即发现错误的概率要大。

要选择合适的测试数据,使系统在运行时尽量能执行到每条语句,以测试各指令是否正确。

还应分别测试输入合法数据与非法数据时,程序的运行情况,。

对于合法数据,还要考虑数据的一般性与特殊性,如求最大值的问题,应测试最大值在最前面、最后面、中间某一位置的情况。

测试程序时,用监视窗口可以随时查看变量或表达式的值,有时还可以将部分程序代码用注释符暂时括起来,缩短程序,以便压缩出错代码的范围。

3.2.2程序测试

l在主菜单中选择1

当用户输入1并按回车键后,即可进入数据输入界面。

如下图所示:

请根据提示输入所需记录的内容。

l在主菜单中选择2

当用户输入2并按回车键后,即可进入记录删除界面。

l在主菜单中选择3

当用户输入3并按回车键后,即可进入记录查找界面。

如图所示,可按学号或姓名进行查找。

l在主菜单中选择4

l在主菜单中选择5

l在主菜单中选择7

4、系统维护

经测试与调试确认软件无错时,开发就告一段落,这时可以交付软件供用户使用,但是在软件的使用过程中还会面临更加漫长的工作,即软件维护。

一般维护的工作有:

更改使用中发现的错误;

为适应实际环境而对程序进行修改;

为满足新的需求而对程序作必要的改进等等。

5、归纳总结

5.1开发经验

通过对本题目的开发,体会到要掌握以下几点内容。

5.2实训中遇到的问题及解决方法

在这次的实训中,主要遇到的问题是编译环境的不同对程序也不同。

本来我们的程序是不支持在VC++里面编译的,因此一直都处在编译失败,该函数未定义的错误中。

后来经过老师的指导,终于找到了根源,就是把“clrscr()”改为“system("

cls"

)”就可以了。

5.3设计中尚存的不足之处

关于这次的程序,也有挺多不足的地方。

首先,我觉得程序还不够完善,有些地方甚至有点乱;

其次,有些地方好像功能有点重复了;

最后,就是该程序界面不够美观大方。

5.4感想和心得体会

通过这次实训,我感触甚深,

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

当前位置:首页 > 高等教育 > 军事

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

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