C语言课程设计报告
一、实践的目的和要求
加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力
二、实践内容
在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);函数的使用,结构体和文件的操作等。
三、设计说明
学生成绩管理系统
建立一个学生成绩管理系统。
程序运行时显示一个简单的菜单。
例如:
1.信息输入(INPUT)
2.信息的删除与修改
3.显示当前学生成绩的记录信息,若无记录,则给出提示信息
4.学生或者各个班级各门课程总分、平均分、最低分、最高分等的统计
5.可以按照班级、姓名、性别、分数(可以有区间)等方式进行查询
6.具有良好的交互功能
7.能使用图形函数进行简单的界面设计
8.具有良好的纠错功能
9.退出等等
程序:
#include /*文件操作(读文件)*/
#include
#include /*其它说明*/
#include /*字符串函数*/
#include /*内存操作函数*/
#include /*屏幕操作函数*/
#include /*字符操作函数*/
#include /*动态地址分配函数*/
#include
#define LEN sizeof(STUDENT)
#define N 3
typedef struct stu /*定义结构体数组用于缓存数据*/
{char grade[6];
char name[5];
char sex[4] ;
int score[N];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;
/*以下是函数原型*/
STUDENT *init(); /*初始化函数*/
STUDENT *create(); /*创建链表*/
STUDENT *delete(STUDENT *head); /*删除记录*/
STUDENT *sort(STUDENT *head); /*按平均分排序*/
void print(STUDENT *head); /* 显示所有记录*/
void name(STUDENT *head); /*姓名查找*/
void grade(STUDENT *head); /*班级查找*/
void sex(STUDENT *head); /*性别查找*/
void average(STUDENT *head); /*按平均分查找在那个分数里*/
STUDENT *statistciam(STUDENT *head);/*统计记录*/
void save(STUDENT *head); /*保存文件*/
STUDENT *load(); /*读文件*/
STUDENT *insert(STUDENT *head,STUDENT *new); /*插入记录*/
int menu_select(); /*菜单函数*/
int menu_search(); /*查询菜单*/
void code(); /*密码验证*/
/*主函数界面*/
main()
{
int i,j,n,m;
STUDENT *head,new; /*链表定义头指针*/
randomize();/*开启扬声器,发出声音*/
while(!bioskey(1))
{
j=rand()*5000;
sound(j);
delay(10);
}
nosound();/*关闭声音文件*/
code();/*密码输入*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{ /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break; /*执行初始化*/
case 1:head=create();break; /*创建链表*/
case 2:head=delete(head);break; /*删除记录*/
case 3:print(head);break; /*显示全部记录*/
case 4:
loop:
printf("sreach:\n 1.grade\n 2.name\n 3.sex\n 4.average\n 5.quit\n Enter you choice(0~5):");
scanf("%d",&n);
switch(n)
{
case 1:grade(head);
goto loop;
case 2:name(head);
goto loop;
case 3:sex(head);
goto loop;
case 4:average(head);
goto loop;
case 5: break;
}
break;
/*查找记录*/
case 5:sort(head);break; /*排序*/
case 6:save(head);break; /*保存文件*/
case 7:head=load(); break; /*读文件*/
case 8:head=insert(head,&new); break; /*插入记录*/
case 9:head=statistciam(head); break; /*统计记录*/
case 10:exit(0); /*如菜单返回值为10程序结束*/
}
}
}
/*密码输入*/
void code()
{
int i;
char number[20];
const w=10;
printf("\n\t\t\t--------------------------------------------------");
printf("\n\t\t\tBecause this system is busywork,Code is: 123456");
printf("\n\t\t\t----------------------------------------------- ");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t*********************************");
printf("\n\t Please Enter The Code : ");
printf("\n\t*********************************\n");
scanf("%s",number);
printf("\n\t\t\tExamining!");
for(i=0;i<=w;i++)
{
printf("*");
}
if(strcmp(number,"123456")==0)
{
printf("\n\t\t\tCode is right!press any key enter menu......");
clrscr();
}
else
{
printf("\n\t\t\tCode is wrong!Please enter again : ");
clrscr();
code();
}
}
/*初始化函数*/
STUDENT *init()
{
return NULL; /*返回空指针*/
}
/*菜单选择函数*/
menu_select()
{
char *menu[]={"********************************************",
" Welcome to ",
" The student score manage system!",
"*****************MENU***********************", /*定义菜单字符串数组*/
" 0. Init list", /*初始化*/
" 1. Input list", /*输入记录*/
" 2. Delete a record from list", /*从表中删除记录*/
" 3. Print list ", /*显示当前学生成绩的记录信息*/
" 4. Search record ", /*查询学生记录*/
" 5. Sort to make new a file ", /*排序*/
" 6. Save the file", /*将单链表中记录保存到文件中*/
" 7. Load the file", /*从文件中读入记录*/
" 8. insert record to list ", /*插入记录到表中*/
" 9. statistciam record to list ", /*统计记录到表中*/
" 10. Quit", /*退出*/
"********************************************",
" Producer:ZengWenyan ZhaoJingxiu ",
" Faculty Adviser:XiaoFengrui ",}; /*退出*/
char s[3]; /*以字符形式保存选择号*/
int c,i; /*定义整形变量*/
textbackground(MAGENTA); /*设置背景颜色为粉色*/
gotoxy(1,50); /*移动光标*/
printf("press any key enter menu......\n"); /*压任一键进入主菜单*/
getch(); /*输入任一键*/
clrscr(); /*