C语言课程信息管理系统1.docx
《C语言课程信息管理系统1.docx》由会员分享,可在线阅读,更多相关《C语言课程信息管理系统1.docx(9页珍藏版)》请在冰豆网上搜索。
C语言课程信息管理系统1
一.设计目的。
1.通过对课程信息管理软件的设计编写原代码,深刻掌握C语言中各个语法、函数的应用,使对比较难的结构体、链表、文件的操作更加熟悉。
2.初步掌握中、大型程序设计中的各个步骤、流程,以及开发过程中遇到问题的处理方法,为以后的学习打下基础。
3.通过课程设计,将一学期所学习到的C程序设计知识和相关数学知识联系和结合,培养自己的动手能力,以及加强各学科之间的联系。
二.设计内容。
本系统以个人课程信息为主要背景,设计和实现了一个小型个人课程信息管理系统。
主要有以下功能:
1.系统以菜单方式运行工作,界面清晰直观,便于用户操作。
2.课程信息录入,包括课程名称,课程教师,上课时间和上课教室。
3.课程信息查看,以表格的形式查看课程信息。
4.课程信息查找,用户随时查看课程信息便于核对。
5.课程信息修改,核对后可以直接修改或删除。
三.概要设计
四.详细设计
1.数据结构设计
结构体:
用结构体接收课程信息。
文件:
用文件储存数据,这样当程序关闭时,数据不会丢失。
2.模块接口设计
Voidcreat()创建课程信息表;
Voidopen()打开课程信息表;
Voidinpt()输入课程信息;
Voidlook()查看所有课程信息;
Voidfind()查找课程信息;
Voiddelet()删除课程信息;
Voidsave()保存课程信息;
3.流程图
4.程序设计
/*HELLO.C--Hello,world*/
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"string.h"
FILE*fp;
intcount;
structlesson
{
charname[10];
charteacher[10];
chartime[10];
charroom[10];
}lesson[20];
char[20];
voidcreat()
{
printf("请输入文件名:
\n");
scanf("%s",);
if((fp=fopen(,"w+"))==NULL)
{printf("无法打开文件!
\n");
exit(0);
}
}
voidopen()
{intz;
printf("请输入文件名");
scanf("%s",);
if((fp=fopen(,"a+"))==NULL)
{printf("无法打开文件!
\n");
exit(0);
}
for(z=0;z{fread(&lesson[z],sizeof(structlesson),1,fp);
}
fclose(fp);
}
voidinpt()
{inti,j,k;
printf("要添加多少个课程信息:
");
scanf("%d",&j);
printf("\n");
for(i=0,k=count;i{printf("输入课程名称:
");
scanf("%s",lesson[k].name);
printf("输入教师姓名:
");
scanf("%s",lesson[k].teacher);
printf("输入上课时间:
");
scanf("%s",lesson[k].time);
printf("输入教室位置:
");
scanf("%s",lesson[k].room);
}
count+=j;
printf("添加成功!
");
}
voidsave()
{
FILE*fp;
inti;
if((fp=fopen(,"wb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i<=count;i++)
if(fwrite(&lesson[i],sizeof(structlesson),1,fp)!
=1)
printf("error\n");
fclose(fp);
printf("保存成功!
\n");
}
voidlook()
{inti;
printf("课程\t\t教师\t\t时间\t\t教室\n");
for(i=0;i{printf("%s\t\t%s\t\t%s\t\t%s\t\n",lesson[i].name,lesson[i].teacher,lesson[i].time,lesson[i].room);
}
}
voidfind()
{charclas[20];
inti,key=0;
printf("请输入课程名称:
");
a:
scanf("%s",clas);
for(i=0;i{if(strcmp(clas,lesson[i].name)==0)
{printf("%s\t\t%s\t\t%s\t\t%s\t\n",lesson[i].name,lesson[i].teacher,lesson[i].time,lesson[i].room);
key=1;
break;
}
}
if(key!
=1)
{printf("找不到此课程!
\n请重新输入:
");
gotoa;}
}
voiddelet()
{charclas[20];
inti,j,key;
printf("请输入将要删除的课程名字:
");
b:
scanf("%s",&clas);
if(clas==0)return;
for(i=0;i{if(strcmp(clas,lesson[i].name)==0)
{count--;
for(j=i;jlesson[i]=lesson[j+1];
key=1;
}
}
if(key!
=1)
{printf("无此课程,请重新输入,或按0结束!
\n");
gotob;
}
}
voidmain()
{intchoice;
system("color0E");
do
{printf("-----------------------------主菜单--------------------------\n");
printf("\t\t\t0:
创建课程信息表\t\n");
printf("\t\t\t1:
打开课程信息表\t\n");
printf("\t\t\t2:
添加课程信息\t\n");
printf("\t\t\t3:
查看课程信息\t\n");
printf("\t\t\t4:
查找课程信息\t\n");
printf("\t\t\t5:
删除课程信息\t\n");
printf("\t\t\t6:
保存课程信息\t\n");
printf("\t\t\t7:
退出系统\t\n");
printf("\t\t请选择操作:
\n");
printf("-------------------------------------------------------------\n");
scanf("%d",&choice);
switch(choice)
{
case0:
creat();break;
case1:
open();break;
case2:
inpt();break;
case3:
look();break;
case4:
find();break;
case5:
delet();break;
case6:
save();break;
case7:
printf("感谢使用此系统,祝你好运!
\n");break;
}
}while(choice!
=7);
getch();
}
设计总结
通过这2个星期以来的程序设计,使我更深刻的掌握了C语言的各种语法知识,在设计过程中碰到许多问题,比如添加课程信息会覆盖,无法将数据写入文件里等,在老师的细心指导下,这些问题都迎刃而解。
在完善此程序的同时,让我了解到自己在C语言程序设计上的不足之处,更让我了解到C语言程序设计过程中的乐趣。
今后,要好好学习加强掌握C语言,让自己能写出更复杂更完善的程序。