题名
学生:***** 电子** 学号****
实验地点:现代教育技术中心 ***房间
实验日期和时间:20##年*月*日-*月*日
实验类别: 课程设计
实验类型: 设计性
一、实验环境
操作系统:windows XP
编程工具:Microsoft Visual C++ 6.0
二、实验目的和要求
实验目的:
(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作算法。
(2)使学生进一步掌握程序设计、编写、调试能力。
(3)使学生了解软件开发的基本步骤和内容。
实验要求:
实验设备信息包括:设备编号、设备种类(如:微机 打印机 扫描仪 等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。试设计一实验设备信息管理系统,使之能提供以下功能:
(1)能够完成对设备的录入和修改
(2)对设备进行分类统计
(3)设备的查询
三、实验内容和结果
1)总体设计和模块划分
2) 详细设计
数据结构定义:
*****
****
A. 主函数
void main()
{
Node *equip;
FILE *fp;
int flag;
Node *p,*q;
printf("\t\t\t\t设备管理系统\n");
equip=(Node*)malloc(sizeof(Node));
printf("\n2修改记录\n");
printf("\n3显示记录\n");
printf("\n4统计分类记录\n");
printf("\n0*-EXIT-*\n");
printf("请输入你要操作的序号:");
scanf("%d",&flag);
switch(flag)
{
case 0: printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");break;
case 1: Add(equip); break; //增加记录
case 2: Modify(equip); break;//修改记录
case 3: Disp(equip); break;//显示记录信息
case 4: Tongji(equip); break;//统计记录
default: printf("\n>>>>>>>>>>提示:输入错误!\n"); break;
}
}
}
B. 各功能模块设计
(1)输入模块
Struct shebei
{ char ID[10]; char name[15]; char kind[15]; char over[15]; char yesno[10]; char time[10];
char price[10];
};
…….
(2)追加模块
void Add(Node *equip) //添加记录
{
Node *p,*r,*s;
char id[10]; //先用于输入ID,也用于判断是否跳出循环
r=equip;
s=equip->next; //使s为第一个有用的结点
while(r->next!=NULL) //这个循环的作用是使r为最后一个有用的结点
printf("\n请输入设备购买时间:");
scanf("%s",&p->data.time);
printf("\n请输入设备价格:");
scanf("%s",&p->data.price);
printf(">>>>>>>>>>提示:已经完成一条记录的添加。\n");
p->next=NULL;
r->next=p; //这一步是必需的,将p与先前的链表连起来构成一条新链表
r=p; //也是必需的.将r 又重设为新链的最后一个有用结点
scanf("%d",&x);
if(x==0)
{break;}
printf("请输入新设备号(原来是 %s ):",p->data.ID);
scanf("%s",p->data.ID);
printf("请输入新设备名称(原来是 %s ):",p->data.name);
scanf("%s",p->data.name);
printf("请输入新设备设备种类名称(原来是 %s ):",p->data.kind);
scanf("%s",p->data.kind);
printf("请输入新设备报废日期名称(原来是 %s ):",p->data.over);
scanf("%s",p->data.over);
printf("请输入新设备是否报废(原来是 %s ):",p->data.yesno);
scanf("%s",p->data.yesno);
printf("请输入新设备购买时间(原来是 %s ):",p->data.kind);
scanf("%s",p->data.time);
printf("请输入新设备价格(原来是 %s ):",p->data.price);
scanf("%s",p->data.price);
printf("\n>>>>>>>>>>提示:该项记录资料已经成功修改!\n");
}
}
else printf("\n>>>>>>>>>>提示:你要修改的信息不存在!\n");
}
……
3) 程序的运行及测试结果
3.1 遍历功能测试
界面图
3.2 查询功能测试
界面图
3.3增加功能测试
界面图
3.4删除功能测试
界面图
3.5修改功能测试
3.6排序功能测试
四、实验中的问题及心得
遇到的问题:
1. ……
2. ……
心得:
……
评分标准
(请仔细对照下面的考核标准表所列出的要求,在交报告之前先自己打自评分)
总成绩:
模仿现实生活中的挂历
目录
一、问题描述..................................... 1
二、数据结构..................................... 1
三、算法设计思想和流程图.......................... 2
四、实验程序..................................... 3
五、运行情况..................................... 6
六、参考文献..................................... 8
要求:模仿现实生活中的挂历。
当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。
本实验共设计了JudgeLeapYear、MonthDay、printHeader、FirstWeek、printMonth、rili、main七个函数来完成题目要求。
它们的功能如下:
main函数:
本实验利用了未学过的#include 头文件,实现系统日期的调用和同步。还使用了系统清屏语句。
JudgeLeapYear函数:
判断是否为闰年,通过选择判断语句实现。
MonthDay函数:
返回本月天数,通过switch语句返回每个月的天数。
printHeader函数:
输出表头星期一到星期日。
FirstWeek函数:
总结每个月的规律,通过数学公式计算某月一号是星期几。
printMonth函数:
输出该日历的月份,依然使用了switch语句。
rili函数:
输出该月日历。通过指针实现输出该系统月份的第一个星期和除第一个星期外的其它星期。
本实验首先通过time.h头文件的里的函数和定义的变量实现系统日期的输出和调用。
然后利用系统月份输出整个月的日历。
通过指针和永续循环实现当系统日期发生改变时输出的月份自动改变。而且通过系统清屏语句实现和现实日历一样的,每个月份日历的单独输出。
流程图:
#include
#include
#include
int JudgeLeapYear(int); //判断是否为闰年
int MonthDay(int m,int y); //返回本月的天数
void printHeader(void); //输出表头
int FirstWeek(int m,int y); //返回本月一号是星期几
void printMonth(int m); //输出月份表头
void rili(time_t timer,struct tm *tblock);
void main()
{
int year,month;
time_t timer;
struct tm *tblock;
/* gets time of day */
timer = time(NULL);
/* converts date/time to a structure */
tblock = localtime(&timer);
rili(timer,tblock);
year=tblock->tm_year+1900;month=tblock->tm_mon+1;
do
{ /* gets time of day */
timer = time(NULL);
/* converts date/time to a structure */
tblock = localtime(&timer);
if((tblock->tm_year+1900)!=year||(tblock->tm_mon+1)!=month)
{
system("cls");/*清屏*/
rili(timer,tblock);
year=tblock->tm_year+1900;month=tblock->tm_mon+1;
}
}while(1);
}
//输出日历
void rili(time_t timer,struct tm *tblock)
{
printf("%4d年%02d月%02d日 %02d:%02d:%02d\n",
tblock->tm_year+1900,tblock->tm_mon+1,tblock->tm_mday,
tblock->tm_hour,tblock->tm_min,tblock->tm_sec);
int i,test,week;
int year,month;
year=tblock->tm_year+1900;month=tblock->tm_mon+1;
test=1;
printMonth(month);
printHeader();
week=FirstWeek(month,year);
if(week==6)
{
for (i=0; i<=week; i++)
{
putchar('\t');
test++;
}
putchar('\n');
}
if (week <=5)
{
//输出每月的第一星期
for (i=0; i<=week; i++)
{
putchar('\t');
test++;
}
}
for (i = 1; i <= MonthDay(month,year); i++,test++)
{
//输出每个月非第一个星期
printf("%d\t",i);
if (test%7==0)
{
putchar('\n');
}
}
putchar('\n');
}
//判断是否润年
int JudgeLeapYear(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}
//返回这月的一号是星期几
int FirstWeek(int month,int year)
{
if (month<3)
{
month+=12;
year--;
}
return (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}
//一月有多少天
int MonthDay(int month,int year)
{
int d;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=JudgeLeapYear(year)?29:28;break;
}
return d;
}
//打印日历头
void printHeader(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}
//打印月份
void printMonth(int m)
{
switch (m)
{
default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;
case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}
点击执行后:
修改系统日期到下月个月后:
任意选择和修改系统日期,实现万年历的作用:
【1】 C程序设计(第三版),谭浩强
【2】 百度
http://www.baidu.com/s?word=%D3%C3c%D3%EF%D1%D4%B1%E0%D0%B4%CD%F2%C4%EA%C0%FA&tn=sitehao123
东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:…
C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体…
河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名…
C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的…
C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录…
C语言程序设计实验报告专业班级日期11月26日成绩实验组别第327次实验指导教师李开学生姓名学号同组人姓名实验名称数组实验一实验目…
C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的…
课程设计报告学院系专业名称课程设计科目所在班级学生学号学生姓名指导教师完成时间吉林大学珠海学院计算机科学与技术系软件工程C语言程序…
福建师范大学人民武装学院C语言程序设计报告书设计名称学生成绩管理系统专业软件工程指导老师陈琳姓名黄强学号119xx20xx0262…
C语言程序设计实验报告专业班级日期11月26日成绩实验组别第327次实验指导教师李开学生姓名学号同组人姓名实验名称实验8指针实验一…