中南大学C实验课程设计报告学生信息管理系统Word文档格式.docx
《中南大学C实验课程设计报告学生信息管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《中南大学C实验课程设计报告学生信息管理系统Word文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
![中南大学C实验课程设计报告学生信息管理系统Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/7/fdc7076d-3ac6-4a00-a313-7ae72f3e92e2/fdc7076d-3ac6-4a00-a313-7ae72f3e92e21.gif)
至少要输入10个学生的数据;
可以随时插入学生信息记录;
4.每个学生数据能够进行修改并进行保存;
5.可以根据学号或者姓名删除某学生数据;
6.查询模块要求能按学号,按姓名,按班级等条件进行查询;
7.界面要求美观,提示信息准确,所有功能可以反复使用。
四、设计思想、流程图
1.学生成绩管理程序从总体设计方面来看,基本的功能包括主控模块,数据输入模块,数据修改模块,数据查询模块等。
2、详细设计
对于总体设计说明的软件模块,进一步细化,要说明各个模块的逻辑实现方法。
下面逐个说明。
主控模块:
主要完成初始化工作,包括屏幕的初始化,显示初始操作界面。
初始界面中主要包括功能的菜单选择项。
程序运行流程图如下:
输入处理:
利用链表技术输入多名学生的数据,直到输入学生的学号以“@”开头,则结束数据的输入。
删除处理:
利用链表技术删除某学号的学生成绩信息,如果找到该学号则进行删除,否则输出“未找到”的信息。
程序运行流程图略。
查找处理:
利用链表技术根据学生学号或姓名等方式查找某学号的学生成绩信息,其程序流程图略。
排序处理:
利用链表技术根据学生学号对学生数据进行排序,其程序流程图略。
五、心得体会
通过此次语言C程序设计实践,我受益匪浅!
课程设计是培养学生综合运用知识、发现、提出、分析和解决问题、锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整三周的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
六、参考文献
《C语言成绩设计基础》
七、附录源程序
#include<
stdio.h>
structstudent
{charnum[10];
charname[10];
charsex[3];
charmajor[10];
charbanji[10];
chartele[10];
charaddress[20];
};
voidmain()
{
structstudentstu[2];
inti=0,j;
do
{
printf("
Pleaseinputthenumber:
"
);
scanf("
%s"
stu[i].num);
Pleaseinputthename:
stu[i].name);
Pleaseinputsex,MorF:
stu[i].sex);
Pleaseinputthemajor:
stu[i].major);
Pleaseinputtheclassname:
stu[i].banji);
Pleaseinputthetelephonenumber:
stu[i].tele);
Pleaseinputtheaddress:
stu[i].address);
i++;
}while(i<
1);
Num\tName\tsex\tMajor\tClass\tTele\tAddress\t\n"
for(j=0;
j<
=i;
j++)
%-5s%-10s%5s%5s%6s%10s%11s\n"
stu[j].num,stu[j].name,stu[j].sex,stu[j].major,stu[j].banji,stu[j].tele,stu[j].address);
}
getch();
}
指针方法:
#include"
stdlib.h"
stdio.h"
structstud_type
{charnum[10];
charname[20];
charsex;
charclass[10];
charaddress[10];
voidmain()
{structstud_typestudent[2],*p;
inti;
charnumstr[20],answer;
for(i=0,p=student;
i<
2;
p++,i++)
{printf("
Enteralldaraofstudent[%d]:
\n"
i);
%s%s%c%s%s%s%s%s"
p->
num,p->
name,p->
sex,p->
class,p->
major,p->
tele,p->
address);
p<
student+2;
%3d%10s%20s%5c%10s%10s%10s%10s"
i,p->
getch();
chars1[80],s2[80];
voidstrlen(chars1[]);
voidstrcpy(chars1[],chars2[]);
voidstrcat(chars1[],chars2[]);
s1);
s2);
strlen(s1);
strcat(s1,s2);
strcpy(s1,s2);
voidstrlen(chars1[])
{inti=0;
while(s1[i]!
='
\0'
)
{i++;
Thelengthofs1is%d.\n"
voidstrcpy(chars1[],chars2[])
{char*p,*q;
p=s1;
q=s2;
while(*q!
{*p=*q;
p++;
q++;
*p='
;
%s\n"
voidstrcat(chars1[],chars2[])
char*p,*q;
p+=i;
_
1.#include<
#defineN5
{inti,max,min;
inta[N];
for(i=0;
N;
i++)
scanf("
%d"
&
a[i]);
max=min=a[0];
{if(max<
a[i])max=a[i];
elseif(min>
a[i])min=a[i];
printf("
max:
%d,min:
max,min);
2.
{inta[N],temp,i,j;
inputnumbers:
for(i=1;
for(j=0;
=N-i;
if(a[j]>
a[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
a[i]);
}_
3.#include"
structstud
{intno;
intscore[3];
floataverage;
indata(structstudst[])
{inti;
10;
{printf("
number"
st[i].no);
name"
st[i].name);
score"
%d,%d,%d"
st[i].score[0],&
st[i].score[2],&
st[i].score[2]);
outdata(structstudst[])
numbernamescoreaverage"
%2d%5s%12d,%d,%d%10.2f\n"
st[i].no,st[i].name,st[i].score[0],st[i].score[1],st[i].score[2],st[i].average);
main()
{structstudst[10],temp;
inti,j;
floats;
Pleaseenter10students'
data"
indata(st);
{s=0;
3;
j++)s=s+st[i].score[j];
st[i].average=s/3;
9;
for(j=i+1;
if(st[i].average>
st[j].average)
{temp=st[i];
st[i]=st[j];
st[j]=temp;
Thesorteddatais:
outdata(st);
4./***********xuesheng.c***********/
/******头文件(.h)***********/
/*I/O函数*/
/*其它说明*/
string.h"
/*字符串函数*/
conio.h"
/*屏幕操作函数*/
mem.h"
/*内存操作函数*/
ctype.h"
/*字符操作函数*/
alloc.h"
/*动态地址分配函数*/
#defineN3/*定义常数*/
typedefstructz1/*定义数据结构*/
charno[11];
charname[15];
charsex[5];
charmajor[15];
charclass[15];
chartele[15];
charaddress[15];
intorder;
structz1*next;
}STUDENT;
/*以下是函数原型*/
STUDENT*init();
/*初始化函数*/
STUDENT*create();
/*创建链表*/
STUDENT*dele(STUDENT*h);
/*删除记录*/
voidprint(STUDENT*h);
/*显示所有记录*/
voidsearch(STUDENT*h);
/*查找*/
STUDENT*sort(STUDENT*h);
/*排序*/
intmenu_select();
/*菜单函数*/
STUDENT*insert(STUDENT*h);
/*插入记录*/
voidsave(STUDENT*h);
/*保存*/
STUDENT*load();
/*读入记录*/
voidinputs(char*prompt,char*s,intcount);
/******主函数开始*******/
STUDENT*head;
/*链表定义头指针*/
head=init();
/*初始化链表*/
clrscr();
/*清屏*/
for(;
)/*无限循环*/
switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/
{/*值不同,执行的函数不同,break不能省略*/
case0:
head=init();
break;
/*执行初始化*/
case1:
head=create();
case2:
head=dele(head);
case3:
print(head);
/*显示全部记录*/
case4:
search(head);
/*查找记录*/
case5:
head=insert(head);
break;
case6:
head=sort(head);
case7:
save(head);
/*保存文件*/
case8:
head=load();
/*读文件*/
case9:
exit(0);
/*如菜单返回值为14程序结束*/
/*菜单函数,返回值为整数*/
intmenu_select()
char*menu[]={"
***************MENU***************"
/*定义菜单字符串数组*/
"
0.initlist"
/*初始化*/
1.Input"
/*输入记录*/
2.Delete"
/*删除记录*/
3.List"
/*显示记录*/
4.Seek(name)"
/*查找*/
5.insertrecordtolist"
/*插入记录到表中*/
6.Sort"
/*排序*/
7.Save"
/*保存*/
8.Load"
/*从文件中读入记录*/
9.Quit"
/*退出*/
chars[3];
/*以字符形式保存选择号*/
intc,i;
/*定义整形变量*/
gotoxy(1,25);
/*移动光标*/
pressanykeyentermenu......\n"
/*压任一键进入主菜单*/
/*输入任一键*/
/*清屏幕*/
gotoxy(1,1);
textcolor(YELLOW);
/*设置文本显示颜色为黄色*/
textbackground(BLUE);
/*设置背景颜色为蓝色*/
gotoxy(10,2);
putch(0xc9);
/*输出左上角边框┏*/
for(i=1;
44;
putch(0xcd);
/*输出上边框水平线*/
putch(0xbb);
/*输出右上角边框┓*/
for(i=3;
20;
gotoxy(10,i);
putch(0xba);
/*输出左垂直线*/
gotoxy(54,i);
}/*输出右垂直线*/
gotoxy(10,20);
putch(0xc8);
/*输出左上角边框┗*/
/*输出下边框水平线*/
putch(0xbc);
/*输出右下角边框┛*/
window(11,3,53,19);
/*制作显示菜单的窗口,大小根据菜单条数设计*/
for(i=0;
16;
i++)/*输出主菜单数组*/
gotoxy(10,i+1);
cprintf("
menu[i]);
textbackground(BLACK);
/*设置背景颜色为黑色*/
window(1,1,80,25);
/*恢复原窗口大小*/
gotoxy(10,21);
do{
\nEnteryouchoice(0~9):
/*在菜单窗口外显示提示信息*/
s);
/*输入选择项*/
c=atoi(s);
/*将输入的字符串转化为整形数*/
}while(c<
0||c>
9);
/*选择项不在0~14之间重输*/
returnc;
/*返回选择项,主程序根据该数调用相应的函数*/
STUDENT*init()
returnNULL;
/*创建链表*/
STUDENT*create()
ints;
STUDENT*h=NULL,*info;
/*STUDENT指向结构体的指针*/
info=(STUDENT*)malloc(sizeof(STUDENT));
/*申请空间*/
if(!
info)/*如果指针info为空*/
\noutofmemory"
/*输出内存溢出*/
/*返回空指针*/
inputs("
enterno:
(Ifyouwanttoend,press@)"
info->
no,11);
/*输入学号并校验*/
if(info->
no[0]=='
@'
)break;
/*如果学号首字符为@则结束输入*/
entername:
name,15);
/*输入姓名,并进行校验*/
entersex:
sex,5);
/*输入性别,并进行校验*/
entermajor:
major,15);
/*输入专业名,并进行校验*/
enterclass:
class,15);
/*输入班级名,并进行校验*/
entertele:
tele,15);
/*输入电话,并进行校验*/
enteraddress:
address,15);
/*输入地址,并进行校验*/
info->
next=h;
/*将头结点做为新输入结点的后继结点*/
h=info;
/*新输入结点为新的头结点*/
return(h);
/*返回头指针*/
/*输入字符串,并进行长度验证*/
voidinputs(char*prompt,char*s,intcount)
{charp[255];
printf(prompt);
/*显示提示信息*/
p);
/*输入字符串*/
if(strlen(p)>
count)printf("
\ntoolong!
\n"
/*进行长度校验,超过count值重输入*/
}while(strlen(p)>
count);
strcpy(s,p);
/*将输入的字符串拷贝到字符串s中*/
/*输出链表中结点信息*/
voidprint(STUDENT*h)
inti=0;
/*统计记录条数*/
STUDENT*p;
/*移动指针*/
p=h;
/*初值为头指针*/
\n\n\n****************************STUDENT********************************\n"
|rec|nO|name|sex|major|class|tele|address|\n