第一篇:C语言程序设计课程设计指导书
课程设计指导书
课程名称: C语言程序设计
班次: 自动化2016-01,02,03班
设计任务:
整个课程设计一共提供了10个题目,编号为1~10。按学号尾数进行选题设计。
课程设计目的
1、进一步掌握利用C语言进行程序设计的能力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图表示算法;
5、学习撰写课程设计报告;
第一部分:课题描述(一共10个课题)
课题1:图书管理系统
在磁盘上创建3个txt文件,命名book.txt,borrow.txt和reader.txt,分别存储图书、借阅和读者的信息,每本图书的基本信息有编号、书名、作者、出版日期、金额、类别、在馆数量等。借阅基本信息有:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。读者信息包括借书证号、姓名、班级、学号、类别等。创建图书管理系统,该系统运行时在控制台中显示菜单界面进行键盘输入操作,模拟借阅图书的管理过程。
系统功能包括以下方面: A、图书信息管理
图书按类别进行管理,常见类别有书籍、期刊、报刊等,在该模块中又包含添加、删除、修改、查询等操作,操作结果打印在控制台中。
字段包含:书名,编号,类别,存放地点,入库时间
B、借阅信息管理
图书借阅模拟操作,包括以下功能:借出,归还和续借等操作,对超期图书进行罚款金额显示。另外可以设置罚金数额和最大借阅数量和时间等参数。
字段包含:书名,编号,借阅者,借出时间,归还时间,借阅状态,超期时间,最大借阅数
C、读者信息管理
读者分为教师和学生两大类等级:教师和学生的最大图书借阅数量和时间有所不同,并可对添加、挂失和查询读者信息。
字段包含:读者姓名,读者类别,可借阅时间,可借阅数量,系统操作过程中能够正确读取和更新文件,并进行正常的图书、借阅和读者管理操作。
课题2:个人通讯录管理系统
在磁盘上建立1个communication.txt文件,作为读取和存储的通讯录,该系统运行时在控制台中显示菜单界面进行键盘输入操作,模拟通讯录的操作过程。
系统功能包括以下方面:
A、通讯录的每位联系人信息有姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。
B、输入、查找、删除、修改联系人信息功能。
C、显示功能:能够显示所有联系人信息(大于10条的分屏显示),或按分类进行显示。D、分类操作:可以按分类信息进行同一类的联系人操作,比如显示、删除和查找操作。E、(选作)可以加载联系人头像并进行显示,可用字符拼图或读取已有的黑白图片文件。系统操作过程中能够正确读取和更新文件,并进行正常的通讯录联系人操作。
课题3:职工工资管理系统
在计算机中建立相应的数据结构,利用程序实现工资的输入、查询、增、删、改、统计、输出等操作。
1、设计一个能够记录公司员工工资的数据结构(比如包括:员工号,姓名,基本工资,补贴金额,奖励金额,扣除金额、实发工资等)、文件(文件作为工资数据的保存介质)。注:,其中实发工资=基本工资+补贴金额+奖励金额-扣除金额
2、应用文件保存工资管理数据。
3、新增:能将所有输入的员工工资数据保存到文件中,并可选择继续输入或退出。
4、查找:输入员工的员工号,并在文件中查找
若找到,则显示该员工的工资详情 否则提示未找到。 无论查找成功否,应还可选择继续查找或退出。
5、删除:输入员工的员工号,并在文件中查找
若找到,提示是否确定删除
若选择是,则删除文件中该员工信息 若选择否,则取消, 否则提示无此员工信息
无论查找成功否,应还可选择继续查找或退出。
6、修改:输入员工的员工号,并在文件中查找
若找到,显示该员工的所有信息,并可进行输入。完成后将现输入的内容覆盖原内容保存到文件中。
否则提示无此员工信息
无论查找成功否,应还可选择继续查找或退出。
7、统计:分类汇总并输出所有员工的基本工资、补贴金额、奖励金额、扣除金额、实发工资的总金额和平均金额。如:
基本工资、补贴金额、奖励金额、扣除金额、实发工资
总和 12000 1300 1400 1500 13200 平均 1200 130 140 150 1320 人数: 10
8、退出:退出程序
课题4:自动售货机系统
某公司请你为其生产的自动售货机编写软件。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。如果商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。
自然,你的售货机用户希望尽可能地给用户找零,以免流失顾客。为了调查用户的喜好,希望得到三种商品的每日消费数据,由此来调整货柜中三种货物的存贮量。你的程序将实现以下功能:
库存查询:检索当前三种商品的储存量 商品上架:为三种商品增加或者减少储量
销售查询:分别统计今天每种商品的销售量和销售额 会计查询:打印当天的往来帐目以及剩余零钞数目
结算功能:取出今天所有的10元纸币,并且分别设置零钞的数目
销售界面:顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币 【题目要求】
(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择希望进行的操作项目;
(2)你的售货机用户不希望每一位顾客都有权限执行以上功能,因此一旦进入销售界面,就不应当退回到系统界面,但是应允许顾客反复购买,前一个顾客购买完毕后应停留在销售界面里允许下一个顾客操作。直到某位特殊的顾客(超级顾客)输入特殊的商品代号(密码)方可回到主控界面。
(3)计算机安排的找零算法应该合理,不要出现某一种零钱找光的情况。同时顾客也不喜欢 明明有5元零钞,却被找给5个一元的零钞。尽量满足这两个要求。
(3)、要求以上功能分别用函数实现。并要求用C语言的文件操作语句将以上所有结果保存在文件goods.txt。
【输入/输出要求】
(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息;
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。
课题5:销售管理系统
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(在磁盘上创建一个txt文件记录上个月的销售信息),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4)输出统计报表
销售统计报表
产品代号
销售之和 销售员号 1 2 3 4 5 每种产品之和 总和
5)可以按产品代号查询,也可以按销售员号查询。
课题6: 车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3„n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如
班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数 1 8:00 郫县 广汉 2 45 30 2 6:30 郫县 成都 0.5 40 40 3 7:00 郫县 成都 0.5 40 20 4 10:00 郫县 成都 0.5 40 2 „
(一)功能要求:用c语言设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
课题
7、单项选择题标准化考试系统
在磁盘上创建一个test.txt文件,使用记事本打开后先写入40道单选题和相应的选项和正确答案。再编写一个单项选择题标准化考试系统,该系统功能要求: 字段:题干,备选答案,标准答案
A、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)。B、试题录入、修改和删除。
C、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)。D、考生答题:用户抽取N道试题进行答题,键盘输入每道题的答案。
E、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
系统操作过程中能够正确读取和更新试题文件,并进行正常的试题管理、抽取、答题和判卷操作,该过程在控制台中显示,人机交互方便。
课题8:医院门诊候诊的队列管理程序
要求采用先来先就诊的排队方式(就诊顺序与挂号单编号无关),假设挂号时编码是连续的,但由于同一个门诊科目有3个诊室,其中35(含35)岁以上的在第一诊室,35岁以下男患者进第二诊室,其它的进第三诊室,程序启动后显示下列菜单:
字段:挂号单号,患者姓名,年龄,性别,分诊室号,【实现提示】 1--挂号 2--叫号 3--分诊室
4--显示各诊室队列信息
5--统计当天就诊的患者情况(要求按性别进行统计和按任意年龄区段进行统计)6--结束程序
选1时,提示用户在一行内输入姓名及挂号单编号;
选2时,显示排在队列中第一位患者姓名、挂号单编号,并将其从挂号序列中删除 选3时,进行诊室分配
选4时,按队列顺序显示个诊室排队人的姓名、挂号单编号及所在诊室 选5时,进行两种统计方法的选择,并进行必要的统计计算 选6时,退出程序的运行
要求1~5中每一个步骤完成后都能重新显示此选择菜单
课题9:成绩管理系统
现有学生成绩信息,内容如下
姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47 „.......„
请用C语言编写一系统,实现学生信息管理,软件的功能要求如下:(1)信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:
要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:
要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果
课题10:停车场管理系统设计
1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层.(停车场可用一个二维数组实现, 每个数组元素存放一个车牌号)每辆车的信息包括车牌号, 层号, 车位号, 停车时间共4项.其中停车时间按分钟计算
2.假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5.即先将这四辆车的信息存入文件”car.dat”中(数组的对应元素也要进行赋值)3.停车操作: 当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.dat”中, 并将在此之前的所有车的停车时间加5.4.收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元.(停车费用可设置一个变量进行保存), 同时从文件”car.dat”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.5.输出停车场中全部车辆的信息.6.退出系统.字段:车牌号,楼层号,车位号,入库时间,出库时间,停车时间,停车费用
第二部分:基础训练
若感觉直接完成所选课题很困难,可以尝试先完成基础训练。完成基础训练,有一定的编程基础后,在完成所选课题。
第一步: 定义一个结构体类型,用来表示学生的各种属性。定义一个学生结构体变量,从键盘输入各个分量的值,然后从屏幕输出该结构体变量的各个分量。学生结构体类型定义如下:
typedef struct _CStudent { char szName[20];/* 学生姓名 */ char nNumber[10] /* 学号 */ int nAge;/* 年龄 */ char cSex;/* 性别,约定 „m‟ 代表女,„f‟代表男 */ char szAddress[20];/* 家庭地址 */ double dDataStruct;/* 数据结构成绩 */ double dMath;/* 数学成绩 */ double dEnglish;/* 英语成绩 */ }CStudent;
第二步:
定义一个结构体类型,用来表示学生的各种属性。定义一个含3个元素的学生结构体变量数组,从键盘输入3个同学的信息,然后从屏幕输出该结构体变量数组各成员的值。
建议:定义两个函数,一个用于从键盘输入一个学生结构体变量的各个分量的值,另一个把一个学生结构体变量的值输出到屏幕。函数原型可以如下:
void input(CStudent* p)/* 从键盘输入 */ void output(CStudent* p)/* 向屏幕输出 */
第三步:
从键盘输入一个学生的信息,然后以文本方式写入文件。定义另一个学生结构体变量,用于从文件读出数据,然后把数据显示到屏幕。
第四步:
定义一个含3个元素的学生结构体数组,从键盘输入3个同学的信息,以文本方式把这些数据写入文件。
第五步:
将课题4写入文件的数据全部读出,输出到屏幕。
附录一:
本设计中需要清屏。说明如下:
格式:
system(“cls”)包含头文件: stdlib.h
附录二:控制台程序选择菜单的完成
#include
int main(){ int choice1 = 1, choice2;
do {
printf(“欢迎使用学生成绩管理系统n”);
printf(“请选择程序功能n”);
printf(“
1、数据录入n”);
printf(“
2、数据查询n”);
printf(“
3、输出所有同学信息n”);
printf(“
4、退出程序n”);
scanf(“%d”, &choice1);
switch(choice1)
{
case 1:
printf(“数据录入n”);
/*编写数据录入程序*/
printf(“返回上级菜单请按n退出程序请按n”);
scanf(“%d”, &choice1);
break;
case 2:
printf(“
1、按学号查询n”);
printf(“
2、按姓名查询n”);
scanf(“%d”, &choice2);
switch(choice2)
{
case 1:
printf(“按学号查询n”);
/*编写按学号查询程序*/
break;
case 2:
printf(“按姓名查询n”);
/*编写按姓名查询程序*/
break;
}
printf(“返回上级菜单请按n退出程序请按n”);
scanf(“%d”, &choice1);
break;
case 3:
printf(“输出所有同学信息n”);
/*编写输出所有同学信息程序*/
printf(“返回上级菜单请按n退出程序请按n”);
scanf(“%d”, &choice1);
break;
case 4:
break;
}
system(“cls”);}while(choice1!= 4);
printf(“程序结束n”);return 0;}
附录三:关于菜单的处理技术举例 #include
int menu_select();/*主菜单函数*/ /******主函数开始*******/ main(){ int i;Salary sal[M];/*定义结构体数组*/ int length;/*保存记录长度*/ clrscr();/*清屏*/ for(;;)/*无限循环*/ { switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/ { case 1:length=enter(sal);break;/*输入记录*/ case 2:list(sal);break;/*显示全部记录*/ case 3:search(sal,name);break;/*按姓名查找显示记录*/ case 4:length=delete(sal);break;/*删除记录*/ case 5:length=add(sal);break;/*插入记录*/ case 6:save(sal);break;/*保存文件*/ case 7:length=load(sal);break;/*读文件*/ case 8:display(sal);break;/*按序号查找显示记录*/ case 9:sort(sal);break;/*排序成新文件*/ case 10:copy(sal);break;/*数据备份*/ case 0:exit(0);/*如返回值为0则程序结束*/ } } } /*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select(){ char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf(“press any key enter menu......n”);/*提示按任意键进入菜单选择*/ getch();/*读入任意字符*/ clrscr();/*清屏*/ gotoxy(1,1);printf(“********************MENU*********************nn”);printf(“ 1.Enter a recordn”);printf(“ 2.List the filen”);printf(“ 3.Search record on namen”);printf(“ 4.Delete a recordn”);printf(“ 5.Add record n”);printf(“ 6.Save the filen”);printf(“ 7.Load the filen”);printf(“ 8.Display record on ordern”);printf(“ 9.Sort to a new filen”);printf(“ 10.Copy to a new file n”);printf(“ 0.Quitn”);printf(“***********************************************n”);do{ printf(“n Enter you choice(0~10):”);/*提示输入选项*/ scanf(“%d”,&c);/*输入选择项*/ }while((c>10)||(c<0));/*选择项不在0~11之间重输*/ return c;/*返回选择项,主程序根据该数调用相应的函数*/ }
附录四:关于头文件的使用
/******头文件(.h)***********/ #include “stdio.h” /*I/O函数*/ #include “stdlib.h” /*标准库函数*/ #include “string.h”/*字符串函数*/ #include “ctype.h” /*字符操作函数*/ #define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/ { char name[20];/*姓名*/ char no[10];/*员工编号*/ char units[30];/*部门*/ char post[10];/*职称*/ „„ }Salary;/******以下是函数原型*******/ int enter(SALARY t[]);/*输入记录*/ void list(SALARY t[]);/*显示全部记录*/ void search(SALARY t[],char name[]);/*按姓名查找显示记录*/ int delete(SALARY t[]);/*删除记录*/ int add(SALARY t[],int n);/*插入记录*/ void save(SALARY t[]);/*记录保存为文件*/ int load(SALARY t[]);/*从文件中读记录*/ void display(SALARY t[]);/*按序号查找显示记录*/ void sort(SALARY t[]);/*排序成新文件*/ void copy(SALARY t[]);/*数据备份*/ int menu_select();/*主菜单函数*/
附录五:关于文件的使用
要将信息永久保存,可采用磁盘文件的形式来存储数据。C语言提供了丰富的文件操作函数。从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:00110101 00110110 00110111 00111000
↓
↓
↓
↓
十进制码: 5 共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。在C语言中,文件操作都是由库函数来完成的。
文件打开函数fopen fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式)其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如: FILE *fp;fp=(“file a”,“r”);其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。
又如:FILE *fphzk;fphzk=(“c:hzk16',”rb“)其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“ ”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。
文件使用方式
意 义
“rt”
只读打开一个文本文件,只允许读数据 “wt”
只写打开或建立一个文本文件,只允许写数据 “at”
追加打开一个文本文件,并在文件末尾写数据 “rb”
只读打开一个二进制文件,只允许读数据 “wb”
只写打开或建立一个二进制文件,只允许写数据 “ab”
追加打开一个二进制文件,并在文件末尾写数据 “rt+”
读写打开一个文本文件,允许读和写 “wt+”
读写打开或建立一个文本文件,允许读写
“at+”
读写打开一个文本文件,允许读,或在文件末追加数据 “rb+”
读写打开一个二进制文件,允许读和写 “wb+”
读写打开或建立一个二进制文件,允许读和写
“ab+”
读写打开一个二进制文件,允许读,或在文件末追加数据
fclose函数
调用的一般形式是: fclose(文件指针); 例如:fclose(fp);正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。文件的读写对文件的读和写是最常用的文件操作。
读字符串函数fgets函数
fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志' '。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。
对fgets函数有两点说明:一是,在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。二是,fgets函数也有返回值,其返回值是字符数组的首地址。
写字符串函数fputs fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针)其中字符串可以是字符串常量,也可以是字符数组名,或指针 变量,例如:fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。
数据块读写函数fread和fwrite C语言还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp);写数据块函数调用的一般形式为: fwrite(buffer,size,count,fp);其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。
例如:fread(fa,4,5,fp);其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。
从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。#include
本例程序定义了一个结构stu,说明了两个结构数组boya和 boyb以及两个结构指针变量pp和qq。pp指向boya,qq指向boyb。程序第16行以读写方式打开二进制文件“stu_list”,输入二个学生数据之后,写入该文件中,然后把文件内部位置指针移到文件首,读出两块学生数据后,在屏幕上显示。
getch();exit(1);}
printf(”ninput datan“);for(i=0;i<2;i++,pp++)scanf(”%s%d%d%s“,pp->name,&pp->num,&pp->age,pp->addr);pp=boya;
fwrite(pp,sizeof(struct stu),2,fp);rewind(fp);
fread(qq,sizeof(struct stu),2,fp);printf(”nnnametnumber age addrn“);for(i=0;i<2;i++,qq++)
printf(”%st%5d%7d%sn“,qq->name,qq->num,qq->age,qq->addr);
fclose(fp);}
格式化读写函数fscanf和fprintf fscanf函数,fprintf函数与前面使用的scanf和printf 函数的功能相似,都是格式化读写函数。两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); 例如:fscanf(fp,”%d%s“,&i,s);fprintf(fp,”%d%c",j,ch);
文件的随机读写
前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据。但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。文件定位移动文件内部位置指针的函数主要有两个,即 rewind 函数和fseek函数。
rewind函数前面已多次使用过,其调用形式为: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。
fseek函数。
fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点); 其中:“文件指针”指向被移动的文件。“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。
起始点
表示符号
数字表示
────────────────────────── 文件首
SEEK—SET
0 当前位置
SEEK—CUR
文件末尾
SEEK—END
例如:fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。文件的随机读写在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据据块,因此常用fread和fwrite函数。下面用例题来说明文件的随机读写。
文件检测函数
文件结束检测函数feof函数调用格式: feof(文件指针);功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。
读写文件出错检测函数ferror函数调用格式: ferror(文件指针); 功能:检查文件在用各种输入输出函数进行读写时是否出错。如ferror返回值为0表示未出错,否则表示有错。
文件出错标志和文件结束标志置0函数clearerr函数调用格式: clearerr(文件指针);功能:本函数用于清除出错标志和文件结束标志,使它们为0值。
第二篇:语言程序设计课程设计指导书
汇编语言程序设计课程设计指导书
一、课程设计的目的
本课程设计是《汇编语言程序设计》课程的后继教学环节,其宗旨是使学生通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,对汇编语言程序设计有更进一步的认识,提高编程技巧和阅读理解复杂程序的能力。
二、课程设计的任务要求
根据所给的“Reader.asm”应用程序框架,在此基础上修改和添加功能。1.基本任务:
认真阅读“Reader.asm”源程序,理解程序每一条指令在程序中的作用; 用→、←键在窗口内左右移动文本;
用PgDn,PgUp键上下快速移动文本(每次移半帧); 设计专用键放大、缩小窗口,改变窗口位置。
2.扩展任务: 对文本内的Tab字符(ASCII码09H)进行处理:遇到Tab键,下一个字符显示在下一个表站开始处(每个6个字符一个表站);
设置状态行,显示当前文件名、文本位置(仿垂直滚动条)。
3.自行设计的其它任务:
三、课程设计报告的内容
1.课程设计题目名称、班级号、学号、学生姓名和课程设计起止日期(封面);
2.上海应用技术学院课程设计任务书(下发)3.课程设计目的和要求;
4.课程设计任务内容; 5.详细设计说明; 6.软件使用说明; 7.课程设计总结;
8.附录:1 参考文献 2 程序清单(电子版)。
四、课程设计详细设计说明及其它要求
1.2.3.4.5.6.分析原“Reader.asm”程序结构:每个模块说明,较大模块程序流程图; 对你已经实现的功能做详细的说明,并附上流程图及部分程序清单; 自己对该“文件阅读器”的进一步设想;
对于有设想但最终未实现的功能的大致编程思路的阐述; 论述在设计过程中遇到的并且对你具有启发性的问题; 交课程设计报告手写版,源程序交电子版。
五、评分标准
1.根据平时出勤情况和设计时的工作情况;
2.根据课程设计程序的完成情况,必须有可运行的软件。3.根据课程设计报告的质量。课程设计报告不能抄袭,抄袭判为不及格。4.在题目要求之外附加具有实用性的功能。
六、课程设计工作进度计划
星期一:课程设计介绍,源程序阅读理解,功能设计,程序编写。星期二:功能设计,程序编写。
星期三:程序编写与调试,课程设计报告撰写。星期四:程序编写与调试,课程设计报告撰写。
星期五:程序最终修改,课程设计报告撰写,提交报告并答辩。
七、主要参考资料
[1]杨文显.汇编语言程序设计简明教程.北京:电子工业出版社,2005
八、附录
《文本阅读器》汇编语言源程序清单
;Title: Assemble Program “Reader.asm”
;Read a file from disk, display it‟s contents on screen;Move the content on screen by up/down arrow keys;========================== MYDAT SEGMENT MAXLEN DW 1000;最大行数 INDEX DW 1000 DUP(?);行索引 LENCT DW 0;实际行数 CURLINE DW 0;当前页第一行行数 CCOUNT DW ?;文件总字符数
TOP DB 5;窗口左上角行数 LEFT DB 5;窗口左上角列数 WS DW 60;窗口宽度 HS DW 15;窗口高度 FG DB 17H;文字属性 FGB DB 1FH;窗口边框属性
MSG1 DB 'File:$';输入文件名提示 MSG2 DB 'File open error!$';打开文件出错时提示 MSG3 DB 'File read error!$';读文件出错时提示 FILENA DB 80,?,80 DUP(?);输入文件名缓冲区
;定义功能键和相应的处理程序
;每个功能定义两个数据:扫描码,处理程序入口地址;该数据由DOSUB子程序使用
KEYSUB DW 48H, SUB1 , 50H, SUB2, 0
MYDAT ENDS
;==========================
BUFFER SEGMENT PARA DB 65535 DUP(?);文件缓冲区,文件最大为64K BUFFER ENDS
;==========================
SSEG SEGMENT STACK „STACK‟;堆栈段
DW 100 DUP(?)SSEG ENDS
;==========================
;宏定义 DISPINIT: 设置显示器显示方式 DISPINIT MACRO MOV AX,0003H;文本方式 25x80 INT 10H ENDM;----------;宏定义 PROMPT: 显示字符串 PROMPT MACRO OUTMSG LEA DX, OUTMSG MOV AH, 09H;INT 21H;ENDM;--------;宏定义KRYIN: 从键盘读入一个字符 KEYIN MACRO MOV AH,0;读键
INT 16H;AH中为扫描码
ENDM;==========================;代码段开始 CODE SEGMENT
ASSUME CS: CODE, DS: MYDAT, ES: BUFFER, SS: SSEG
START: MOV AX, MYDAT;装载DS,ES MOV DS, AX MOV AX, BUFFER MOV ES, AX
DISPINIT;显示方式初始化
CALL READFILE;读入文件
JC DONE
CALL CLIST;初始化索引行
CALL CLSCREEN;清屏
CALL CREWIN;创建窗口
CALL SHOWCUR;显示当前页
NEXT: KEYIN;进入主程序: 读键盘
CALL COMMAND;命令分析与处理
JNC NEXT;非x键继续循环
DONE: CALL CLSCREEN;清屏
MOV AX, 4C00H INT 21H;退出
;-------;子程序READFILE: 提示并读入文件名,将文件读入缓冲区 READFILE PROC PROMPT MSG1;CALL SIN;读入文件名
MOV AX, 3D00H MOV DX, OFFSET FILENA+2 INT 21H;打开文件(读)JC GETERR1;打开文件出错转GETERR1 PUSH DS PUSH ES POP DS;将DS指向文件缓冲区段
MOV BX, AX;BX=文件号
MOV AH, 3FH;读文件 MOV CX, 0FFFFH;读入最多64K-1 MOV DX, 0;DS: DX指向文件缓冲区
INT 21H POP DS JC GETERR2;读入文件出错转GETERR2 MOV CCOUNT, AX;实际读入字符数存入CCOUNT中
CLC JMP GETFILEXIT
GETERR1: PROMPT MSG2;读入文件出错处理
KEYIN STC JMP GETFILEXIT;
GETERR2: PROMPT MSG3;打开文件出错处理
KEYIN STC
GETFILEXIT: RET
READFILE ENDP;-------;输入文件名子程序 SIN PROC MOV AH, 0AH MOV DX, OFFSET FILENA INT 21H;输入文件名
XOR CH, CH MOV CL, FILENA+1;取文件名长度
LEA BX, FILENA+2 ADD BX, CX;计算字符串结尾地址
MOV BYTE PTR [BX], 0;在字符串尾部加0 RET SIN ENDP;-------;索引行初始化子程序 CLIST PROC MOV CX, CCOUNT JCXZ CSTX;文件为空结束
MOV SI,0;文件缓冲区字符指针
MOV DI,0;索引行指针
MOV DX,0;行数计数
MOV INDEX[DI], 0 INC DX;假设文件至少有一行 CST1: CMP WORD PTR ES:[SI], 0A0DH;判断是否为回车换行符
JNZ CST2;不是行结束,转CST2 INC DX;行数加一
ADD SI, 2;跳过回车换行符
ADD DI, 2;索引行指针加一
MOV INDEX[DI], SI;指向本行开始地址
CMP DX, MAXLEN JNC CST4;是否超过最大行,超过转CST4,结束
JMP CST3;CST2: INC SI;文件缓冲区字符指针指向下一字符 CST3: LOOP CST1;CST4: MOV LENCT, DX;保存行数到LENCT中 CSTX: RET CLIST ENDP;-------;清屏子程序
CLSCREEN PROC MOV AX, 0600H;清屏
MOV CX, 0 MOV DH, 50 MOV DL, 79 MOV BH, 07H INT 10H RET CLSCREEN ENDP;------;显示当前页子程序 SHOWCUR PROC MOV DH, 0;窗口最顶行
MOV SI, CURLINE;取当前页第一行行数
MOV CX, HS;窗口的第一行和最后一行为边框,SUB CX, 2;所以能够显示内容的高度为窗口高度减二 SC1:
CALL SHOWLINE;显示一行
INC DH;窗口下一行
INC SI;文件下一行
MOV AX, LENCT;CMP SI, AX;文件是否显示完
JNC SC2;显示完则转SC2 LOOP SC1 JMP SC1X SC2: JCXZ SC1X;该页显示满则结束
;该页没有显示满,则用空行填满该页 SC3: PUSH CX PUSH DX CALL SHOWSPLINE;显示空行
POP DX POP CX INC DH LOOP SC3 SC1X: RET SHOWCUR ENDP;------;显示一行子程序
;输入:SI=显示行行号;DH=窗口中的行号 SHOWLINE PROC PUSH CX PUSH SI PUSH DX PUSH AX
ADD DH, TOP;INC DH;实际行数=窗口左上角行数+DI+1 MOV DL, LEFT;INC DL;实际列数=窗口左上角列数+1 CALL VADD;
MOV CX, WS;窗口的第一列和最后一列是边框,SUB CX, 2;所以能够显示内容的宽度为窗口宽度减二
SHL SI, 1;行索引为字类型,所以乘二
MOV SI, INDEX[SI];取该行第一个字符在文件缓冲区的地址
PUSH DS MOV AX, 0B800H MOV DS, AX;DS指向显示缓冲区段地址 SL1: MOV AX, ES:[SI] CMP AX, 0A0DH JZ SL2;如果是回车换行,则该行结束
MOV DS: [DI], AL;显示一个字符 ADD DI, 2;INC SI;取下一个字符
LOOP SL1;JCXZ SLX;该行正好显示完,则结束,否则用空格填满
SL2: MOV BYTE PTR DS:[DI], ' ';该行没有显示满,则用空格填满
ADD DI, 2 LOOP SL2
SLX: POP DS
POP AX POP DX POP SI POP CX
RET SHOWLINE ENDP;--------;显示空行子程序
;输入:DI=窗口中的行号 SHOWSPLINE PROC;
MOV AX, HS;SUB AX, 2;CMP DH, AL;显示的空行是否超出最低行
JNC SSLX;如果是,则转SSLX ADD DH, TOP;INC DH;实际行数=窗口左上角行数+DI+1 MOV DL, LEFT;INC DL;实际列数=窗口左上角列数+1 CALL VADD;
MOV CX, WS;窗口的第一列和最后一列是边框,SUB CX, 2;所以能够显示内容的宽度为窗口宽度减二
PUSH DS MOV AX, 0B800H MOV DS, AX SSL1: MOV BYTE PTR DS:[DI], ' ' ADD DI, 2 LOOP SSL1 POP DS SSLX: RET SHOWSPLINE ENDP;-------;创建窗口子程序 CREWIN PROC PUSH ES MOV AX, 0B800H;显示缓冲区地址为B800:0 MOV ES, AX;
MOV DH, TOP MOV DL, LEFT;窗口左上角行列数
MOV CX, HS;窗口高度(行数)CW1: PUSH DX;CALL VADD;计算地址
PUSH CX;MOV CX, WS;窗口宽度(列数)
MOV AL, FG;取属性 CW2: MOV BYTE PTR ES:[DI], ' ';送空白字符
INC DI;MOV BYTE PTR ES:[DI], AL;送属性
INC DI;LOOP CW2;
POP CX POP DX INC DH;行数加一
LOOP CW1
CALL DRAWB;画边框
POP ES RET CREWIN ENDP;-;画边框子程序 DRAWB PROC PUSH DX PUSH CX PUSH BX PUSH AX MOV BL, FGB MOV DH, TOP MOV DL, LEFT CALL VADD
;画左上角角框
MOV BYTE PTR ES:[DI], 0C9H INC DI MOV BYTE PTR ES:[DI], BL INC DI
;画第一行边框
MOV CX, WS SUB CX,2 DB1: MOV BYTE PTR ES:[DI], 0CDH INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB1
;画右上角角框
MOV BYTE PTR ES:[DI], 0BBH INC DI MOV BYTE PTR ES:[DI], BL
;画第二行到倒数二行左右边框
MOV DH, TOP MOV DL, LEFT INC DH MOV CX, HS SUB CX, 2 DB2: PUSH DX CALL VADD MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL DEC DI MOV AX, WS DEC AX SHL AX, 1 ADD DI, AX MOV BYTE PTR ES:[DI], 0BAH INC DI MOV BYTE PTR ES:[DI], BL POP DX INC DH LOOP DB2;取边框属性;窗口左上角行列数;计算地址;角框╔;因为去掉了左右角框,所以宽度减二;上下边框═;角框╗;从第二行开始;第一行和最后一行没有左右边框,;所以高度减二;;计算左边框地址;左右边框║;;;;计算右边框地址;;下一行;
;画左下角角框
MOV DH, TOP;MOV DL, LEFT;MOV AX, HS;DEC AX;ADD DH, AL;左下角行数=右上角行数+窗口高度-1 CALL VADD MOV BYTE PTR ES:[DI], 0C8H;角框╚
INC DI MOV BYTE PTR ES:[DI], BL INC DI
;画最低行边框
MOV CX, WS;SUB CX, 2;因为去掉了左右角框,所以宽度减二 DB3: MOV BYTE PTR ES:[DI], 0CDH;上下边框═
INC DI MOV BYTE PTR ES:[DI], BL INC DI LOOP DB3
;画右下角角框
MOV BYTE PTR ES:[DI], 0BCH;角框╝
INC DI MOV BYTE PTR ES:[DI], BL
POP AX POP BX POP CX POP DX
RET DRAWB ENDP;------;计算窗口内某行列位置对应显存地址;输入:DH=行 DL=列;输出:DI为显存地址 VADD PROC MOV AL, 80;MUL DH;XOR DH, DH;ADD AX, DX;行数×80+列数
SHL AX, 1;乘2,因为每个字符占两个字节
MOV DI, AX RET VADD ENDP;--------;命令分析子程序 COMMAND PROC CMP AH, 2DH;2DH为x键的扫描码
JNZ COM1;不是x键,转COM1 STC;值x键标志
RET COM1: CALL DOSUB;转命令散转子程序
CLC RET COMMAND ENDP;--;命令散转子程序 DOSUB PROC MOV AL, AH MOV AH, 0;将键扫描码放入AX中
MOV BX, OFFSET KEYSUB;BX指向KEYSUB DOSUB1: CMP WORD PTR [BX], 0 JZ DOSUBX;KEYSUB表查完,即没有找到转DOSUBX CMP AX, [BX] JZ DOSUB2;找到扫描码转DOSUB2 ADD BX, 4 JMP DOSUB1;DOSUB2: ADD BX, 2 MOV BX, [BX];取处理程序入口地址
JMP BX;转处理程序 DOSUBX: RET
;SUB1和SUB2均为功能键处理程序;处理完后应使用JMP DOSSUBX结束
;上箭头键处理程序 SUB1: CMP CURLINE, 0 JZ SUB1X;已到第一行,结束
DEC CURLINE;向上一行
CALL SHOWCUR;显示当前页 SUB1X: JMP DOSUBX
;下箭头键处理程序 SUB2: MOV AX, LENCT DEC AX DEC AX;至少显示一行
CMP AX, CURLINE;已到最后一行
JZ SUB2X INC CURLINE;向下一行
CALL SHOWCUR;显示当前页 SUB2X: JMP DOSUBX
DOSUB ENDP;--------
CODE ENDS
;========================= END START
第三篇:《Java语言程序设计》课程设计指导书
《Java语言程序设计》课程设计指导书
一、教学目标
《Java语言程序设计》是计算机类专业和信息安全专业的专业课。Java语言是目前广为流行的面向对象程序设计语言,适用于网络编程,满足Internet上软件开发的需要。因此本课程是一门概念性和实践性都很强的专业课程。本课程从基本程序设计流程出发,逐步过渡到面向对象的程序设计方法,由浅入深地讲解面向对象的编程思想。
java课程设计是巩固所学理论知识、提高程序设计能力的重要实践环节。通过课程设计的训练,使学生能够综合应用Java的基础知识和基本方法,体会软件设计的全过程,编写出高效率的应用程序,培养学生的数据处理能力,提高软件设计能力,从而为今后进行系统软件和应用软件的开发研究打下坚实的基础,并倡导刻苦钻研的精神和严谨的治学作风。
二、教学要求
课程设计要求每位学生熟练运用Java语言,按照面向对象程序设计思想,独立编制一个略具规模、中等难度的应用程序。调试通过并写出课程设计报告,课程设计报告包括题目说明、题意分析、设计目的、设计特点、功能说明、主要功能程序段、运行结果及结果分析、编程经验、设计体会、存在问题及解决方法等。
三、课程设计题目
课程设计课题分推荐课题和其它课题:
推荐课题:javaweb开发的管理系统(图书查询系统、汽车租赁系统、仓库管理系统、人事管理系统等)
其它课题:javaswing开发的游戏、工具、管理系统 俄罗斯方块、5子棋游戏、扫雷、模拟考试系统
2、设计要求
⑴ 独立编制一个略具规模、中等难度的应用程序。
⑵ 调试通过并写出课程设计报告,课程设计报告包括题目说明、题意分析、设计目的、设计特点、功能说明、主要功能程序段、运行结果及结果分析、编程经验、设计体会、存在问题及解决方法等。
四、主要开发工具
Javaweb相关工具
五、课程设计报告要求
1.封面:按下面所给的格式填写 2.正文要求如下:(1)题目说明;(2)题意分析;(2)设计目的;(3)设计特点;(4)功能说明;(5)主要程序段;
(6)运行结果分析以及测试结果(7)存在问题解决方法
(8)结束语(设计收获体会)3.报告正文格式要求: ·大标题三号加粗 ·小标题四号加粗 ·正文宋体小四号字
·每个自然段开始空两格.·文中英文用新罗马(time new roman),四号
4.其他要求:字数5000字
六、提交的材料
(一)、程序(电子版)
(二)、程序设计说明书(打印)
七、课程设计成绩评定
平时出勤及表现: 10% 课程设计完成情况,难度等级60% 课程设计报告、文档资料:30%
1、期末成绩评定
实习成绩 = 实际操作、调试和测试(效果)+ 设计报告 +平时表现。
2、评定标准
(1)严格控制95分,其标准是有创意;(2)90分以上,必须全部正确;(3)有少许错误,可给80—89;(4)错误不多,可给60—79;
注:如甲、乙有拷贝、复印等抄袭现象,甲、乙均按0分处理。
第四篇:WEB程序设计课程设计指导书(模版)
WEB课程设计指导书
设计课题:广东海洋大学寸金学院micro blog信息系统
设计目的:1。综合应用java程序设计、WEB程序设计、数据库应用、计算机网络等知识设
计和实现我校Micro Blog信息系统。
2.通过上述设计和实现,加深学生对java程序设计、WEB程序设计、数据库应
用、计算机网络相关理论的理解,锻炼学生综合应用所学知识分析问题和解决问题的能力。
3.培养软件开发的团队协作精神。
设计内容:1。用户注册
2.用户登录(分一般用户和管理员)
3.某用户发布微博信息
4.浏览所有用户的微博信息
5.浏览指定用户的微博信息
6.查询某些用户或(且)某时间段或(且)某论题的微博信息。
7。删除某些用户或(且)某时间段或(且)某论题的微博信息。
8.统计分析某时间段的用户数量,微博数量。
9.发布重大消息或提示信息
(7-9基于管理员)
设计要求:完整实现设计内容所指定的功能
应用服务器采用Tomcat 6.0或以上
基于JSP编程
开发工具采用Eclipse + DreamWeaver
数据库采用SQL server2005,或ACCESS 2003(或更新版本)
用户界面友好
组织方式:在自然班范围内按4人一组分组确定设计小组,每组确定一名组长。时间安排:一周考核方式:
1.各设计小组上交系统实现的软件(通过邮件方式按自然班上交)。
2.各设计小组上交课程设计书面报告,另通过邮件按自然班上交电子版。
报告按上述设计内容逐项表述,并加上中英文标题、关键字、摘要、总结。报告中必须完整展示各项设计内容的设计结果。表述清晰,格式规范。
3.评分:软件设计和实现60分。
设计报告40分。
第五篇:可视化程序设计课程设计指导书
可视化程序设计课程设计指导书
一、课程设计的目的与要求:
1.掌握C++语言中面向对象的概念,并能在程序中熟练运用。
2.了解面向对象程序设计(C++)的基本概念以及运用面向对象技术进行程序设计的基本思想。
3.能正确编写和调试C++程序。
4.了解在Visual C++环境下进行MFC程序设计的基本思想和方法。
二、设计内容
2.1 项目一:项目描述与设计要点
1.一个有关银行业务运作的应用程序---银行储蓄系统,用菜单选择并实现: 动态创建帐户,帐户分储蓄帐户和结算帐户两类,帐户结点包括帐号、储蓄金额等,帐号由程序自动给出。存款业务。取款业务。所有帐户取款时需有6位密码验证。结算帐户取款应收取手续费:电汇(7%)、信汇(5%)、其它(2%)。所有帐户的信息输出到数据库中。
2.在Visual C++环境下,将上述银行储蓄系统设计成基于Windows的应用程序。
3.设计思路:
(1)界面设计
1)界面1分2个区域,新建账户区和已有账户登陆区
2)当新建账户并电击确定后弹出相关信息的界面
3)当已有账户登陆成功后到取款,存款操作的界面
4)每种操作后最右边都会显示操作后都弹出当前账户的相关信息界面
(2)代码设计
1)设计3个存储账户的类,SavAccount存储储蓄账户的信息,包括类型,帐号,密码,存款余额。CheAccount存储结算帐户信息,包括类型,帐号,密码,存款余额。NowAccount存储当前操作账户的帐户类型和帐号。
2)定义类的操作函数。
3)设计数据库,使用ODBC连接。
4)完成1中的各项功能。
4.实验步骤(包括操作方法、数据处理)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)为账户建立类 创建基本的操作函数 为此系统设计数据库内容。为界面中的控件定义变量 开帐户代码 开帐户后弹出的确认界面代码 帐户操作界面的存款操作代码 帐户操作界面的取款操作代码
2.2 项目二:项目描述与设计要点
1.一个简易的图书管理系统。综合运用开发管理信息系统的相关知识,从中小型图书馆的实
际需求出发,进行设计和具体的实现。主要的功能有:管理员的权限验证;用户信息的管理,包括操作人员的增删和密码的修改;图书的接环流通管理;读者信息的维护管理;图书信息的维护管理,包括图书信息的增删和检索;查看历史记录。
2.在Visual C++环境下,将上述图书管理系统设计成基于Windows的应用程序。
3.设计思路:
(1)界面设计
5)主体框架,基于单文档的应用程序框架。
6)菜单
(2)代码设计
1)权限验证模块和用户信息管理模块的开发。
2)书库管理模块和读者管理模块的开发。
3)借阅图书和还书模块的开发。
4)历史查看模块。
(3)数据库的建立和连接
使用MFC ODBC连接数据库。
4.实验步骤(包括操作方法、数据处理)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
设计数据库连接数据库。为程序声明全局变量。为界面中的控件定义变量 权限验证模块和用户信息管理模块的代码。书库管理模块和读者管理模块的代码。借阅图书和还书模块的代码。历史查看模块的代码。
2.3 项目三:项目描述与设计要点
1.一个简易的学生成绩管理系统。综合运用开发管理信息系统的相关知识,进行设计和具体的实现。主要的功能有:学生成绩的录入、修改、删除;学生成绩的查询;学生成绩的排序。
2.在Visual C++环境下,将上述学生成绩管理系统设计成基于Windows的应用程序。
3.设计思路:
(1)界面设计
1)主体框架,基于单文档的应用程序框架或者是基于对话框的应用程序。
2)菜单
(2)代码设计
1)学生成绩录入和修改模块的开发。
2)查询模块的开发。
3)排序模块的实现。
(3)数据库的建立和连接
使用MFC ODBC连接数据库。
实验步骤(包括操作方法、数据处理)
(1)设计数据库连接数据库。
(2)为程序声明全局变量。
(3)为界面中的控件定义变量
(4)权限验证模块的代码。
(5)成绩录入和修改模块的代码。
(6)成绩查询模块的代码。
(7)成绩排序模块的代码。
2.4 项目四:项目描述与设计要点
1.一个通讯录管理系统。综合运用开发管理信息系统的相关知识,进行设计和具体的实现。
主要的功能有:管理员权限管理;通讯录的录入、修改、删除;通讯录的查询;日志博客的撰写;邮件的发送。
2.在Visual C++环境下,将上述通讯录管理系统设计成基于Windows的应用程序。
3.设计思路:
(1)界面设计
1)主体框架,基于单文档的应用程序框架。
2)菜单
(2)代码设计
1)管理员权限管理模块的开发。
2)通讯录的录入、修改、删除
3)查询模块的开发。
4)日志博客的撰写。
5)邮件的发送
(3)数据库的建立和连接
使用MFC ODBC连接数据库。
4.实验步骤(包括操作方法、数据处理)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
设计数据库连接数据库。为程序声明全局变量。为界面中的控件定义变量 管理员权限模块的代码。通讯录的录入、修改、删除模块的代码。查询模块的代码。日志博客撰写代码。邮件的发送代码。
1.制作一个网页连连看的外挂程序,游戏网页为
3.编写鼠标单击绘制棋子的相关程序。
4.不要求编写电脑AI,只要求能够完成两个玩家的游戏即可。
5.要求设计数据结构,使游戏能判断输赢。
1.设计一个壁球游戏,游戏下方绘制一块板和一个球,当球碰撞到板时随机上弹。
2.设计球碰到游戏边框时的反弹,若球触底则游戏结束。
3.需要设计球的运动轨迹以及触碰到板的逻辑判断。
4.考虑设置游戏难度控制,可考虑通过变换难度设置球移动的速度。
三、设计验收指标
以上七题任选一题完成。
1.2.3.4.可运行的符合题目要求的系统。一对一现场答辩。符合要求的设计报告。包含所有开发文档、程数据的光盘。